Commit Graph
45 Commits
Author SHA1 Message Date
aruo ed267d753d feat: add aiops lightweight verifier 2026-07-05 13:44:30 +08:00
aruo 2658742119 docs: archive rag and aiops query changes 2026-07-05 13:12:47 +08:00
aruo 72a3dbf8c5 feat: add aiops payload query augmentation 2026-07-05 12:56:20 +08:00
aruo 674dd27a48 feat: add rag post-reindex acceptance 2026-07-05 12:29:24 +08:00
aruo 5c71f5fc79 feat: integrate spring ai vectorstore fallback 2026-07-05 10:20:29 +08:00
aruo b9ec07de57 feat: add spring ai retrieval sidecar 2026-07-05 03:22:03 +08:00
aruo 5197712719 feat: add rag evidence postprocess blocks 2026-07-05 03:03:18 +08:00
aruo 4a94c14feb feat: treat l0 retrieval as domain hint 2026-07-05 02:18:40 +08:00
aruo 9a2a44d1b5 test: add rag retrieval baseline 2026-07-05 02:02:27 +08:00
aruo 79feed3314 Merge branch 'emdash/shy-items-fry-f4zze' into refactor/mvp1.0
# Conflicts:
#	mvp/issues/README.md
2026-07-05 01:42:42 +08:00
aruo 26e12a8d6b Archive MVP demo interview runbook 2026-07-05 01:34:04 +08:00
aruo cbef3ddd3c Add MVP demo interview runbook 2026-07-05 01:25:20 +08:00
aruo 69deb15330 Add diagnosis eval baseline diff 2026-07-05 00:59:53 +08:00
aruo 4c7c53b024 Expand diagnosis eval fixtures 2026-07-05 00:27:57 +08:00
aruo ca5c61fabf Add diagnosis eval harness 2026-07-04 23:51:43 +08:00
aruo 23ee05c7c3 feat: add traceable scoped AIOps diagnosis 2026-07-04 22:57:28 +08:00
aruo dc6cd32a67 Harden evidence trace semantics 2026-07-04 22:36:30 +08:00
zhuyongxin 6919092b83 feat: archive mvp demo trace acceptance 2026-07-03 16:25:00 +08:00
zhuyongxin 9050487307 feat: add chat verifier agent 2026-07-03 10:54:33 +08:00
zhuyongxin 4f5316d473 chore(cleanup): 清理临时文件和已归档标记
- .gitignore 添加 *.stackdump 和 NUL 规则
- 移除 bash.exe.stackdump 跟踪
- 移除已归档的 .archive-ready 旧标记
2026-07-01 18:32:12 +08:00
zhuyongxin a1c896ebda chore(docs): 归档 ISS-001 session-dedup-knowledge-map + ISS-002 mvp 文档
- 移动 session-dedup-knowledge-map OpenSpec 到 archive 目录
- 提交 ISS-001 遗留的 devflow 档案文件
- 更新 ISS-002 状态为已修复
- 新增 mvp/architecture/action-memory-relevance.md 设计文档
- 更新 mvp/README.md 文档导航
- 更新 devflow/index.md OpenSpec 链接指向 archive
2026-07-01 18:27:04 +08:00
zhuyongxin e438df4355 feat(knowledge): Executor 行动记忆 + 归一化质量等级解决 ISS-002 重复检索
- RetrievedDocTracker 升级为域级+文档级双层记录(Map<sessionId, Map<domain, Set<filePath>>>)
- LookupKnowledgeTool 新增 Min-Max 归一化层(BGE-M3 L2 距离→[0,1] similarity)
- 三等级 relevanceLevel:PRECISE / HIGHLY_RELEVANT / REFERENCE + completenessHint 兜底信号
- LookupResult 新增 relevanceLevel、completenessHint、retrievedDomainsThisSession
- Executor prompt 重写:4 条检索约束 + 合法出口不查全不追责,重复检索才惩罚
- 入库可观测性:V010 迁移 + retrieval_details JSON 扩展
- 归档 executor-action-memory-relevance change
2026-07-01 18:24:41 +08:00
zhuyongxin e4f37cb9e6 fix(knowledge): 修复循环依赖 + 归档 session-dedup-knowledge-map + 记录 ISS-002
- 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
2026-07-01 14:26:59 +08:00
zhuyongxin 2a796da490 feat(feedback): 置信度评分与用户反馈机制 & 归档 confidence-feedback change 2026-06-30 18:01:06 +08:00
zhuyongxin 3ffa5cc366 Merge branch 'emdash/afraid-geese-carry-h5718' into refactor/mvp1.0
# Conflicts:
#	devflow/index.md
2026-06-26 17:36:59 +08:00
zhuyongxin e3f20b1f06 chore: 归档 session-storage change
- 创建 devflow 项目档案(brief/evidence/decisions/acceptance)
- 更新 devflow/index.md 索引
- 移动 OpenSpec 到 archive
2026-06-26 17:33:56 +08:00
zhuyongxin 0d9cce75f9 feat(session): 会话存储体系实现 & Chat多Agent路由
- 新增诊断会话(diagnosis_session/agent_step/tool_invocation)三表
- AgentLoggingHook 持久化 agent_step,记录决策链和耗时
- LookupKnowledgeTool 写入 tool_invocation,记录L0/L1检索质量
- TokenTrackingChatModel 捕获真实token用量
- Chat接口支持意图路由:简单问题单Agent,复杂问题多Agent(Planner+Executor)
- Prompt外置到 src/main/resources/prompts/
- 删除旧 diagnosis_record 表及相关文件
- 新增SessionContextHolder(ThreadLocal传递sessionId)
- QuestionComplexity 复杂度判断工具
- 测试覆盖三张新表的Repository
2026-06-26 16:22:05 +08:00
zhuyongxin 92ab8d27ee feat(doc-management): 添加文档管理前端页面
- 新增 documents.html 文档管理页面
  - 文档列表展示(支持筛选和分页)
  - 文档上传功能(带元信息表单)
  - 文档详情查看(右侧滑出面板)
  - 文档删除功能
  - 状态统计卡片(待处理/处理中/已索引/失败)

