2026-07-29 21:26:48 +08:00
|
|
|
"""迁移 025: PPT 会话表新增预览与质量检查字段。"""
|
|
|
|
|
import logging
|
|
|
|
|
|
|
|
|
|
from sqlalchemy import text
|
|
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def migrate():
|
|
|
|
|
"""为 insurance_ppt_sessions 表添加预览相关字段。"""
|
|
|
|
|
from insurance.db.compat import db
|
|
|
|
|
|
|
|
|
|
columns = {
|
|
|
|
|
"slides_json_path": "VARCHAR(500) DEFAULT NULL",
|
|
|
|
|
"quality_report_json": "TEXT DEFAULT NULL",
|
|
|
|
|
"preview_status": "VARCHAR(20) NOT NULL DEFAULT 'none'",
|
2026-07-29 21:41:28 +08:00
|
|
|
"deck_contract_path": "VARCHAR(500) DEFAULT NULL",
|
|
|
|
|
"versions_json": "TEXT DEFAULT NULL",
|
2026-07-29 21:26:48 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for col_name, col_def in columns.items():
|
|
|
|
|
exists = db.session.execute(text(
|
|
|
|
|
"SELECT COUNT(*) FROM information_schema.columns "
|
|
|
|
|
"WHERE table_name = 'insurance_ppt_sessions' AND column_name = :col"
|
|
|
|
|
), {"col": col_name}).scalar()
|
|
|
|
|
if not exists:
|
|
|
|
|
db.session.execute(text(
|
|
|
|
|
f"ALTER TABLE insurance_ppt_sessions ADD COLUMN {col_name} {col_def}"
|
|
|
|
|
))
|
|
|
|
|
logger.info("[migrate_025] 已添加字段 %s", col_name)
|
|
|
|
|
else:
|
|
|
|
|
logger.info("[migrate_025] 字段 %s 已存在,跳过", col_name)
|
|
|
|
|
|
|
|
|
|
db.session.commit()
|
|
|
|
|
logger.info("[migrate_025] 迁移完成")
|