751302205a
文件 问题 严重度
...
1 poster/routes.py:156 下载路径硬编码,与实际存储路径不一致 → 下载 404 P0
2 poster/service.py:41 get_reviewed_products() N+1 查询 P1
3 poster/service.py:169,226 json.loads 无异常处理 → 数据损坏时崩溃 P1
4 3 个 model 文件 to_dict() 中 json.loads 无防御 → 序列化崩溃 P1
5 poster/tasks.py ~120 行死代码(线程版海报生成) P2
6 generation/celery_tasks.py parse_poster_task + _execute_poster_parse 死代码(~70 行) P2
7 generation/task_service.py 对应移除 ("poster", "parse") 映射 P2
8 utils/security.py SSRF TOCTOU:DNS 检查与请求之间的时间窗口可被 DNS rebinding 利用 → 新增 _SafeHTTPTransport 在连接时重新验证 IP P1 安全
9 poster/image_generator.py anchor="mm" 在旧 Pillow 默认字体上崩溃;改用 hasattr 检测 P1
前端(3 项)
# 文件 问题 严重度
10 poster-api.ts:54 downloadPoster() 返回 AxiosResponse 而非 Blob → 海报永远无法下载 P0
11 PosterStepUpload.vue 解析轮询无超时 → 无限轮询 P1
12 PosterStepPreview.vue 生成轮询无超时 → 无限轮询 P1
修改的文件总计
后端 7 个:security.py, image_generator.py, service.py, routes.py, tasks.py, celery_tasks.py, task_service.py, poster_case_upload.py, poster_record.py, poster_template_model.py
前端 3 个:poster-api.ts, PosterStepUpload.vue, PosterStepPreview.vue
未修复(确认无需修复)
manual_parser.py — 之前误判为死代码,实际被 Celery 产品小册子解析任务使用,保留不动
llm_client.py 中的 httpx 调用 — URL 来自管理员配置的系统设置,不是用户输入,SSRF 风险极低;加检查反而会阻断合法的私网 LLM 端点
2026-07-29 22:41:27 +08:00
6dfd652a57
07-29 修复一版问题PPT 能够上传了
2026-07-29 15:47:50 +08:00
74dbb32028
07-29 修复一版问题
2026-07-29 12:19:26 +08:00
c7df34d0cd
07-27 阶段 状态 进度
...
阶段 1:数据库与工作区 ✅ 完成 100%
阶段 2:Celery 后台任务 ✅ 完成 100%
阶段 3:前端刷新恢复与多工作区 ✅ 完成 100%
阶段 4:任务坞与任务中心 ✅ 完成 100%
阶段 5:版本化编辑 ✅ 完成 100%
阶段 6:测试与灰度 ❌ 未开始 0%
2026-07-28 17:53:14 +08:00
8192f6a783
07-27 PDF提取优化
2026-07-28 16:45:14 +08:00
e3479f0546
上线阻断问题全部修复
...
# 问题 修复 文件
1 前端构建失败(引号错误) size="small type=" → size="small" type=" PosterHistoryPage.vue
2 migrate_014 ORM vs 缺失列 全部改为原始 SQL,不再引用 ORM 模型 migrate_014.py
3 cleanup 字段名错误 output_path → ppt_path cleanup.py
4 文案生成 case 越权 添加 case.user_id != user_id 校验 poster/service.py
5 存储路径未接通持久化卷 全部改用 get_storage_root()(默认 /app/api/storage/insurance) config.py, ppt/routes.py, poster/service.py, poster/tasks.py
高风险问题修复
# 问题 修复 文件
6 migrate_019 rollback 撤销成功字段 每个 ALTER 后立即 commit,失败只回滚当前语句 migrate_019.py
7 迁移锁 Windows 不兼容 + 句柄未持久化 全局变量保存锁句柄,支持 Windows msvcrt api/insurance/db/__init__.py
8 PDF 校验异常时放行 异常返回 False(文件损坏) security.py
9 健康检查始终返回成功 缺少关键资源时返回 503 + missing 列表 poster/routes.py
10 短密钥掩码泄露原值 ≤4 字符返回 **** ppt_admin_service.py
11 设置无键名白名单 添加 _ALLOWED_SETTING_KEYS 白名单 ppt_admin_service.py
12 容器重启任务永久 stuck 添加 recover_stale_tasks() 启动恢复函数 poster/tasks.py, ppt/parse_worker.py
2026-07-27 13:52:09 +08:00
67b2dac23f
slidesConfig 结构错误 — migrate_017 输出改为数组格式,migrate_019 修复历史数据
...
迁移系统加固 — 加 advisory lock 防并发,失败回滚并中止启动(原来是 catch-and-continue)
安全漏洞 — Settings/History API 权限收紧,API key 返回掩码值,海报 case 所有权校验
依赖缺失 — requirements.txt 补齐 python-pptx/openai/Pillow,Dockerfile 改为统一安装
海报鉴权下载 — 前端全部改用 authenticated blob,不再 window.open 无 token URL
LLM 配置分离 — 海报文案读取 poster_llm_*(不再复用 ppt_llm_*),支持 config namespace
图片生成器 — 兼容 b64_json 和 URL 两种响应格式,追踪 generation_mode/provider/model
种子数据 — 新环境自动获得 2 个海报模板 + 2 个文案模板
2026-07-27 13:21:34 +08:00
02e299682e
feat: support configurable image generation models for poster creation
...
- Expand poster image model settings with provider, model name, API key,
and base URL fields (was only model name + API key)
- Add presets for OpenAI (gpt-image-1), Doubao (火山引擎), and Zhipu (CogView)
- Refactor image_generator.py to read config from system_settings DB instead
of hardcoding gpt-image-1 and OPENAI_API_KEY env var
- All OpenAI-compatible image APIs work via configurable base URL
- Add doubao and cogview to brand name mapping
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 16:11:37 +08:00
5d28e4518e
0723 PPT加海报功能初步完成
2026-07-23 15:04:16 +08:00