- 新增 documents.css 和 documents.js
  - 纯静态页面实现,无需额外框架
  - 与现有 index.html 保持一致的设计风格
  - 修复列表滚动问题(覆盖 body overflow 设置)
  - 修复时间字段显示 NaN 问题(增加 Invalid Date 检查)

- 在 index.html 侧边栏添加文档管理入口

- 归档项目文档到 devflow 和 openspec
  - devflow/projects/2026-06-25-doc-management-ui/
  - openspec/changes/doc-management-ui/
  - 更新 devflow/index.md
2026-06-25 15:05:48 +08:00
zhuyongxin d6229f3385 feat(knowledge): 完成 L0+L1 混合检索集成
核心功能:
- 新增 FrontmatterParser 解析 YAML frontmatter
- 新增 KnowledgeIndexService L0 内存索引
- 新增 LookupKnowledgeTool 混合检索工具
- 增强 DocumentManagementService 文件保存和索引同步

技术实现:
- 数据库迁移 V004: api_document.metadata (TEXT)
- 依赖新增: snakeyaml 2.0
- 配置新增: knowledge.base-path
- 可观测性: requestId 追踪 + 性能日志

质量保证:
- 单元测试: 31/31 通过
- 测试覆盖: FrontmatterParser(11), KnowledgeIndexService(13), LookupKnowledgeTool(7)
- 启动验证: L0 索引正常加载

归档文档:
- OpenSpec: openspec/changes/lookup-knowledge-integration/
- devflow 档案: devflow/projects/2026-06-24-lookup-knowledge-integration/
- handoff: handoff/2026-06-24-lookup-knowledge-integration.md
2026-06-24 16:07:10 +08:00
zhuyongxin c86045b33f archive: Phase 1 基础设施搭建归档
归档信息:
- 变更名称:phase-1-infrastructure
- 工作流:spec-driven
- 归档位置:openspec/changes/archive/2026-06-23-phase-1-infrastructure/

