Files
SuperBizAgent-java/devflow/projects/2026-06-30-session-dedup-knowledge-map/acceptance.md
T

3.4 KiB
Raw Blame History

Acceptance: session-dedup-knowledge-map

静态验证

项目 结果 说明
编译检查 PASS mvn compile -q exit code 0,所有 17 个变更文件无编译错误
代码结构检查 PASS 6 个新文件(RetrievedDocTracker, DocumentFieldEnricher, KnowledgeDomainService, KnowledgeDomain, KnowledgeDomainRepository, V009 迁移)均存在且路径正确
Prompt 外部化 PASS doc-field-enricher-prompt.md 和 domain-summary-prompt.md 位于 src/main/resources/prompts/,Java 代码通过 @PostConstruct + ClassPathResource 加载
Flyway 迁移脚本 PASS V009__add_knowledge_domain.sql 存在,表结构完整
DTO 字段 PASS Frontmatter / KnowledgeEntry / LookupResult 新增字段均已添加
解析器扩展 PASS FrontmatterParser 解析 covers 和 when_to_retrieve
Jackson 替换 PASS KnowledgeIndexService 不再包含 extractJsonValue/extractJsonArray,改用 objectMapper.readValue
Prompt 检索规则 PASS chat-planner-prompt.md 新增"知识库检索规则"区块(4 条规则)

脚本验证

项目 结果 说明
单元测试 未运行 项目当前无针对本 change 的单元测试
集成测试 未运行 需启动应用 + Milvus + MySQL 验证完整链路

浏览器/人工验证

项目 结果 说明
V009 迁移 PASS Flyway 日志:Successfully applied 1 migration to schema superbiz_agent, now at version v009
knowledge_domain 表数据 PASS 4 个域全部 LLM 生成 when_to_retrieve 成功(api/domain/infrastructure/troubleshooting),内容包含跨域边界引用
knowledge map 注入 Planner PASS 多 Agent 路径正常触发 Supervisor → chat_planner → chat_executor,Planner 能按域做检索规划
session 级去重 PASS 两个 session 均验证去重生效:session 7c517329 去 4 次重拦截,session 9693b9fb 6 次去重拦截
LLM 字段生成 未验证 需上传新文档后检查 metadata JSON 中是否包含 covers 和 whenToRetrieve

未验证项

项目 风险 建议补验步骤
LLM 字段生成 中 — 依赖外部 LLM 服务 上传新文档,检查 metadata JSON 中是否包含 covers 和 whenToRetrieve

启动问题修复

问题 修复 状态
@PostConstruct 中调用 knowledgeDomainService.onDocumentChange() 导致循环依赖 将域级生成从 @PostConstruct 移到 @EventListener(ApplicationReadyEvent.class) 已修复,编译通过

任务完成状态

14/14 任务全部完成 (T1-1 ~ T6-2)。

遗留问题

ISS-002:Executor 无约束重复调用 lookup_knowledge(单会话 20+ 次),knowledge map 和检索约束只注入了 Planner 未注入 Executor。详见 mvp/issues/archived/ISS-002-executor-unconstrained-lookup.md。

已知限制

  1. RetrievedDocTracker 为 JVM 内存存储:应用重启后去重状态丢失,同一会话内重启无法继续去重(可接受,会话通常短于重启间隔)
  2. Planner 只看域级 when_to_retrieve:文档级细粒度筛选留 Phase 2
  3. 文档级 prompt 依赖同域其他文档:首个上传到某域的文档无法获得同域参照(此时 prompt 输出"无同域其他文档")
  4. 域级 prompt 依赖其他域已入库:首次启动且 DB 为空时,其他域信息从 L0 索引 category 列表兜底