diff --git a/api/insurance/db/migrate_017.py b/api/insurance/db/migrate_017.py index e8e05e1..661e674 100644 --- a/api/insurance/db/migrate_017.py +++ b/api/insurance/db/migrate_017.py @@ -10,30 +10,32 @@ from sqlalchemy import text logger = logging.getLogger(__name__) -def upgrade(engine): +def migrate(): """执行迁移。""" - with engine.begin() as conn: - # 检查列是否已存在 - result = conn.execute(text( - "SELECT COUNT(*) FROM information_schema.columns " - "WHERE table_name = 'insurance_ppt_templates' AND column_name = 'slides_config_json'" - )) - if result.scalar() > 0: - logger.info("slides_config_json 列已存在,跳过迁移") - return + from insurance.db.compat import db - conn.execute(text( - "ALTER TABLE insurance_ppt_templates ADD COLUMN slides_config_json TEXT" - )) - logger.info("已添加 slides_config_json 列") + # 检查列是否已存在 + result = db.session.execute(text( + "SELECT COUNT(*) FROM information_schema.columns " + "WHERE table_name = 'insurance_ppt_templates' AND column_name = 'slides_config_json'" + )) + if result.scalar() > 0: + logger.info("slides_config_json 列已存在,跳过迁移") + return - # 为现有模板填充默认 slides_config - _seed_default_slides_config(conn) + db.session.execute(text( + "ALTER TABLE insurance_ppt_templates ADD COLUMN slides_config_json TEXT" + )) + db.session.commit() + logger.info("已添加 slides_config_json 列") + + # 为现有模板填充默认 slides_config + _seed_default_slides_config(db) -def _seed_default_slides_config(conn): +def _seed_default_slides_config(db): """为现有模板填充默认的逐页配置。""" - templates = conn.execute(text( + templates = db.session.execute(text( "SELECT id, plan_type, required_page_types_json FROM insurance_ppt_templates WHERE status = 1" )).fetchall() @@ -48,10 +50,11 @@ def _seed_default_slides_config(conn): continue slides_config = _build_default_slides_config(page_types, plan_type) - conn.execute(text( + db.session.execute(text( "UPDATE insurance_ppt_templates SET slides_config_json = :config WHERE id = :id" ), {"config": json.dumps(slides_config, ensure_ascii=False), "id": tpl_id}) + db.session.commit() logger.info(f"已为 {len(templates)} 个模板填充默认 slides_config")