完成情况:
- ✅ 所有产物完成(proposal, design, specs, tasks)
- ✅ 任务完成:33/35 (94%)
- ⚠️ 2 个任务跳过(混合检索、集成测试,有充分理由)

验收结果:
- ✅ 静态验证:编译通过
- ✅ 脚本验证:16/16 单元测试通过
- ✅ 端到端验证:上传→索引→检索→删除完整流程

Delta Specs:
- 跳过同步(用户选择)
- functional-specs.md 保留在归档目录中

devflow 档案:
- ✅ 已完整回填(brief, evidence, decisions, acceptance)
- ✅ devflow/index.md 状态更新为 archived
2026-06-23 19:20:05 +08:00
zhuyongxin ded74f8dac docs(phase1): Phase 1 验证报告和最终归档
验证结果:
- ✅ Milvus 连接测试:Status Code 0,集群正常
- ✅ MySQL Repository 测试:7/7 通过
- ✅ Redis 会话管理测试:8/8 通过
- ✅ 编译验证:BUILD SUCCESS
- ✅ Git 状态:Working tree clean

任务完成情况:
- 核心任务:32/34 完成 (94%)
- 跳过任务:2 个(有充分理由)
  - 混合检索:会降低准确率
  - 集成测试:单元测试已覆盖

增强功能(超预期):
- ✅ 类别过滤检索系统
  - 文件索引:自动从路径提取类别
  - 用户上传:接口参数指定类别
  - 检索过滤:Milvus expr 过滤
- ✅ 完整的类别管理流程

核心能力:
1. 数据持久化(MySQL + JPA + Flyway)
2. 会话管理(Redis)
3. 文档管理(上传、查询、删除)
4. 向量检索(Milvus 语义相似度)
5. 分类检索(按类别过滤)
6. 智能分块(基于标题和段落)
7. 异常处理(GlobalExceptionHandler)
8. 容器化部署(Docker Compose)

提交统计:12 个功能提交
文件统计:实体 3 个、Repository 3 个、Service 6+、Controller 2 个、DTO 7 个

验证结论:✅ Phase 1 可以归档,进入 Phase 2
2026-06-23 17:19:02 +08:00
zhuyongxin 4ef8d87961 feat(phase1): 实现文档分块向量化索引
Task 5.6: 向量化索引实现
- VectorIndexService 新增方法:
  - indexDocumentChunks(docId, chunks): 索引文档分块到 Milvus
  - deleteDocumentChunks(docId): 删除文档的所有向量
  - buildDocumentMetadata(): 构建文档元数据(区分文件索引)

核心流程:
1. 上传时:文本提取 → 分块 → 向量化 → 存入 Milvus + MySQL
2. 检索时:问题向量化 → Milvus 语义检索 → 返回相似文档
3. 删除时:删除元数据 + 删除向量索引

实现细节:
- 复用 indexSingleFile 的向量化逻辑
- metadata.docId 标识文档来源(区分 upload: 和 file:)
- 删除表达式:metadata["docId"] == "xxx"
- 自动去重:上传前删除旧向量数据

DocumentManagementService 完整实现:
- uploadDocument: 完整向量化流程(移除 TODO)
- deleteDocument: 同步删除向量索引(移除 TODO)

编译验证:BUILD SUCCESS

Progress: 32/34 tasks completed (94%)
2026-06-23 16:08:50 +08:00
zhuyongxin 26aaf149d8 feat(phase1): 完成全局完善和基础设施文档
Task 6.1: 统一异常处理
- 创建 GlobalExceptionHandler:Spring 全局异常拦截器
  - SessionNotFoundException: 404 会话未找到
  - DocumentProcessException: 400 文档处理异常
  - MaxUploadSizeExceededException: 400 文件大小超限
  - IllegalArgumentException: 400 参数错误
  - Exception: 500 系统异常兜底
