Files
SuperBizAgent-java/mvp/architecture/archive/2026-07-05-legacy/implementation-detail.md

716 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SuperBizAgent MVP 完整实施计划(AI 执行)
## 协作分工
```
用户角色:规划者 + 验证者 + 架构师
AI 角色: 执行者 + 编码者 + 记录者
用户负责:
├─ 确认架构设计
├─ 验收每个阶段产出
├─ 调整优先级和方向
└─ 最终验收和部署决策
AI 负责:
├─ 编写全部代码
├─ 编写全部测试
├─ 执行测试验证
├─ 记录实施过程
├─ 遇到问题提出方案供用户决策
└─ 自动化构建和本地验证
```
---
## 总览:3 个 Phase,13 天
```
Phase 1: 基础设施(5天)
├─ Day 1-2: 数据库 + 实体 + 会话管理
├─ Day 3: 代码结构重构
└─ Day 4-5: 文档管理(CRUD + Milvus)
Phase 2: 核心功能(5天)
├─ Day 6-7: 意图识别 + RAG 两层加载
├─ Day 8-9: 4 Agent 协作 + Skill
└─ Day 10: 工具层开发
Phase 3: 闭环优化(3天)
├─ Day 11: Verifier + Harness
├─ Day 12: 反馈机制 + 案例沉淀
└─ Day 13: 端到端测试 + 验收
```
---
## Phase 1:基础设施(5天)
### Day 1-2:数据库 + 实体 + 会话
#### 任务 1.1:MySQL 表结构(Flyway 迁移)
```sql
产出文件:
src/main/resources/db/migration/
├── V001__create_diagnosis_record.sql
├── V002__create_case_library.sql
└── V003__create_api_document.sql
依据文档:
- docs/tables/diagnosis_record.md
- docs/tables/case_library.md
- docs/tables/api_document.md
关键点:
- 使用 Flyway 版本管理
- 索引:trace_id, error_code, fault_category
- JSON 字段:steps_executed, evidence_chain
- 时间字段:created_at, updated_at 自动维护
验收标准:
✓ 执行 mvn flyway:migrate 成功
✓ 3 张表创建成功
✓ 索引完整
✓ 约束正确
```
#### 任务 1.2:JPA 实体类
```java
产出文件:
src/main/java/com/superbiz/agent/domain/entity/
├── DiagnosisRecord.java
├── CaseLibrary.java
└── ApiDocument.java
技术栈:
- Spring Data JPA
- Lombok (@Data, @Builder)
- Hibernate @JdbcTypeCode(SqlTypes.JSON)
验收标准:
✓ 字段与 DDL 一致
✓ 枚举映射正确
✓ JSON 字段序列化正常
✓ 编译通过
```
#### 任务 1.3:Repository 层
```java
产出文件:
src/main/java/com/superbiz/agent/repository/
├── DiagnosisRecordRepository.java
├── CaseLibraryRepository.java
└── ApiDocumentRepository.java
常用查询:
- findByOrderId
- findByTraceId
- findByErrorCodeAndFaultCategory
- findTopByOrderByCreatedAtDesc
验收标准:
✓ 继承 JpaRepository
✓ 单元测试覆盖(@DataJpaTest + H2)
✓ 分页查询正确
```
#### 任务 1.4:Redis 会话管理
```java
产出文件:
src/main/java/com/superbiz/agent/session/
├── SessionManager.java # 接口
├── RedisSessionManager.java # Redis 实现
├── SessionContext.java # 会话上下文
└── SessionConfiguration.java # 配置类
功能:
- 替换内存 HashMap
- TTL:30 分钟
- JSON 序列化(Jackson)
- 按 sessionId 存取删
验收标准:
✓ 单元测试通过
✓ Redis 连接成功
✓ 序列化/反序列化正确
✓ TTL 生效
```
---
### Day 3:代码结构重构
#### 任务 3.1:包名重构
```
重构前:org.example
重构后:com.superbiz.agent
操作:
1. IDEA Refactor → Rename Package
2. 全局搜索替换 import
3. pom.xml 更新 mainClass
验收标准:
✓ 编译通过
✓ 无遗漏的 org.example
✓ 启动成功
```
#### 任务 3.2:分层结构优化
```
目标结构:
src/main/java/com/superbiz/agent/
├── controller/ # REST 接口
├── service/ # 业务逻辑
├── repository/ # 数据访问
├── domain/
│ ├── entity/ # JPA 实体
│ ├── dto/ # 数据传输对象
│ ├── vo/ # 视图对象
│ └── enums/ # 枚举
├── agent/ # Agent 层
│ ├── supervisor/
│ ├── planner/
│ ├── executor/
│ └── verifier/
├── tool/ # 工具层
├── harness/ # Harness 控制
│ ├── gate/
│ └── interrupt/
├── skill/ # Skill 定义
├── session/ # 会话管理
├── intent/ # 意图识别
├── rag/ # RAG 加载
└── config/ # 配置
验收标准:
✓ 目录结构清晰
✓ 职责单一
✓ 编译通过
```
#### 任务 3.3:DTO 抽离
```java
产出文件:
src/main/java/com/superbiz/agent/domain/dto/
├── DiagnosisRequest.java
├── DiagnosisResponse.java
├── DocumentUploadRequest.java
├── CaseQueryRequest.java
└── ...
要求:
- Controller 不直接依赖 Entity
- MapStruct 做对象转换
- 校验注解 @Valid + @NotNull
- 统一响应包装类 Result<T>
验收标准:
✓ Controller 不 import Entity
✓ 原有接口兼容
✓ 编译通过
```
---
### Day 4-5:文档管理
#### 任务 4.1:文档上传
```java
产出文件:
controller/DocumentController.java
service/DocumentService.java
service/TextExtractor.java
service/VectorService.java
接口:POST /api/documents/upload
功能:
1. 接收文件(Word/PDF/Markdown)
2. 提取纯文本
3. 分块(chunk_size=500, overlap=50)
4. 向量化(DashScopeEmbedding)
5. 写 MySQL + Milvus
验收标准:
✓ 上传成功返回 document_id
✓ MySQL 记录正确
✓ Milvus 向量正确
✓ 单元测试覆盖
```
#### 任务 4.2:文档查询
```java
接口:
- GET /api/documents/{id}
- GET /api/documents?province=XX&category=YY
验收标准:
✓ 分页查询
✓ 过滤生效
✓ 性能可接受(< 100ms)
```
#### 任务 4.3:文档删除同步
```java
接口:DELETE /api/documents/{id}
功能:
- 删除 MySQL 记录
- 同步删除 Milvus 向量
- 事务一致性
验收标准:
✓ MySQL + Milvus 同步删除
✓ 事务回滚正确
```
#### 任务 4.4:混合检索实现
```java
产出文件:
tool/DocumentSearchTool.java
策略:
1. 精确匹配(MySQL)
2. 语义检索(Milvus)
3. RRF 融合排序
验收标准:
✓ 精确匹配优先
✓ 语义检索补漏
✓ 返回 Top 3
✓ 单元测试覆盖
```
---
## Phase 2:核心功能(5天)
### Day 6-7:意图识别 + RAG
#### 任务 6.1:意图识别模块
```java
产出文件:
intent/IntentClassifier.java
intent/L0RulesMatcher.java
intent/L1AgentClassifier.java
intent/IntentResult.java
L0 规则匹配:
- 正则:订单号、traceId、错误码
- 关键词:报错、异常、失败
- 返回:诊断/文档/案例/闲聊
L1 小模型 Agent:
- 输入:用户原始输入
- Prompt:分类意图
- 输出:意图 + 置信度
验收标准:
✓ L0 命中率 80%+
✓ L1 准确率 90%+
✓ 延迟 < 200ms
✓ 单元测试覆盖
```
#### 任务 6.2:RAG 两层加载
```java
产出文件:
rag/RagLoader.java
rag/L1PreloadService.java
rag/L2OnDemandService.java
L1 预加载:
- 触发时机:意图识别后,Planner 启动前
- 内容:通用领域知识(架构、流程、高频错误码)
- 注入:Planner System Prompt
L2 按需加载:
- 触发时机:Executor 拿到 errorCode 后
- 内容:具体接口文档
- 调用:searchDoc
验收标准:
✓ L1 预加载成功
✓ L2 按需调用成功
✓ 单元测试覆盖
```
---
### Day 8-9:4 Agent 协作 + Skill
#### 任务 8.1:4 Agent 定义
```java
产出文件:
agent/supervisor/SupervisorAgent.java
agent/planner/PlannerAgent.java
agent/executor/ExecutorAgent.java
agent/verifier/VerifierAgent.java
配置文件:
src/main/resources/prompts/
├── supervisor-system.md
├── planner-system.md
├── executor-system.md
└── verifier-system.md
技术栈:
- Spring AI Alibaba
- SupervisorAgent + ReactAgent
- @Tool 注解
验收标准:
✓ 4 Agent 注册成功
✓ 协作流程跑通
✓ Supervisor 调度正确
```
#### 任务 8.2:Skill 实现
```java
产出文件:
skill/SkillDefinition.java
skill/DiagnoseByOrderIdSkill.java
skill/SkillRegistry.java
工作流(6 步):
1. queryOrder
2. searchDoc (L2 按需)
3. queryLogs (Mock)
4. recommendCase
5. 生成报告
6. Verifier 验证
验收标准:
✓ 6 步流程正确
✓ 失败处理正确(ABORT/SKIP)
✓ 单元测试覆盖
```
---
### Day 10:工具层开发
#### 任务 10.1:queryOrder 工具
```java
产出文件:
tool/QueryOrderTool.java
功能:
- 只读查询 MySQL
- 返回订单信息 + 错误信息
- SQL 注入防护
验收标准:
✓ 查询正确
✓ 超时控制(10s)
✓ 单元测试覆盖
```
#### 任务 10.2:searchDoc 工具
```java
产出文件:
tool/SearchDocTool.java
功能:
- 调用混合检索
- 返回 Top 3 文档片段
验收标准:
✓ 调用成功
✓ 结果格式正确
✓ 单元测试覆盖
```
#### 任务 10.3:recommendCase 工具
```java
产出文件:
tool/RecommendCaseTool.java
功能:
- 精确匹配:error_code + fault_category
- 语义检索:description 向量相似度
- RRF 融合
验收标准:
✓ 推荐准确
✓ 返回 Top 3
✓ 单元测试覆盖
```
#### 任务 10.4:getCurrentTime 工具
```java
产出文件:
tool/GetCurrentTimeTool.java
功能:
- 返回当前时间戳
- 格式化输出
验收标准:
✓ 返回正确
```
---
## Phase 3:闭环优化(3天)
### Day 11:Verifier + Harness
#### 任务 11.1:Verifier Agent
```java
产出文件:
agent/verifier/VerifierAgent.java
验证逻辑:
1. 事实核查(报告数据 vs 工具返回数据)
2. 完整性检查(3 章节不能为空)
判决:
- PASS:通过
- REVISE:需修正
- REJECT:驳回
验收标准:
✓ 事实核查正确
✓ 编造检测生效
✓ 单元测试覆盖
```
#### 任务 11.2:Harness 5 Gates
```java
产出文件:
harness/gate/InputGates.java
harness/gate/ExecutionGates.java
harness/gate/OutputGates.java
门禁清单:
- Gate 1: 输入参数非空
- Gate 2: 5 分钟内重复 → 缓存
- Gate 3: 工具超时(10s)
- Gate 4: 报告完整性
- Gate 5: 置信度阈值(60)
验收标准:
✓ 5 Gates 生效
✓ 中断机制正确
✓ 单元测试覆盖
```
---
### Day 12:反馈机制 + 案例沉淀
#### 任务 12.1:反馈接口
```java
产出文件:
controller/FeedbackController.java
service/FeedbackService.java
接口:POST /api/diagnosis/{id}/feedback
参数:useful / not_useful
功能:
- 更新 diagnosis_record.feedback
- useful → 自动生成 case_library
验收标准:
✓ 反馈记录成功
✓ 案例生成正确
✓ 单元测试覆盖
```
#### 任务 12.2:案例自动生成
```java
产出文件:
service/CaseGenerationService.java
触发条件:
- feedback = useful
- confidence >= 80
生成逻辑:
- 提取关键信息
- 生成 case_library 记录
- 向量化 solution_steps
验收标准:
✓ 案例生成正确
✓ 向量化成功
✓ 单元测试覆盖
```
---
### Day 13:端到端测试 + 验收
#### 任务 13.1:Mock 5 个场景
```
场景 1:外部接口故障(广东社保 40003)
场景 2:内部空指针异常
场景 3:数据库连接超时
场景 4:意图不明(闲聊)
场景 5:缓存命中(重复诊断)
验收标准:
✓ 5 个场景全部跑通
✓ 诊断报告正确
✓ 反馈闭环完整
```
#### 任务 13.2:性能测试
```
指标:
- 诊断延迟 < 10s(P95)
- 意图识别 < 200ms
- 文档检索 < 500ms
- 并发 10 QPS 稳定
验收标准:
✓ 性能达标
✓ 无内存泄漏
✓ 无明显瓶颈
```
#### 任务 13.3:文档更新
```
产出文件:
docs/
├── API.md # 接口文档
├── DEPLOYMENT.md # 部署指南
└── TEST_REPORT.md # 测试报告
验收标准:
✓ 文档完整
✓ 部署可复现
✓ 测试报告详实
```
---
## 测试要求
### 单元测试
```
框架:JUnit 5 + Mockito
覆盖率:
- Repository: 100%
- Service: 80%+
- Tool: 80%+
- Agent: 70%+
- Controller: 70%+
```
### 集成测试
```
框架:@SpringBootTest
覆盖:
- Redis 集成
- MySQL 集成
- Milvus 集成
- Agent 协作
```
### E2E 测试
```
工具:RestAssured
场景:5 个 Mock 场景
```
---
## 实施记录格式
每完成一个任务,AI 在此文档追加:
```markdown
---
## [完成] 任务 X.X:任务名称
**执行时间**:2026-XX-XX HH:mm
**产出文件**:
- path/to/file1.java (126 行)
- path/to/file2.java (89 行)
**关键决策**:
- 决策点:选择方案 A,因为...
- 权衡点:备选方案 B 的劣势是...
**遇到的问题**:
- 问题:XXX
- 解决方案:YYY
- 影响范围:ZZZ
**测试结果**:
✓ 单元测试:8/8 通过
✓ 集成测试:3/3 通过
✓ 代码覆盖率:85%
**验收状态**:⏳ 等待用户确认 / ✅ 已通过
**用户反馈**:(用户确认后填写)
```
---
## 当前进度
```
Phase 1: 基础设施(5天) [ ] 0%
├─ Day 1-2: 数据库 + 实体 [ ] 未开始
├─ Day 3: 代码结构重构 [ ] 未开始
└─ Day 4-5: 文档管理 [ ] 未开始
Phase 2: 核心功能(5天) [ ] 0%
├─ Day 6-7: 意图识别 + RAG [ ] 未开始
├─ Day 8-9: Agent + Skill [ ] 未开始
└─ Day 10: 工具层 [ ] 未开始
Phase 3: 闭环优化(3天) [ ] 0%
├─ Day 11: Verifier + Harness [ ] 未开始
├─ Day 12: 反馈 + 案例 [ ] 未开始
└─ Day 13: E2E 测试 [ ] 未开始
总体进度:0/13 天
```
---
## 下一步
等待用户确认:
1. ✅ 这个完整计划是否符合预期?
2. 有没有需要调整的优先级?
3. 有没有需要增删的任务?
4. 确认后开始执行 Phase 1 Day 1-2。