feat: 异步沉淀主题摘要和成长档案

This commit is contained in:
2026-08-03 11:35:58 +08:00
parent a3946013f5
commit d2e08ab36c
24 changed files with 825 additions and 58 deletions

View File

@@ -357,7 +357,8 @@ Agent 已经可以:
- 2026-07-31已补齐后台预览的“模拟学员”入口选择学员后预览链路会加载该学员权益、主题额度使用量和长期成长档案并在检索追踪中记录 `load_debug_user_context`。默认不选择学员时,保持原后台调试行为。
- 2026-07-31后台预览已支持继续选择具体主题加载主题摘要、滚动摘要和最近消息正式聊天与后台预览均会按权益注入成长档案、求助卡和分享稿能力并在追踪中记录模型路由与上下文来源。
- 2026-07-31一期全链路已完成隔离生产编排、真实模型问答、流式响应、主题上下文、成长档案、求助卡、分享稿、异步报告和记录审计验收。详细结果见《一期全链路验收记录》;主题沉淀接口的同步耗时仍需作为上线前性能项处理
- 2026-07-31一期全链路已完成隔离生产编排、真实模型问答、流式响应、主题上下文、成长档案、求助卡、分享稿、异步报告和记录审计验收。详细结果见《一期全链路验收记录》。
- 2026-08-03主题结束已改为持久化异步沉淀。接口快速结束主题并创建唯一任务后台独立生成摘要和成长档案支持自动重试、服务重启恢复、用户端状态查询和后台手动重试原同步模型调用不再阻塞用户操作。
---
@@ -896,6 +897,6 @@ AI 日志增加:
- 千问千答不建设老师端或“老师工作版”,老师仍由学员自行联系;
- 周报、月报的异步与定时生成已经完成,本计划中的连续陪伴主链路已完成一期闭环;
- 一期主要功能链路已验收通过;主题结束时同步生成摘要和成长档案的耗时仍是上线前必须关注的性能风险
- 一期主要功能链路已验收通过;主题摘要和成长档案已改为持久化异步生成,原同步等待风险已经关闭
- 问题洞察的知识库补充建议、人工合并和拆分暂缓;
- 下一阶段切换到其他产品板块时,再按对应板块重新确认范围、依赖和验收标准。

View File

@@ -11,7 +11,7 @@
一期功能主链路已打通,权益管理页面已完成布局重构,用户端和后台 Agent 预览均能够按学员、主题和权益运行。自动化测试、前后端构建、数据库迁移和隔离生产环境冒烟均通过。
当前仍有一项上线前性能风险:结束主题时会同步生成主题摘要成长档案,本次真实模型验收耗时约 42 秒。结果能够正确生成,但等待时间容易让用户误认为操作无响应,也会放大重复点击和网络超时风险。本项不影响数据正确性,但不应按“完全无风险”关闭
2026-08-03 已完成主题沉淀异步化:结束主题接口只完成状态变更和任务入队,摘要成长档案由持久化后台任务生成;重复点击返回同一任务,失败自动重试,服务重启能够恢复,最终失败可由管理员手动重试。原先约 42 秒的同步等待不再阻塞用户请求
## 3. 功能验收结果
@@ -24,7 +24,7 @@
| 用户端主题上下文 | 通过 | 连续消息均绑定同一主题,历史消息与主题上下文可继续使用 |
| 后台 Agent 预览 | 通过 | 可选择模拟学员和具体主题,能够加载权益、主题摘要、最近消息和成长档案 |
| Agent 运行追踪 | 通过 | 能看到 `load_debug_user_context`、模型路由等追踪节点 |
| 主题沉淀 | 功能通过,性能待优化 | 主题摘要与成长档案均生成成功;真实模型调用约 42 秒 |
| 主题沉淀 | 通过 | 结束主题快速入队;摘要与成长档案后台生成;支持幂等、自动重试、重启恢复和管理员手动重试 |
| 求助卡 | 通过 | 可生成非空内容并记录复制状态 |
| 分享稿 | 通过 | 可生成非空内容并记录复制状态 |
| 周期报告 | 通过 | 入队接口约 7 毫秒返回,后台任务能够完成并保存报告 |
@@ -36,12 +36,13 @@
| 验收项 | 结果 | 实际结果 |
| --- | --- | --- |
| 后端自动化测试 | 通过 | 107 项测试全部通过 |
| OpenAPI 检查 | 通过 | 成功生成并检查 93 个接口路径 |
| 后端自动化测试 | 通过 | 111 项测试全部通过,包含异步入队、幂等、重试、重启恢复及推理内容过滤 |
| OpenAPI 检查 | 通过 | 成功生成并检查 95 个接口路径 |
| 管理后台构建 | 通过 | 生产构建成功 |
| 用户端构建 | 通过 | 生产构建成功 |
| Alembic 离线 SQL | 通过 | 成功生成 1106 行迁移 SQL并覆盖到 `0023_simple_knowledge_route` |
| 全新数据库迁移 | 通过 | 在隔离 MySQL 数据库从零升级至最新版本,共生成 39 张表 |
| Alembic 离线 SQL | 通过 | 成功生成 1130 行迁移 SQL并覆盖到 `0024_topic_settlement_jobs` |
| 现有数据库迁移 | 通过 | 开发 MySQL 已从 `0023_simple_knowledge_route` 升级至 `0024_topic_settlement_jobs` |
| 全新数据库迁移 | 通过 | 隔离 MySQL 从零升级到 `0024_topic_settlement_jobs`,主题任务字段和索引均已生成,验收库随后清理 |
| 数据库与 Redis 就绪检查 | 通过 | `/api/ready` 返回数据库和 Redis 均已就绪,并返回 `X-Request-ID` |
| 隔离生产编排 | 通过 | 使用生产镜像、独立数据库和 Redis 启动,所有容器健康 |
| 生产冒烟 | 通过 | 用户端、管理后台、静态资源、健康接口和就绪接口均可访问 |
@@ -52,14 +53,15 @@
全链路验证脚本在生成 Alembic 离线 SQL 时,被部分历史迁移中的在线数据库检查阻断。已为相关迁移补充分离的离线模式逻辑,并为默认权益数据补充明确字段类型。在线迁移行为保持不变,且已通过全新 MySQL 数据库实际迁移验证。
2026-08-03 浏览器验收时发现,个别模型可能把 `<think>` 推理过程和多个 JSON 草稿一起返回,旧解析逻辑可能将其降级为成长档案正文。现已在结构化解析前剔除推理块,并从后向前选择最后一个可完整解析的 JSON已补回归测试思考过程不会再写入成长档案。
## 6. 上线前风险与建议
### P1:结束主题接口等待时间过长
### 已关闭:结束主题接口等待时间过长
- 现象:结束主题后同步执行主题摘要和成长档案两次模型处理,本次耗时约 42 秒
- 影响:用户容易认为按钮没有生效;弱网或网关超时会使前端收到失败,但后端可能已经成功;重复点击可能产生重复任务
- 建议:把主题结束本身改为快速提交,摘要和成长档案转为后台任务;增加处理中状态、幂等键和失败重试;前端轮询或通过现有任务状态刷新结果
- 上线判断:内部小范围试用可继续;正式扩大用户前建议完成该项。
- 处理:主题结束与模型生成已拆分,持久化任务由独立 Worker 执行
- 保护:数据库唯一约束和行锁保证重复请求只产生一条任务;最多自动重试 3 次;执行进程中断后自动恢复;后台支持手动重新入队
- 用户体验:主题结束后立即提示“实修记录正在后台沉淀”,用户可以继续聊天;页面停留期间会自动查询完成状态
### P2前端构建体积提示