- 统一响应格式:Result<T> + HTTP 状态码

Task 6.2: Docker Compose 配置
- 创建 docker-compose.yml:本地开发环境一键启动
  - MySQL 8.0: 数据持久化,端口 3306
  - Redis 7: 会话缓存,端口 6379
  - Milvus Standalone: 向量索引,端口 19530
    - etcd: 元数据存储
    - MinIO: 对象存储
- 数据卷持久化:mysql-data, redis-data, milvus-data
- 健康检查:自动重启机制

Task 6.3: 更新 README.md
- 新增 Phase 1 专属章节:
  - 架构概览(已完成功能清单)
  - 本地开发环境(前置要求、快速开始)
  - 数据库迁移(Flyway 脚本说明)
  - API 文档(文档管理接口示例)
  - 项目结构(分层架构说明)
  - 待办事项(向量化索引、混合检索)
  - 技术决策(包名重构、文本格式、分块策略)

编译验证:BUILD SUCCESS

Progress: 31/33 tasks completed (94%)
2026-06-23 15:50:47 +08:00
zhuyongxin e76d4ce48f feat(phase1): 完成文档查询和删除接口
Task 5.4: 文档查询接口
- DocumentManagementService 新增查询方法:
  - queryDocumentById: 根据 docId 查询单个文档
  - queryDocumentsByStatus: 根据状态查询(分页)
  - queryDocumentsByFaultSource: 根据故障源查询
  - convertToResponse: 实体转 DTO 工具方法
- DocumentController 新增 RESTful 接口:
  - GET /api/documents/{docId}
  - GET /api/documents/status/{status}?page=0&size=20
  - GET /api/documents/faultSource/{faultSource}

Task 5.5: 文档删除接口
- DocumentManagementService 新增删除方法:
  - deleteDocument: 删除文档元数据
  - TODO: 向量索引删除待实现
- DocumentController 新增删除接口:
  - DELETE /api/documents/{docId}

功能特性:
- 统一异常处理:DocumentProcessException
- 统一响应格式:Result<T>
- 分页支持:Page/PageRequest
- 事务支持:@Transactional

编译验证:BUILD SUCCESS

Progress: 28/33 tasks completed (85%)
2026-06-23 15:48:04 +08:00
zhuyongxin f446290d0f feat(phase1): 完成文档上传接口
Task 5.3: 文档上传接口
- 创建 DocumentManagementService:文档上传核心逻辑
  - 文件格式验证(仅 .md/.txt)
  - 文件 hash 计算与去重检查
  - 文本提取与分块处理
  - 文档元数据持久化(ApiDocument)
  - 向量化索引标记为 TODO(待补充)
- 创建 DocumentController:RESTful 上传接口
  - POST /api/documents/upload
  - 支持参数:file, faultCategory, faultSource, apiName, version
  - 返回:文档 docId

功能特性:
- MD5 hash 去重:防止重复上传
- 事务支持:元数据与索引状态一致性
- 异常处理:DocumentProcessException 统一封装
- 分块配置:使用 DocumentChunkConfig 默认配置

待补充:
- TODO: VectorIndexService.indexDocumentChunks() 实现
- 当前文档状态直接标记为 INDEXED

编译验证:BUILD SUCCESS

Progress: 26/33 tasks completed (79%)
2026-06-23 15:28:02 +08:00
zhuyongxin ea77518880 feat(phase1): 完成文本提取和文档分块服务
Task 5.1: TextExtractor 服务
- 创建 TextExtractorService(仅支持 .md 和 .txt)
- 其他格式(.docx、.pdf)需通过外部转换服务先转为 Markdown
- 支持 UTF-8 编码的纯文本提取
- 提供文件格式验证方法

