Part of #440,依赖 #441(P0-A 认证骨架)
目标
在 P0-A 认证骨架之上,实现 9 个知识库开放 API 端点。一次上线冻结对外契约。
端点清单
| # |
方法 |
路径 |
Scope |
底层方法 |
改造 |
| 1 |
GET |
/kb/{kbId}/pages/{slug} |
kb:read |
WikiPageService.getBySlug() |
🔧 新增 mode(summary/full/section) |
| 2 |
POST |
/kb/{kbId}/search |
kb:search |
HybridRetriever.search() |
🔧 granularity 后处理 |
| 3 |
POST |
/kb/{kbId}/search/chunks |
kb:search |
HybridRetriever.searchChunks() |
直接调用 |
| 4 |
POST |
/kb/{kbId}/pages/{slug}/traverse |
kb:read |
🔧 WikiEntityGraphService.traverse() |
新增 |
| 5 |
GET |
/kb/{kbId}/pages/{slug}/trace |
kb:read |
PageCitationMapper.listWithRawByPageId() |
直接调用 |
| 6 |
GET |
/kb/{kbId}/taxonomy |
kb:list |
🔧 分组统计组装 |
新增 |
| 7 |
GET |
/kb/{kbId}/whats-new |
kb:meta |
findRecentUpdated() + stale |
组合 |
| 8 |
GET |
/kb/{kbId}/stats |
kb:meta |
🔧 KbStatsDto 标准化 |
新增 |
| 9 |
GET |
/kb/{kbId}/pages |
kb:list |
WikiPageService.listByKbId() |
直接调用 |
需要新增/改造的底层 service
| 组件 |
说明 |
WikiPageService mode 参数 |
summary(摘要+fields)/ full(全文)/ section:{heading}(切片) |
WikiEntityGraphService.traverse() |
按 predicate/depth≤2/direction 遍历,slug→entityId 映射,回显 primaryEntity(R11) |
KbStatsDto + 组装 |
结构化统计 JSON |
get_taxonomy 组装 |
pageType/entityType/relationType 分组统计 |
whats_new 组装 |
findRecentUpdated + stale 页面查询 |
架构约束(A5/A6)
- A5:响应一律显式 DTO,绝不直接序列化实体(IDOR/字段泄露硬约束)
- A6:service 层不耦合 HTTP 类型(
HttpServletRequest/R<T> 不漏进 service),为 P2 MCP 留钩子
traverse 设计要点(务实版)
- depth ≤ 2(防爆炸),predicate LIKE 模糊匹配
- slug → pageId → mention → primaryEntity(salience 最高)
- 邻居节点回显 slug(如有页面)
- 边溯源:evidenceChunkId → sourceHandle
- 配合 get_taxonomy:Agent 先查精确 predicate 再传 traverse
不含
/research(异步/SSE,→ #子任务3 P1.5)
- 前端管理 UI(→ P1)
Part of #440,依赖 #441(P0-A 认证骨架)
目标
在 P0-A 认证骨架之上,实现 9 个知识库开放 API 端点。一次上线冻结对外契约。
端点清单
/kb/{kbId}/pages/{slug}WikiPageService.getBySlug()/kb/{kbId}/searchHybridRetriever.search()/kb/{kbId}/search/chunksHybridRetriever.searchChunks()/kb/{kbId}/pages/{slug}/traverseWikiEntityGraphService.traverse()/kb/{kbId}/pages/{slug}/tracePageCitationMapper.listWithRawByPageId()/kb/{kbId}/taxonomy/kb/{kbId}/whats-newfindRecentUpdated()+ stale/kb/{kbId}/statsKbStatsDto标准化/kb/{kbId}/pagesWikiPageService.listByKbId()需要新增/改造的底层 service
WikiPageServicemode 参数WikiEntityGraphService.traverse()KbStatsDto+ 组装get_taxonomy组装whats_new组装架构约束(A5/A6)
HttpServletRequest/R<T>不漏进 service),为 P2 MCP 留钩子traverse 设计要点(务实版)
不含
/research(异步/SSE,→ #子任务3 P1.5)