Files

2.2 KiB
Raw Permalink Blame History

Acceptance: single-react-chat-sse-cutover

Result

  • Status: archived
  • OpenSpec tasks: 14/14 complete
  • Interface impact: L4 breaking HTTP/frontend contract
  • Public Chat protocol: unique named-event SSE POST /api/chat

Static Verification

  • 组合路由保持 /api/chat、/api/ai_ops、/api/chat/clear、/api/chat/session/{sessionId} 和 /runs;/api/chat_stream 已删除。
  • 生产 Controller/前端 legacy Chat token scan:0。
  • ChatController forbidden dependency scan:0;结构测试固定其三个 protocol/application dependencies。
  • SSE payload 只包含固定 metadata/status/content/failure/done fields,CANCELLED 不作为公开 done outcome。
  • mode selector DOM、state、consumer 和 CSS 已删除。

Script Verification

  • mvn -q -DskipTests compile:通过。
  • Stage 2-6B + AiOps regression selection:24 suites / 101 tests,0 failure/error/skipped。
  • openspec validate single-react-chat-sse-cutover --strict:通过。
  • node --check src/main/resources/static/app.js:通过。
  • git diff --check:通过,仅有仓库既存 LF/CRLF 提示。

Browser or Manual Verification

  • 本阶段未运行浏览器人工验证;前端协议由静态 contract test 和 JavaScript syntax check 覆盖。

Not Verified

  • 未运行 live 模型、Redis、日志和 MySQL E2E;按 ISS-014 阶段门禁统一留到阶段 7。
  • 未验证外部第三方 Chat API consumer;L4 变更不提供兼容分支,外部消费者必须同步迁移到 named-event SSE。

Migration and Rollback

  • 部署必须将后端 SSE endpoint 与 bundled frontend consumer 作为同一版本原子发布。
  • 回滚必须同时回滚 Controller 和 frontend 到阶段 6A commit;V012 additive nullable migration 可保留。
  • 不允许通过恢复 /api/chat_stream、同步 JSON consumer 或旧 message wrapper 形成双轨兼容。

Remaining Work

  • 阶段 7:物理删除旧 Agent/Graph/Hook/ThreadLocal/ChatService 路径和过时测试,更新文档并完成最终 live E2E、日志与数据库核验。

Archive

  • .archive-ready: created
  • OpenSpec archive: openspec/changes/archive/2026-07-22-single-react-chat-sse-cutover
  • Main spec sync: openspec/specs/single-react-chat-sse-cutover/spec.md (10 requirements added)