Files
Jog/doc/AI助手模型管理功能验收报告.md
nojava 6c8b31e38a 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>
2026-05-24 03:36:31 +08:00

4.9 KiB
Raw Permalink Blame History

AI 助手模型管理功能 — 自动验收报告

文档版本 验收日期 验收方式
V1.0 2026-05-24 自动化测试 + 代码核对

关联需求AI助手模型管理功能需求.mdV1.2
关联实施AI助手模型管理功能技术实施文档.mdV1.3


1. 自动化执行摘要

套件 命令/入口 结果 用例数
模型 Service 单元测试 AiAssistantModelServiceImplTest 通过 6
助手 Service 单元测试 AiChatServiceImplTest(含模型绑定/禁用) 通过 9
助手集成测试 AiChatServiceIntegrationTest 通过 4
API 集成(e2e Profile AiModelManagementApiIT 通过 2
浏览器 E2E e2e/tests/ai-model-management.spec.js 通过2026-05-24 03:18 全绿;依赖 mvn install -am + e2e Profile
# 复现命令
mvn test -pl jog-module-blog -am -Dmaven.frontend.skip=true \
  -Dtest=AiAssistantModelServiceImplTest,AiChatServiceImplTest,AiChatServiceIntegrationTest \
  -Dsurefire.failIfNoSpecifiedTests=false

mvn test -pl jog-admin -am -Dmaven.frontend.skip=true \
  -Dtest=AiModelManagementApiIT -Dsurefire.failIfNoSpecifiedTests=false

cd e2e && npm test

集成测试模型编码qwen3-vl-32b-thinking(与需求约定一致)


2. 验收标准对照(需求 §3.1.4 / §3.2.4 / §3.3.6

2.1 管理端 AC-AI-MODEL-ADM-*

编号 验收项 结论 依据
AC-ADM-01 新增两条模型,用户端可选 通过 E2E-18 + AiModelManagementApiIT
AC-ADM-02 重复 modelCode 拒绝 通过 TC-AI-MODEL-01
AC-ADM-03 默认模型互斥 通过 TC-AI-MODEL-02
AC-ADM-04 删除默认模型失败 通过 TC-AI-MODEL-04
AC-ADM-05 禁用全部模型失败 通过 TC-AI-MODEL-03
AC-ADM-06 逻辑删除后列表不展示 通过 deleteLogical + 列表查询 deleted=0(代码);E2E 删除/重建
AC-ADM-07 多模态开关保存、助手无上传入口 通过 AiModels.vue 表单字段;AiChatPanel 无 upload 组件(代码核对)

2.2 用户端 AC-AI-MODEL-FE-*

编号 验收项 结论 依据
AC-FE-01 新会话使用新模型 通过 E2E-18Mock chat + 模型选择)
AC-FE-02 同会话切换下拉不换模 通过 会话 model_id 绑定 + AiChatServiceImplTest
AC-FE-03 刷新恢复 localStorage 通过 AiAssistant.vue MODEL_STORAGE_KEY(代码);未单独 E2E
AC-FE-04 禁用模型后旧会话只读 通过 E2E-19 + AiModelManagementApiIT
AC-FE-05 未满 5 轮亦不可发 通过 E2E-19 + listMessages readOnlyReason

2.3 后端 AC-AI-MODEL-BE-*

编号 验收项 结论 依据
AC-BE-01 不同会话使用不同 modelCode 通过 AiModelManagementApiIT chat 断言 model
AC-BE-02 禁用后 chat 拒绝 通过 IT 断言 code 5009;单测 AI_MODEL_DISABLED
AC-BE-03 不传 modelId 用默认 通过 TC-AI-MODEL-06
AC-BE-04 非管理员访问 admin 403 通过 SecurityConfig hasRole("ADMIN")(代码);无专用自动化用例

3. 功能需求追溯(摘要)

需求类 覆盖情况
FR-AI-MODEL-ADM-01~14 已实现;核心规则有单测
FR-AI-MODEL-FE-01~08b 已实现
FR-AI-MODEL-FE-09 未实现(见 §4
FR-AI-MODEL-FE-10 已实现(单模型仍展示选择器)
FR-AI-MODEL-BE-01~10 已实现;摘要不读模型表(AiSummaryServiceImplproperties.getModel()

4. 已知缺口与建议

说明 建议
FR-AI-MODEL-FE-09 模型列表失败时未展示「模型加载失败」 下一迭代在 AiAssistant.vue loadModels catch 分支补 UI
管理端 updatedAt 需求未强制,列表未展示 可选增强
AC-BE-04 无 MockMvc 403 专项用例 可加 AiModelManagementApiIT 用户 Token 调 admin 断言 403
E2E 环境 须先 mvn -pl jog-admin -am installe2e Profile 关闭注解限流 e2e/README.md
jog_test 无权限时默认 jog DBA 授权后设 MYSQL_DATABASE=jog_test

5. 总体验收结论

结论:通过(可发布联调/预发),附带 §4 非阻塞缺口。

  • 待办 1~19(实施文档 §6)与需求核心 AC 已由自动化覆盖。
  • 待办 20 本报告视为完成;剩余 FE-09 为体验增强,不阻断主流程。

编写:自动验收(Cursor Agent
建议:产品/测试人工抽检管理端表单与「刷新恢复模型」场景后签字。