Task 5.2: 文档分块服务适配
- 修改 DocumentChunk DTO:添加 @Builder 支持
- 字段重命名:startIndex/endIndex → startOffset/endOffset
- 修复 DocumentChunkService 中的三处构造调用
- 使用 builder 模式替代构造函数

技术决策:
- 简化文本提取,只支持 Markdown 和纯文本
- 复杂格式转换由外部服务处理(分离关注点)
- 统一使用 Lombok @Builder 简化对象构建

编译验证:BUILD SUCCESS

Progress: 25/33 tasks completed (76%)
2026-06-23 15:15:10 +08:00
zhuyongxin 360e4febae feat(phase1): 完成分层结构优化和 DTO 创建
Task 4.2: 分层结构优化
- 创建 exception 包
  - SessionNotFoundException: 会话未找到异常
  - DocumentProcessException: 文档处理异常
- 已有分层结构验证
  - controller: 控制器层 ✅
  - service: 业务逻辑层 ✅
  - repository: 数据访问层 ✅
  - domain: 领域模型层 (entity/model/enums) ✅
  - config: 配置层 ✅
  - tool: 工具类 ✅

Task 4.3: 创建 DTO 类
- DiagnosisRequest: 诊断请求 DTO (10 个字段)
- DiagnosisResponse: 诊断响应 DTO (12 个字段 + 内部类)
- DocumentUploadRequest: 文档上传请求 DTO (7 个字段)
- DocumentQueryResponse: 文档查询响应 DTO (11 个字段 + 内部类)
- Result<T>: 统一响应结果 DTO (泛型包装)

功能特性:
- 异常类支持自定义错误信息和原因链
- DTO 使用 Lombok 简化代码
- Result 提供静态工厂方法(success/error)
- DocumentUploadRequest 支持 MultipartFile
- Response DTO 支持嵌套数据结构

编译验证:BUILD SUCCESS

Progress: 23/33 tasks completed (70%)
2026-06-23 15:02:38 +08:00
zhuyongxin c3a232540a refactor(phase1): 完成包名重构 (org.example → com.superbiz.agent)
Task 4.1: 包名统一重构
- 重命名 41 个 Java 文件的包名
- 更新所有 import 语句
- 恢复枚举类(FaultCategory、DiagnosisStatus、SourceType)
- 更新测试类的 import

重构范围:
- domain/entity: 3 个实体类
- domain/model: 2 个数据类
- domain/enums: 3 个枚举类
- repository: 3 个接口
- service/session: 2 个类(接口 + 实现)
- config: 9 个配置类
- controller: 2 个控制器
- agent/tool: 4 个工具类
- client: 1 个客户端
- Main.java: 主类

验证结果:
- 编译成功,无错误
- 所有测试通过 (27/27)
  - ApiDocumentRepositoryTest: 7/7 ✅
  - CaseLibraryRepositoryTest: 6/6 ✅
  - DiagnosisRecordRepositoryTest: 6/6 ✅
  - RedisSessionManagerTest: 8/8 ✅

Progress: 21/33 tasks completed (64%)
2026-06-23 14:56:04 +08:00
zhuyongxin 48132d297d feat(phase1): 完成 Repository 测试和 Redis 会话管理
Task 2: 完成 Repository 层测试
- 实现 CaseLibraryRepositoryTest (6 个测试)
- 实现 ApiDocumentRepositoryTest (7 个测试)
- 所有 Repository 测试通过 (19/19)

Task 3: 完成 Redis 会话管理
- 创建 SessionContext 和 ToolCall 数据类
- 创建 SessionManager 接口
- 实现 RedisSessionManager (基于 Redis 的会话管理)
- 创建 SessionConfiguration (Redis 序列化配置)
- 实现 RedisSessionManagerTest (8 个测试全部通过)

测试结果:
- ApiDocumentRepositoryTest: 7/7 通过
- CaseLibraryRepositoryTest: 6/6 通过
- DiagnosisRecordRepositoryTest: 6/6 通过
- RedisSessionManagerTest: 8/8 通过
- 总计: 27/27 测试通过

