1) 客服 Agent 四份交付文档 + 构建脚手架:品牌由包装占位 XX科技 / 旧名 南方财富 统一为南方基金(热线 400-889-8899 / 官网 nffund.com),系统名改为「智能服务系统」; 同步追加 §0.4 修订记录行,工程记录行保留原占位字面以支撑硬编码扫描验收。 2) 开发文档:清理 28 份已作废/残留文档(14 份移出归档 + 14 份仓库副本), 新增《文档规整方案与开发前待决事项-2026-09-17》。 3) 客服agent 四份交付文档首次纳入本分支。
148 lines
5.4 KiB
Python
148 lines
5.4 KiB
Python
"""新增基金产品推介材料独立业务表。"""
|
|
|
|
from alembic import op
|
|
|
|
revision = "20260910_promotion_material"
|
|
down_revision = "20260910_offsite_worker"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
TABLES = [
|
|
"""
|
|
CREATE TABLE promotion_material_task (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
task_no VARCHAR(32) NOT NULL,
|
|
product_code VARCHAR(32) NULL,
|
|
product_name VARCHAR(128) NOT NULL,
|
|
material_title VARCHAR(200) NOT NULL,
|
|
style_code VARCHAR(32) NOT NULL,
|
|
output_formats JSON NOT NULL,
|
|
template_version VARCHAR(64) NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
created_by BIGINT UNSIGNED NOT NULL,
|
|
created_at DATETIME(6) NOT NULL,
|
|
updated_at DATETIME(6) NOT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uk_promotion_task_no (task_no),
|
|
KEY idx_promotion_task_status (status, updated_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
""",
|
|
"""
|
|
CREATE TABLE promotion_input_snapshot (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
task_no VARCHAR(32) NOT NULL,
|
|
version_no INT UNSIGNED NOT NULL,
|
|
product_info JSON NOT NULL,
|
|
manager_info JSON NOT NULL,
|
|
team_info JSON NOT NULL,
|
|
strategy_info JSON NOT NULL,
|
|
fee_structure JSON NOT NULL,
|
|
performance_info JSON NOT NULL,
|
|
risk_disclosure JSON NOT NULL,
|
|
source_notes JSON NOT NULL,
|
|
created_by BIGINT UNSIGNED NOT NULL,
|
|
created_at DATETIME(6) NOT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uk_promotion_input_version (task_no, version_no),
|
|
KEY idx_promotion_input_task (task_no, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
""",
|
|
"""
|
|
CREATE TABLE promotion_attachment (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
task_no VARCHAR(32) NOT NULL,
|
|
attachment_type VARCHAR(32) NOT NULL,
|
|
filename VARCHAR(255) NOT NULL,
|
|
media_type VARCHAR(128) NOT NULL,
|
|
file_hash VARCHAR(128) NOT NULL,
|
|
size_bytes BIGINT UNSIGNED NOT NULL,
|
|
file_path VARCHAR(500) NOT NULL,
|
|
parsed_metadata JSON NOT NULL,
|
|
uploaded_by BIGINT UNSIGNED NOT NULL,
|
|
created_at DATETIME(6) NOT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uk_promotion_attachment_hash (task_no, file_hash),
|
|
KEY idx_promotion_attachment_task_type (task_no, attachment_type)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
""",
|
|
"""
|
|
CREATE TABLE promotion_material_version (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
task_no VARCHAR(32) NOT NULL,
|
|
input_snapshot_id BIGINT UNSIGNED NOT NULL,
|
|
version_no INT UNSIGNED NOT NULL,
|
|
style_code VARCHAR(32) NOT NULL,
|
|
template_version VARCHAR(64) NULL,
|
|
prompt_version VARCHAR(64) NOT NULL,
|
|
draft_json JSON NOT NULL,
|
|
pptx_path VARCHAR(500) NULL,
|
|
pdf_path VARCHAR(500) NULL,
|
|
chart_paths JSON NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
error_message VARCHAR(500) NULL,
|
|
generated_by BIGINT UNSIGNED NOT NULL,
|
|
created_at DATETIME(6) NOT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uk_promotion_material_version (task_no, version_no),
|
|
KEY idx_promotion_material_status (task_no, status)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
""",
|
|
"""
|
|
CREATE TABLE promotion_compliance_check (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
task_no VARCHAR(32) NOT NULL,
|
|
material_version_id BIGINT UNSIGNED NULL,
|
|
rule_code VARCHAR(64) NOT NULL,
|
|
rule_name VARCHAR(128) NOT NULL,
|
|
scope VARCHAR(32) NOT NULL,
|
|
severity VARCHAR(16) NOT NULL,
|
|
hit_text TEXT NULL,
|
|
suggestion VARCHAR(500) NOT NULL,
|
|
created_at DATETIME(6) NOT NULL,
|
|
PRIMARY KEY (id),
|
|
KEY idx_promotion_compliance_task (task_no, created_at),
|
|
KEY idx_promotion_compliance_version (material_version_id, severity)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
""",
|
|
"""
|
|
CREATE TABLE promotion_review_record (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
task_no VARCHAR(32) NOT NULL,
|
|
material_version_id BIGINT UNSIGNED NOT NULL,
|
|
reviewer_id BIGINT UNSIGNED NOT NULL,
|
|
decision VARCHAR(32) NOT NULL,
|
|
comment VARCHAR(1000) NULL,
|
|
created_at DATETIME(6) NOT NULL,
|
|
PRIMARY KEY (id),
|
|
KEY idx_promotion_review_version (material_version_id, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
""",
|
|
"""
|
|
CREATE TABLE promotion_delivery_record (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
task_no VARCHAR(32) NOT NULL,
|
|
material_version_id BIGINT UNSIGNED NOT NULL,
|
|
advisor_id BIGINT UNSIGNED NOT NULL,
|
|
delivery_channel VARCHAR(32) NOT NULL,
|
|
status VARCHAR(16) NOT NULL,
|
|
failure_reason VARCHAR(500) NULL,
|
|
created_by BIGINT UNSIGNED NOT NULL,
|
|
created_at DATETIME(6) NOT NULL,
|
|
sent_at DATETIME(6) NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uk_promotion_delivery_version_advisor (material_version_id, advisor_id),
|
|
KEY idx_promotion_delivery_advisor (advisor_id, status)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
|
|
""",
|
|
]
|
|
|
|
|
|
def upgrade() -> None:
|
|
for statement in TABLES:
|
|
op.execute(statement)
|
|
|
|
|
|
def downgrade() -> None:
|
|
raise RuntimeError("产品推介材料业务数据禁止自动删除,请使用前向兼容迁移")
|