feat: AI 助手模型管理(CRUD、会话绑定、自动化验收)

- Flyway V6:模型表、默认种子、ai_chat_session.model_id 回填
- 管理端 /api/admin/ai/models;用户端选模与新会话绑定
- 禁用模型后会话只读(5009);chat 按会话 modelCode 调 DashScope
- 前端 AiModels 页、助手模型选择器与 localStorage
- 单测、AiModelManagementApiIT、Playwright E2E;e2e Profile 关闭注解限流
- 技术实施文档与验收报告;移除过期冲突分析文档

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
nojava
2026-05-24 03:36:31 +08:00
parent 9cf811d8c1
commit 6c8b31e38a
58 changed files with 2693 additions and 556 deletions
@@ -4,6 +4,9 @@
| :------- | :--------- | :----- | :------------------------------------------------- |
| V1.0 | 2026-05-23 | — | 基于《AI助手模型管理功能需求》V1.1 初稿 |
| V1.1 | 2026-05-23 | — | 补充与润色、标签推荐等功能的实施边界说明 |
| V1.2 | 2026-05-24 | — | 同步 §6 待办进度;§5.3 联调清单标注自动化已覆盖项 |
| V1.3 | 2026-05-24 | — | §6 待办 18~19 标为已完成(API IT + Playwright E2E |
| V1.4 | 2026-05-24 | — | §6 待办 20 完成;新增《AI助手模型管理功能验收报告》 |
**关联需求**[AI助手模型管理功能需求.md](./AI助手模型管理功能需求.md)V1.2
**依赖能力**[AI助手功能技术实施文档.md](./AI助手功能技术实施文档.md)AI 助手 V1.1 已落地)
@@ -567,13 +570,13 @@ sequenceDiagram
### 5.3 联调检查清单
- [ ] Flyway V6 执行成功;`ai_chat_session` 均有 `model_id`
- [ ] 管理端 CRUD、默认模型互斥、禁止删唯一启用
- [ ] 用户下拉仅启用模型;`localStorage` 恢复有效
- [ ] 新会话绑定所选模型;同会话中途改下拉 **不** 换模
- [ ] 禁用模型后旧会话只读、`POST /chat` 400
- [ ] 助手页 **无** 图片/语音上传入口
- [ ] 摘要/润色仍走 `dashscope.model`(回归一条即可)
- [x] Flyway V6 执行成功;`ai_chat_session.model_id` 回填(线上库已 V6
- [x] 管理端 CRUD、默认互斥、禁止删唯一启用(单测 + API IT + E2E
- [x] 用户下拉仅启用模型;`localStorage` 恢复(代码 + E2E 选模)
- [x] 新会话绑定所选模型;同会话不改绑(单测 + 设计)
- [x] 禁用模型后旧会话只读、`POST /chat` 5009IT + E2E-19
- [x] 助手页 **无** 图片/语音上传入口
- [x] 摘要/润色仍走 `dashscope.model`
---
@@ -583,26 +586,26 @@ sequenceDiagram
| 序号 | 阶段 | 待办项 | 状态 |
| :--- | :--- | :----- | :--- |
| 1 | 数据库 | 新增 `V6__ai_assistant_model.sql`(建表、种子、session.model_id 回填) | ⬜ 未开始 |
| 2 | 后端 | 实体 `AiAssistantModel``AiChatSession.modelId` | ⬜ 未开始 |
| 3 | 后端 | `AiAssistantModelMapper` | ⬜ 未开始 |
| 4 | 后端 | DTO/VO`AiAssistantModelSaveDTO``AiAssistantModelVO``AiAssistantModelAppVO``AiChatSessionMessagesVO``CreateAiChatSessionDTO` | ⬜ 未开始 |
| 5 | 后端 | `AiChatReadOnlyReason` 枚举 | ⬜ 未开始 |
| 6 | 后端 | `ErrorCode` 新增 5007~5011 | ⬜ 未开始 |
| 7 | 后端 | `AiAssistantModelService` + `Impl`CRUD、默认、校验) | ⬜ 未开始 |
| 8 | 后端 | `AdminAiModelController` | ⬜ 未开始 |
| 9 | 后端 | `AiChatController` 增加 `GET /models`sessions 支持 body | ⬜ 未开始 |
| 10 | 后端 | `AiChatServiceImpl` 改造(绑定、禁用校验、modelCode、消息包装) | ⬜ 未开始 |
| 11 | 后端 | 单元/集成测试 | ⬜ 未开始 |
| 12 | 前端 | `api/aiModel.js` | ⬜ 未开始 |
| 13 | 前端 | `views/admin/AiModels.vue` | ⬜ 未开始 |
| 14 | 前端 | `AdminLayout` + `router` 注册 `/admin/ai-models` | ⬜ 未开始 |
| 15 | 前端 | `api/aiChat.js` 适配新 sessions/messages 结构 | ⬜ 未开始 |
| 16 | 前端 | `AiAssistant.vue` 模型列表、localStorage、readOnly 逻辑 | ⬜ 未开始 |
| 17 | 前端 | `AiChatPanel.vue` 模型选择器 + 停用提示条 | ⬜ 未开始 |
| 18 | 联调 | 管理端上架第二模型 → 用户新会话切换 → 对话成功 | ⬜ 未开始 |
| 19 | 联调 | 禁用模型 → 旧会话只读 + chat 400 | ⬜ 未开始 |
| 20 | 验收 | 按需求 V1.1 验收标准逐项确认 | ⬜ 未开始 |
| 1 | 数据库 | 新增 `V6__ai_assistant_model.sql`(建表、种子、session.model_id 回填) | ✅ 已完成 |
| 2 | 后端 | 实体 `AiAssistantModel``AiChatSession.modelId` | ✅ 已完成 |
| 3 | 后端 | `AiAssistantModelMapper` | ✅ 已完成 |
| 4 | 后端 | DTO/VO`AiAssistantModelSaveDTO``AiAssistantModelVO``AiAssistantModelAppVO``AiChatSessionMessagesVO``CreateAiChatSessionDTO` | ✅ 已完成 |
| 5 | 后端 | `AiChatReadOnlyReason` 枚举 | ✅ 已完成 |
| 6 | 后端 | `ErrorCode` 新增 5007~5011 | ✅ 已完成 |
| 7 | 后端 | `AiAssistantModelService` + `Impl`CRUD、默认、校验) | ✅ 已完成 |
| 8 | 后端 | `AdminAiModelController` | ✅ 已完成 |
| 9 | 后端 | `AiChatController` 增加 `GET /models`sessions 支持 body | ✅ 已完成 |
| 10 | 后端 | `AiChatServiceImpl` 改造(绑定、禁用校验、modelCode、消息包装) | ✅ 已完成 |
| 11 | 后端 | 单元/集成测试`AiAssistantModelServiceImplTest``AiChatServiceImplTest` / `AiChatServiceIntegrationTest` 已适配并通过) | ✅ 已完成 |
| 12 | 前端 | `api/aiModel.js` | ✅ 已完成 |
| 13 | 前端 | `views/admin/AiModels.vue` | ✅ 已完成 |
| 14 | 前端 | `AdminLayout` + `router` 注册 `/admin/ai-models` | ✅ 已完成 |
| 15 | 前端 | `api/aiChat.js` 适配新 sessions/messages 结构 | ✅ 已完成 |
| 16 | 前端 | `AiAssistant.vue` 模型列表、localStorage、readOnly 逻辑 | ✅ 已完成 |
| 17 | 前端 | `AiChatPanel.vue` 模型选择器 + 停用提示条 | ✅ 已完成 |
| 18 | 联调 | 管理端上架第二模型 → 用户新会话切换 → 对话成功 | ✅ 已完成(`AiModelManagementApiIT` + `e2e/tests/ai-model-management.spec.js` TC-E2E-18 |
| 19 | 联调 | 禁用模型 → 旧会话只读 + chat 5009 | ✅ 已完成(`AiModelManagementApiIT` + `e2e/tests/ai-model-management.spec.js` TC-E2E-19 |
| 20 | 验收 | 按需求 V1.1 验收标准逐项确认 | ✅ 已完成(见 [AI助手模型管理功能验收报告.md](./AI助手模型管理功能验收报告.md) |
---
@@ -643,4 +646,5 @@ sequenceDiagram
**编写人:** AI 助手
**评审人:** 待评审
**生效日期:** 2026-05-23
**生效日期:** 2026-05-23
**进度摘要(V1.4):** 待办 1~20 已完成;核心 AC 自动化通过,FE-09 列为非阻塞缺口(见验收报告 §4)。