multi_demand_video_detail.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from __future__ import annotations
  2. from datetime import datetime
  3. from sqlalchemy import BigInteger, String, Text, UniqueConstraint, func
  4. from sqlalchemy.orm import Mapped, mapped_column
  5. from supply_infra.db.base import Base
  6. class MultiDemandVideoDetail(Base):
  7. """需求池关联视频详情表 — 存 vid 与 ODPS 最终选题 JSON。"""
  8. __tablename__ = "multi_demand_video_detail"
  9. __table_args__ = (UniqueConstraint("vid", name="uk_multi_demand_video_detail_vid"),)
  10. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
  11. vid: Mapped[str] = mapped_column(String(64), nullable=False, comment="视频id")
  12. title: Mapped[str | None] = mapped_column(
  13. String(512), nullable=True, comment="视频标题(decode_result.target_post.title)"
  14. )
  15. final_topic_json: Mapped[str] = mapped_column(
  16. Text, nullable=False, comment="最终选题JSON"
  17. )
  18. inspiration_points_json: Mapped[str | None] = mapped_column(
  19. Text,
  20. nullable=True,
  21. comment="灵感点列表JSON(decode_result.灵感点,每项保留 点/点描述)",
  22. )
  23. purpose_points_json: Mapped[str | None] = mapped_column(
  24. Text,
  25. nullable=True,
  26. comment="目的点列表JSON(decode_result.目的点,每项保留 点/点描述)",
  27. )
  28. key_points_json: Mapped[str | None] = mapped_column(
  29. Text,
  30. nullable=True,
  31. comment="关键点列表JSON(decode_result.关键点,每项保留 点/点描述)",
  32. )
  33. create_time: Mapped[datetime] = mapped_column(
  34. nullable=False,
  35. server_default=func.now(),
  36. comment="创建时间",
  37. )
  38. update_time: Mapped[datetime] = mapped_column(
  39. nullable=False,
  40. server_default=func.now(),
  41. onupdate=func.now(),
  42. comment="更新时间",
  43. )