- KnowledgeIndexService: 域级生成从 @PostConstruct 移到 @EventListener(ApplicationReadyEvent),解决 KnowledgeIndexService ↔ KnowledgeDomainService 循环依赖 - devflow 归档: evidence.md + acceptance.md(含运行验证结果) - devflow/index.md: session-dedup-knowledge-map 状态改为 archived - openspec .archive-ready 标记 - mvp/issues/ISS-002: Executor 无约束重复调用 lookup_knowledge
59 lines
3.4 KiB
Markdown
59 lines
3.4 KiB
Markdown
# 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/ISS-002-executor-unconstrained-lookup.md`。
|
||
|
||
## 已知限制
|
||
|
||
1. **RetrievedDocTracker 为 JVM 内存存储**:应用重启后去重状态丢失,同一会话内重启无法继续去重(可接受,会话通常短于重启间隔)
|
||
2. **Planner 只看域级 when_to_retrieve**:文档级细粒度筛选留 Phase 2
|
||
3. **文档级 prompt 依赖同域其他文档**:首个上传到某域的文档无法获得同域参照(此时 prompt 输出"无同域其他文档")
|
||
4. **域级 prompt 依赖其他域已入库**:首次启动且 DB 为空时,其他域信息从 L0 索引 category 列表兜底
|