|
@@ -0,0 +1,64 @@
|
|
|
|
|
+from __future__ import annotations
|
|
|
|
|
+
|
|
|
|
|
+from datetime import datetime
|
|
|
|
|
+from decimal import Decimal
|
|
|
|
|
+
|
|
|
|
|
+from sqlalchemy import BigInteger, Index, Integer, Numeric, String, Text, func
|
|
|
|
|
+from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
|
+
|
|
|
|
|
+from supply_infra.db.base import Base
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class GeneratedDemand(Base):
|
|
|
|
|
+ """单维度需求产生结果。"""
|
|
|
|
|
+
|
|
|
|
|
+ __tablename__ = "generated_demand"
|
|
|
|
|
+ __table_args__ = (
|
|
|
|
|
+ Index("idx_generated_demand_dim_biz", "source_dim", "biz_dt"),
|
|
|
|
|
+ Index("idx_generated_demand_name", "demand_name"),
|
|
|
|
|
+ Index("idx_generated_demand_run", "run_id"),
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+ id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
|
|
|
|
|
+ source_dim: Mapped[str] = mapped_column(String(32), nullable=False, comment="来源热度维度")
|
|
|
|
|
+ overall_direction: Mapped[str] = mapped_column(
|
|
|
|
|
+ String(256), nullable=False, comment="整体方向"
|
|
|
|
|
+ )
|
|
|
|
|
+ summary_event: Mapped[str] = mapped_column(String(512), nullable=False, comment="汇总事件")
|
|
|
|
|
+ demand_name: Mapped[str] = mapped_column(
|
|
|
|
|
+ String(256), nullable=False, comment="需求名称(来自 demand_belong_category.name)"
|
|
|
|
|
+ )
|
|
|
|
|
+ demand_belong_id: Mapped[int | None] = mapped_column(
|
|
|
|
|
+ BigInteger, nullable=True, comment="demand_belong_category.id"
|
|
|
|
|
+ )
|
|
|
|
|
+ category_id: Mapped[int | None] = mapped_column(
|
|
|
|
|
+ BigInteger, nullable=True, comment="选用时的类目 id"
|
|
|
|
|
+ )
|
|
|
|
|
+ category_path: Mapped[str | None] = mapped_column(
|
|
|
|
|
+ String(1024), nullable=True, comment="类目路径文本"
|
|
|
|
|
+ )
|
|
|
|
|
+ dim_avg: Mapped[Decimal | None] = mapped_column(
|
|
|
|
|
+ Numeric(16, 8), nullable=True, comment="落库时该维 avg 快照"
|
|
|
|
|
+ )
|
|
|
|
|
+ dim_count: Mapped[int | None] = mapped_column(
|
|
|
|
|
+ Integer, nullable=True, comment="落库时该维 count 快照"
|
|
|
|
|
+ )
|
|
|
|
|
+ reason: Mapped[str | None] = mapped_column(Text, nullable=True, comment="选用理由")
|
|
|
|
|
+ biz_dt: Mapped[str | None] = mapped_column(
|
|
|
|
|
+ String(32), nullable=True, comment="对齐热度统计日 YYYYMMDD"
|
|
|
|
|
+ )
|
|
|
|
|
+ run_id: Mapped[str] = mapped_column(String(64), 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="更新时间",
|
|
|
|
|
+ )
|