Files
Jog/doc/AI助手联调与模型管理冲突分析.md
T
2026-05-24 00:39:10 +08:00

11 KiB
Raw Blame History

AI 助手联调验收 vs 模型管理 — 冲突分析

文档版本 修订日期 说明
V1.0 2026-05-23 助手功能联调/验收进行中时,与《AI助手模型管理功能需求》V1.2 的差异与冲突梳理

关联文档

分析基准:当前仓库已实现助手 V5 表 + 四接口 + AiAssistant.vue,模型管理 尚未编码


1. 结论摘要

类别 数量 对联调验收的影响
P0 破坏性冲突(不协同发布会导致助手页异常) 1 必须先完成助手 AC 或做兼容层,再上线模型管理后端
P1 行为/语义冲突(验收口径变化,需补充用例) 4 不阻断当前联调,但模型管理上线后原 AC 覆盖不足
P2 环境与流程冲突(库表、分支、验收顺序) 3 联调环境执行 V6 后需重跑部分 AC
P3 扩展性差异UI/接口增量,无逻辑矛盾) 5 与当前联调并行开发需注意合并顺序
无冲突(可并存) 12+ 多轮、限流、登录、重试、分页等规则一致

合计需纳入排期的冲突/差异项:8 项(P0×1 + P1×4 + P2×3;P3 五项建议在模型管理 PR 中一并交付,但不计入「硬冲突」。

推荐节奏

  1. 按《AI助手功能需求》完成待办 23~25(AC-AI-CHAT-*),基线环境 仅 V5、不部署 V6
  2. 实施模型管理;GET .../messages 与前端 同一 PR 发布,或后端短期兼容旧响应格式。
  3. 模型管理验收使用 AC-AI-MODEL-*,并 追加 4 条 P1 回归(见 §5)。

2. 冲突项清单

2.1 P0 — 破坏性冲突(1 项)

编号 冲突点 助手现状(联调基准) 模型管理要求 影响
C-P0-01 GET /api/app/ai/sessions/{id}/messages 响应结构 ApiResult.data消息数组 List<AiChatMessageVO>(需求 FR-AI-CHAT-BE-07);前端 messages.value = res.data data 改为 包装对象{ messages, modelEnabled, readOnlyReason, roundCount, maxRounds } 仅升级后端时,前端把对象当数组渲染 → 消息区空白或报错

缓解(择一):

  • A(推荐):模型管理前后端同版本发布;联调环境在助手 AC 通过后再合入。
  • B:后端过渡期双格式:?legacy=true 仍返回数组,默认新格式。
  • C:前端先判 Array.isArray(data),兼容两种结构。

2.2 P1 — 行为 / 语义冲突(4 项)

编号 冲突点 助手现状 模型管理要求 对联调/验收的影响
C-P1-01 调用 DashScope 的 model 来源 FR-AI-CHAT-BE-09DashScopeProperties.modelDASHSCOPE_MODEL FR-AI-MODEL-BE-03:会话绑定 ai_assistant_model.model_code 联调时记录的 response.model 来自 yml;上线后来自 库表。同一环境改 DASHSCOPE_MODEL 不再 改变已有助手会话行为
C-P1-02 只读条件 FR-AI-CHAT-FE-05:仅 roundCount >= 5 → 只读 另增 modelEnabled === falseD-09);未满 5 轮也可只读 AC-AI-CHAT-FE-04/05 未覆盖「模型禁用」;模型管理验收需 AC-AI-MODEL-FE-04/05
C-P1-03 POST /chat 拒绝条件 满 5 轮、参数非法、限流、AI 异常 绑定模型 enabled=0400 模型已停用FR-AI-MODEL-BE-01 联调阶段不会出现;管理员禁用模型后,原「未满 5 轮可继续」会话 不能再发 — 与 FR-AI-CHAT-FE-05 文案/预期 不一致(属需求演进,非实现 bug
C-P1-04 创建会话与模型绑定 POST /sessions 无 bodyai_chat_session model_id 可选 { modelId };表字段 model_id 必填(迁移回填) 联调创建的会话在 V6 后 model_id 指向种子默认模型;不会 自动等同于当时 yml 中的 model(若种子与 yml 不一致)

2.3 P2 — 环境 / 流程冲突(3 项)

编号 冲突点 说明 建议
C-P2-01 Flyway V6 与联调库 联调库若已跑 V5 并产生会话,执行 V6 会 ALTER + 种子 + UPDATE model_id 助手 AC 在 V5-only 环境签字;V6 后重跑:刷新恢复、历史点选、发送(C-P0-01 相关)
C-P2-02 验收清单并行 《AI助手功能技术实施文档》待办 25:AC-AI-CHAT-*;《模型管理》AC-AI-MODEL-* 分两轮签字,避免混在同一表格未标注版本
C-P2-03 默认模型双配置 助手联调看 application.yml / DASHSCOPE_MODEL;模型管理运行看库内 is_default 部署检查清单增加:种子 model_code 与 yml 一致(见模型管理需求 §3.4

2.4 P3 — 扩展差异(非硬冲突,5 项)

编号 差异点 助手现状 模型管理增量 说明
C-P3-01 新接口 4 个 app 接口 GET /api/app/ai/models 纯增量,不影响联调
C-P3-02 会话列表字段 id, title, roundCount, lastMessageAt + modelDisplayName, modelEnabled 向后兼容,旧前端可忽略
C-P3-03 创建会话 body 空 POST 可选 modelId 旧客户端不传即可
C-P3-04 页面布局 标题栏仅「会话标题 + 轮次」 增加模型 el-selectFR-AI-MODEL-FE 布局扩展,不推翻 FR-AI-CHAT-FE 分栏
C-P3-05 localStorage FR-AI-CHAT-FE-14:不存对话正文 仅存 jog_ai_assistant_model_id 不冲突

2.5 无冲突项(联调可继续,12 项代表)

以下规则在两份需求中 一致或模型管理显式不改

领域 助手需求编号 说明
多轮上限 5 轮 FR-AI-CHAT-BE-02、FE-05/06 模型管理未改 MAX_ROUNDS
失败重试不重复 user FR-AI-CHAT-BE-15 不变
限流 10 次/分钟 FR-AI-CHAT-BE-12 FR-AI-MODEL-BE-08 明确不按模型分限流
登录与鉴权 FR-AI-CHAT-FE-10、BE-01 不变
会话列表分页 50 FR-AI-CHAT-FE-16、D-07 不变
历史全文回看 FR-AI-CHAT-FE-04、D-01 不变(仅多只读原因)
新会话不删旧数据 FR-AI-CHAT-FE-02、D-03 不变
进入页默认最近会话 D-06 不变
System Prompt / max-input 截断 FR-AI-CHAT-BE-03/04/10 不变
会话软删除预留 FR-AI-CHAT-BE-14 模型管理不强制前端删会话
润色/标签/摘要模型来源 D-10、§1.6 与助手联调无关
POST /chat 请求体核心字段 sessionId + message 仍必填;modelId 可选且可忽略

3. 接口契约对照表

接口 联调中契约 模型管理后契约 冲突级别
POST /sessions 无 body → { sessionId } 可选 body { modelId } → 同上 兼容
GET /sessions 分页 + 4 字段 +2 字段 兼容
GET /sessions/{id}/messages data: 数组 data: 对象 C-P0-01
POST /chat { sessionId, message } +可选 modelId(忽略) 兼容
GET /models 不存在 新增

4. 前端实现差异(当前代码)

文件 联调实现 模型管理需改
api/aiChat.js createAiChatSession() 无参;messages 按数组解析 modelId;解析 payload.messages
AiAssistant.vue readOnly = roundCount >= 5res.data 作消息列表 合并 modelEnabled;处理 readOnlyReason
AiChatPanel.vue 仅满 5 轮 readonly-banner 增加模型停用提示条
(无) 无模型选择器 标题栏 el-select + listAppAiModels

5. 验收用例冲突与合并建议

5.1 当前联调应完成的范围(不受模型管理阻塞)

以下用例 仅依赖 V5 + 现有代码,与模型管理无硬冲突:

  • AC-AI-CHAT-NAV-*、AC-AI-CHAT-FE-0103、0607
  • AC-AI-CHAT-FE-04、05仅满 5 轮只读
  • AC-AI-CHAT-BE-0105

对应技术文档待办:23、24、25(助手部分)

5.2 模型管理上线后必须追加的回归(原 AC 未覆盖)

追加编号 场景 对应冲突
REG-MODEL-01 V6 迁移后,旧会话可加载消息且可对话(默认模型启用) C-P1-04、C-P2-01
REG-MODEL-02 禁用绑定模型后,未满 5 轮会话只读且 chat 400 C-P1-02、C-P1-03
REG-MODEL-03 切换模型 + 新会话,DashScope 使用新 model_code C-P1-01
REG-MODEL-04 前端 messages 包装结构渲染正常 C-P0-01

5.3 不必在助手联调阶段执行的用例

  • AC-AI-MODEL-ADM-、AC-AI-MODEL-FE-0105、AC-AI-MODEL-BE-(属模型管理专项验收)

6. 测试与自动化影响

资产 联调基准 模型管理后
AiChatServiceImplTest Mock properties.getModel() 需 Mock AiAssistantModelMapper / Service
AiChatServiceIntegrationTest 内存实现,无 model_id 补 model 绑定与禁用用例
AiChatServiceLiveIT 打印 model 来自配置 可能为库表 model_code
前端 E2E(若有) 无模型下拉 需新场景

冲突项计数:自动化需 显著改动 的约 2 处(Service 单测 + 集成测),计入 P1 维护成本,不单列新编号。


7. 分支与发布策略建议

main ──┬── [阶段1] 助手联调验收(V5 only,签 AC-AI-CHAT-*
       │
       └── [阶段2] feature/ai-model-mgmtV6 + 模型 CRUD + 助手改造)
                 └── 同一 PR 合并:后端 messages 包装 + 前端兼容/新 UI
                 └── 签 AC-AI-MODEL-* + REG-MODEL-0104
  • 避免:阶段 1 未完成时合入仅含 V6 + 后端 messages 改动的 PR。
  • 允许:阶段 1 期间在独立分支开发模型管理,但不部署到联调验收环境。

8. 冲突项统计(速查)

级别 编号 计数
P0 C-P0-01 1
P1 C-P1-01 C-P1-04 4
P2 C-P2-01 C-P2-03 3
P3 C-P3-01 C-P3-05 5(扩展,非阻断)
需协调的硬冲突合计 P0 + P1 + P2 8

9. 文档修订建议(可选)

文档 建议
《AI助手功能需求》 在 §3.3.3 增加脚注:「消息列表响应以模型管理上线版为准,见《AI助手联调与模型管理冲突分析》C-P0-01」
《AI助手模型管理功能需求》 §3.3.3 标明对 FR-AI-CHAT-BE-07 的 替代关系
《AI助手功能技术实施文档》 待办 25 备注:验收环境 Flyway ≤ V5

编写人: AI 助手
评审人: 待评审
生效日期: 2026-05-23