| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- from __future__ import annotations
- from datetime import datetime
- from sqlalchemy import BigInteger, Index, Integer, String, Text, UniqueConstraint, func
- from sqlalchemy.orm import Mapped, mapped_column
- from supply_infra.db.base import Base
- class DemandVideoExpansion(Base):
- """S/A 需求关联视频点位拓展结果。"""
- __tablename__ = "demand_video_expansion"
- __table_args__ = (
- UniqueConstraint(
- "biz_dt",
- "source_demand_grade_id",
- "expanded_text",
- "video_id",
- name="uk_demand_video_expansion",
- ),
- Index("idx_dve_biz_dt", "biz_dt"),
- Index("idx_dve_source_grade", "source_demand_grade_id"),
- )
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
- biz_dt: Mapped[str] = mapped_column(String(32), nullable=False, comment="业务日 YYYYMMDD")
- run_id: Mapped[str] = mapped_column(String(64), nullable=False, comment="任务批次 run_id")
- source_demand_grade_id: Mapped[int] = mapped_column(
- BigInteger, nullable=False, comment="来源 demand_grade.id"
- )
- source_demand_name: Mapped[str] = mapped_column(
- String(256), nullable=False, comment="来源需求名"
- )
- source_grade: Mapped[str] = mapped_column(String(4), nullable=False, comment="来源等级 S/A")
- expanded_text: Mapped[str] = mapped_column(
- String(512), nullable=False, comment="拓展需求文本(来自 point_data)"
- )
- point_type: Mapped[str] = mapped_column(
- String(32), nullable=False, comment="点类型:inspiration / purpose / key"
- )
- point_desc: Mapped[str | None] = mapped_column(Text, nullable=True, comment="点位描述快照")
- video_id: Mapped[str] = mapped_column(String(64), nullable=False, comment="来源视频 id")
- reason: Mapped[str] = mapped_column(Text, nullable=False, comment="相近判断依据")
- is_delete: Mapped[int] = mapped_column(
- Integer, default=0, nullable=False, comment="是否删除 0-正常 1-删除"
- )
- create_time: Mapped[datetime] = mapped_column(
- nullable=False,
- server_default=func.now(),
- comment="创建时间",
- )
- update_time: Mapped[datetime] = mapped_column(
- nullable=False,
- server_default=func.now(),
- onupdate=func.now(),
- comment="更新时间",
- )
- class DemandVideoExpansionRun(Base):
- """记录每个需求是否已完成拓展判断(含零结果),用于幂等跳过。"""
- __tablename__ = "demand_video_expansion_run"
- __table_args__ = (
- UniqueConstraint(
- "biz_dt",
- "source_demand_grade_id",
- name="uk_demand_video_expansion_run",
- ),
- Index("idx_dver_biz_dt", "biz_dt"),
- )
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
- biz_dt: Mapped[str] = mapped_column(String(32), nullable=False, comment="业务日 YYYYMMDD")
- run_id: Mapped[str] = mapped_column(String(64), nullable=False, comment="任务批次 run_id")
- source_demand_grade_id: Mapped[int] = mapped_column(
- BigInteger, nullable=False, comment="来源 demand_grade.id"
- )
- saved_count: Mapped[int] = mapped_column(
- Integer, nullable=False, default=0, comment="落库拓展条数"
- )
- status: Mapped[str] = mapped_column(
- String(16), nullable=False, default="finished", comment="finished / failed"
- )
- error_message: Mapped[str | None] = mapped_column(
- Text, nullable=True, comment="失败原因"
- )
- create_time: Mapped[datetime] = mapped_column(
- nullable=False,
- server_default=func.now(),
- comment="创建时间",
- )
- update_time: Mapped[datetime] = mapped_column(
- nullable=False,
- server_default=func.now(),
- onupdate=func.now(),
- comment="更新时间",
- )
|