功能 文件 说明 幻灯片显隐 routes.py, PptResult.vue, ppt-api.ts 每页可点击隐藏/恢复,隐藏页在缩略图中半透明显示,页码标注隐藏数量 DeckContract 快照 renderer.py, celery_tasks.py, ppt_session.py 生成时保存完整 deck JSON 到文件系统,供版本化回溯 版本化生成 celery_tasks.py, task_service.py, routes.py POST /preview/:id/regenerate → 递增版本号 → 用 deck 重新渲染 → 追加到版本历史,不覆盖旧版 版本历史 UI PptResult.vue 右栏显示版本列表(版本号/页数/时间),当前版本高亮标记 数据库迁移 migrate_025.py 新增 deck_contract_path、versions_json 字段 阶段 4:UI 重构 功能 文件 说明 保险绿主题 PptPage.vue, PptGenerate.vue, PptResult.vue, PptSlideCanvas.vue 主色从 #2563eb 蓝改为 #3B7A57 保险绿,背景暖灰 #f0f7f3 生成决策展示 PptGenerate.vue 新增"系统决策"区域,展示检测场景、选用模板、计划书数量、险种类型、保司 骨架屏加载 PptResult.vue preview_status=none/generating 时显示骨架屏 + 加载动画,不再显示静态 fallback 新增后端接口(本轮) 方法 路径 功能 POST /ppt/preview/:id/regenerate 基于编辑内容生成新版本 PUT /ppt/preview/:id/slide/:index 增加 hidden 字段支持 新增 Celery 任务 任务名 说明 insurance.regenerate_ppt 读取 DeckContract → 应用编辑 → 重新渲染 → 保存新版本
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
"""迁移 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'",
|
|
"deck_contract_path": "VARCHAR(500) DEFAULT NULL",
|
|
"versions_json": "TEXT DEFAULT NULL",
|
|
}
|
|
|
|
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] 迁移完成")
|