Part of #440
背景
/research(Deep Research)在 #440 规划中移出 P0(A3 决策)。它是唯一一个异步 / SSE / 多步 LLM / 有成本 / 需 job 生命周期的端点,与其余 9 个同步只读端点本质不同。硬塞进同一套 key/scope/SSE 鉴权是凑合,因此作为独立议题单独设计。
底层能力已存在:WikiResearchService.research()(3 阶段流水线:规划→检索+起草→组合),通过 SSE 广播事件。
需要单独设计的内容
限流 + 计费
Job 生命周期管理
SSE 鉴权(R7)
接口草案
POST /api/v1/open/kb/{kbId}/research 启动(返回 sessionId)
GET /api/v1/open/kb/{kbId}/research/{id}/stream SSE 事件流
GET /api/v1/open/kb/{kbId}/research/{id}/status 状态查询
POST /api/v1/open/kb/{kbId}/research/{id}/cancel 取消
优先级
P1.5——在 P0(#441 + #442)完成并验证后推进。不阻塞 P0 上线。
Part of #440
背景
/research(Deep Research)在 #440 规划中移出 P0(A3 决策)。它是唯一一个异步 / SSE / 多步 LLM / 有成本 / 需 job 生命周期的端点,与其余 9 个同步只读端点本质不同。硬塞进同一套 key/scope/SSE 鉴权是凑合,因此作为独立议题单独设计。底层能力已存在:
WikiResearchService.research()(3 阶段流水线:规划→检索+起草→组合),通过 SSE 广播事件。需要单独设计的内容
限流 + 计费
TokenUsageService记录完整 token 消耗Job 生命周期管理
WikiResearchService的 session 查询/取消机制需要在开放 API 中暴露GET /research/{sessionId}/status)POST /research/{sessionId}/cancel)SSE 鉴权(R7)
EventSource不支持自定义 Header(不能设Authorization: Bearer)?token=mck_xxx,参照现有 JwtAuthFilter 的 SSE query param 模式)接口草案
优先级
P1.5——在 P0(#441 + #442)完成并验证后推进。不阻塞 P0 上线。