| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- from __future__ import annotations
- from datetime import datetime
- from sqlalchemy import BigInteger, DateTime, Index, Integer, String, Text, UniqueConstraint, func
- from sqlalchemy.orm import Mapped, mapped_column
- from supply_infra.db.base import Base
- class DemandFeedback(Base):
- """需求汇总页面的人工反馈记录。"""
- __tablename__ = "demand_feedback"
- __table_args__ = (
- UniqueConstraint(
- "client_request_id",
- name="uk_demand_feedback_request",
- ),
- Index(
- "idx_demand_feedback_demand",
- "demand_grade_id",
- "created_at",
- ),
- Index(
- "idx_demand_feedback_video",
- "demand_grade_id",
- "video_id",
- "created_at",
- ),
- Index(
- "idx_demand_feedback_expansion",
- "demand_video_expansion_id",
- "created_at",
- ),
- Index(
- "idx_demand_feedback_user",
- "feedback_user_id",
- "created_at",
- ),
- )
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
- client_request_id: Mapped[str] = mapped_column(String(64), nullable=False)
- target_type: Mapped[str] = mapped_column(
- String(32),
- nullable=False,
- comment="反馈对象:demand / video / hit_content",
- )
- biz_dt: Mapped[str] = mapped_column(
- String(32),
- nullable=False,
- comment="目标所属业务日",
- )
- demand_grade_id: Mapped[int] = mapped_column(
- BigInteger,
- nullable=False,
- comment="目标 demand_grade.id",
- )
- video_id: Mapped[str | None] = mapped_column(
- String(64),
- nullable=True,
- comment="视频反馈或命中内容反馈的视频 id",
- )
- demand_video_expansion_id: Mapped[int | None] = mapped_column(
- BigInteger,
- nullable=True,
- comment="命中内容 demand_video_expansion.id",
- )
- feedback_action: Mapped[str] = mapped_column(
- String(32),
- nullable=False,
- comment="support / oppose / correct / supplement",
- )
- reason_code: Mapped[str | None] = mapped_column(String(64), nullable=True)
- content: Mapped[str | None] = mapped_column(Text, nullable=True)
- target_snapshot_json: Mapped[str] = mapped_column(
- Text,
- nullable=False,
- comment="提交时由服务端生成的目标快照",
- )
- feedback_user_id: Mapped[int] = mapped_column(
- Integer,
- nullable=False,
- comment="反馈人 auth_user.id",
- )
- feedback_user_name_snapshot: Mapped[str] = mapped_column(
- String(128),
- nullable=False,
- comment="反馈人名称快照",
- )
- feedback_username_snapshot: Mapped[str] = mapped_column(
- String(64),
- nullable=False,
- comment="反馈人登录账号快照",
- )
- created_at: Mapped[datetime] = mapped_column(
- DateTime,
- nullable=False,
- server_default=func.now(),
- )
- updated_at: Mapped[datetime] = mapped_column(
- DateTime,
- nullable=False,
- server_default=func.now(),
- onupdate=func.now(),
- )
|