multi_demand_video_detail.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. url1: Mapped[str | None] = mapped_column(
  13. String(1024),
  14. nullable=True,
  15. comment="解构URL1(dwd_topic_decode_result_di 表字段,与 vid 同级)",
  16. )
  17. url2: Mapped[str | None] = mapped_column(
  18. String(1024),
  19. nullable=True,
  20. comment="解构URL2(dwd_topic_decode_result_di 表字段,与 vid 同级)",
  21. )
  22. title: Mapped[str | None] = mapped_column(
  23. String(512), nullable=True, comment="视频标题(decode_result.target_post.title)"
  24. )
  25. final_topic_json: Mapped[str] = mapped_column(
  26. Text, nullable=False, comment="最终选题JSON"
  27. )
  28. inspiration_points_json: Mapped[str | None] = mapped_column(
  29. Text,
  30. nullable=True,
  31. comment="灵感点列表JSON(decode_result.灵感点,每项保留 点/点描述)",
  32. )
  33. purpose_points_json: Mapped[str | None] = mapped_column(
  34. Text,
  35. nullable=True,
  36. comment="目的点列表JSON(decode_result.目的点,每项保留 点/点描述)",
  37. )
  38. key_points_json: Mapped[str | None] = mapped_column(
  39. Text,
  40. nullable=True,
  41. comment="关键点列表JSON(decode_result.关键点,每项保留 点/点描述)",
  42. )
  43. create_time: Mapped[datetime] = mapped_column(
  44. nullable=False,
  45. server_default=func.now(),
  46. comment="创建时间",
  47. )
  48. update_time: Mapped[datetime] = mapped_column(
  49. nullable=False,
  50. server_default=func.now(),
  51. onupdate=func.now(),
  52. comment="更新时间",
  53. )