功能特性:
- 会话创建、查询、更新、删除
- 会话过期时间管理
- 工具调用记录追踪
- 会话状态管理
- 基于 Redis 的分布式会话存储

Progress: 20/33 tasks completed (61%)
2026-06-23 14:38:17 +08:00
zhuyongxin 1de1e98ef8 feat(phase1): 完成 JPA 实体类和 Repository 层实现
- 创建 3 个 JPA 实体类:DiagnosisRecord、CaseLibrary、ApiDocument
- 创建 3 个 Repository 接口,实现基础 CRUD 和自定义查询方法
- 实现 DiagnosisRecordRepository 单元测试(6 个测试全部通过)
- 修复 Hibernate schema 验证问题(枚举类型使用 VARCHAR)
- 更新 application.yml,添加完整的数据库和 Redis 配置
- 更新 OpenSpec tasks.md,标记已完成任务(12/33)

测试结果:
- DiagnosisRecordRepositoryTest: 6/6 通过
- 编译成功,无错误

Progress: 12/33 tasks completed
2026-06-23 14:30:35 +08:00
zhuyongxin 60be51f4a5 docs: 重构文档结构,分离学习笔记和 MVP 架构设计
**变更概述:**
- 将 MVP 架构设计文档独立到项目根目录 `mvp/`
- 整理 `docs/` 为纯学习和分析文档目录
- 按类型分类:learning(学习)、analysis(分析)、reports(报告)、guides(指南)

**目录结构:**
```
mvp/                          # MVP 架构设计(独立)
├── README.md                 # 数据库设计总览
├── architecture/             # 架构文档
│   ├── agent-architecture-mvp.md
│   ├── implementation-plan.md
│   └── ...
└── tables/                   # 数据表设计

docs/                         # 学习和分析文档
├── learning/                 # 学习笔记(00-08 编号)
├── analysis/                 # 分析笔记 + 重构计划
├── reports/                  # 临时报告
└── guides/                   # 指南文档
```

**详细变更:**
- docs/README.md → mvp/README.md(数据库设计入口)
- docs/architecture/ → mvp/architecture/(架构设计)
- docs/tables/ → mvp/tables/(数据表设计)
- docs/学习笔记-*.md → docs/learning/07-*.md, 08-*.md
- docs/项目学习路径.md → docs/learning/00-*.md
- docs/功能分析报告.md → docs/analysis/
- docs/修复报告-*.md → docs/reports/
- docs/日志配置*.md → docs/guides/ 或 docs/reports/
- docs/design/ → docs/analysis/(问题分析和重构计划)
2026-06-23 14:14:51 +08:00
zhuyongxin caef477cec Merge branch 'emdash/lemon-shrimps-bake-7q6xl' into refactor/rag-chunking-strategy
# Conflicts:
#	AGENTS.md
#	CLAUDE.md
#	src/main/resources/application.yml
2026-06-23 11:06:34 +08:00
zhuyongxin 3f15778b28 docs: 添加 Phase 1 完整实施计划和 OpenSpec
- 添加项目级 CLAUDE.md 和 AGENTS.md 配置
- 添加完整实施计划(docs/architecture/implementation-detail.md)
- 创建 OpenSpec phase-1-infrastructure:
  - proposal.md: 需求和方案
  - design.md: 架构设计
  - specs/functional-specs.md: 功能规格
  - tasks.md: 21 个任务清单
  - decisions.md: grill 阶段决策记录
  - .commit: 标记为 Committed OpenSpec

OpenSpec 已通过 sm-flow 完整流程(clarify → context → propose → grill → specify → audit → commit)
2026-06-23 10:58:11 +08:00
aruo ac08345369 commit 2026-05-31 21:45:14 +08:00
zhuyongxin d4b5015beb commit 2026-05-29 21:38:16 +08:00