1.6 KiB
1.6 KiB
Brief: single-react-chat-sse-cutover
Background
阶段 6A 已建立 protocol-neutral ChatApplicationUseCase,但公开 Chat 仍有同步 /api/chat 和伪流式 /api/chat_stream 两条旧链路,Controller 直接拥有模型、Tools、Session 历史和无界线程池,前端也保留两套消费者。
Goal
将公开 Chat 原子切换为唯一 POST /api/chat named-event SSE,并让 Controller 只承担校验、HTTP/SSE 和连接生命周期;所有公开内容必须来自阶段 6A 的安全释放结果。
Scope
- 唯一
/api/chatSSE 与metadata -> status* -> content|failure -> done状态机。 - exact Run disconnect/timeout/send-failure cancellation。
- Spring-managed bounded Chat/model executors 和完整 Harness production Bean graph。
- 前端唯一 named-event consumer、typed renderer 和 metadata identity 保存。
- AiOps 模型/Tool acquisition 下沉到 service,并将 AiOps/Session endpoint 从 Chat Controller 职责中隔离。
- L4 前后端迁移、成对回滚和 focused regression。
Non-goals
- 不做 Token streaming、最终答案切片、断线续传、事件重放、轮询或 WebSocket。
- 不修改
/api/ai_ops的公开 URL、请求和 SSE message-wrapper 行为。 - 不在本阶段物理删除旧多 Agent、ChatService、Hook 或 ThreadLocal;阶段 7 统一清理。
- 不运行 live 模型、Redis、日志或 MySQL E2E;阶段 7 统一验收。
Metadata
- Scale: complex
- Interface impact: L4 breaking HTTP/frontend contract
- OpenSpec:
single-react-chat-sse-cutover - Parent issue:
ISS-014