**变更概述:** - 将 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/(问题分析和重构计划)
716 lines
14 KiB
Markdown
716 lines
14 KiB
Markdown
# 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。
|