Files
SuperBizAgent-java/openspec/changes/phase-1-infrastructure/proposal.md
T
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

172 lines
4.8 KiB
Markdown
Raw 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.
# Proposal: Phase 1 基础设施搭建
## 问题
当前项目是一个 Demo,需要改造为 MVP 诊断 Agent 系统。Phase 1 需要搭建基础设施:
- 缺少持久化层(MySQL + JPA)
- 缺少分布式会话管理(Redis)
- 代码结构需要重构(包名、分层)
- 缺少文档管理基础功能
## 建议方案
### 1. 数据持久化
**方案**:Spring Data JPA + MySQL + Flyway
**理由**:
- JPA 是 Spring Boot 标准持久化方案
- Flyway 管理数据库版本,团队协作友好
- 3 张表设计已完成(docs/tables/)
**实现**:
1. 添加依赖(spring-boot-starter-data-jpa, mysql-connector-j, flyway-core)
2. 创建 3 个 Flyway 迁移脚本(V001/V002/V003)
3. 创建 JPA 实体类(DiagnosisRecord, CaseLibrary, ApiDocument)
4. 创建 Repository 接口(继承 JpaRepository)
### 2. 会话管理
**方案**:Redis 替代内存 HashMap
**理由**:
- 支持分布式部署
- 自动 TTL(30 分钟)
- Spring Data Redis 集成简单
**实现**:
1. 添加 spring-boot-starter-data-redis 依赖
2. 创建 SessionManager 接口 + RedisSessionManager 实现
3. SessionContext 使用 JSON 序列化
### 3. 代码结构重构
**方案**:包名重构 + 分层优化 + DTO 抽离
**包名重构**:
- `org.example` → `com.superbiz.agent`
- 工具:IDEA Refactor → Rename Package
**分层结构**:
```
com.superbiz.agent/
├── controller/ # REST API
├── service/ # 业务逻辑
├── repository/ # 数据访问
├── domain/
│ ├── entity/ # JPA 实体
│ ├── dto/ # DTO
│ └── enums/ # 枚举
├── agent/ # Agent 层(Phase 2)
├── tool/ # 工具层
├── session/ # 会话管理
└── config/ # 配置
```
**DTO 抽离**:
- Controller 不直接依赖 Entity
- 使用 MapStruct 做对象转换
### 4. 文档管理
**方案**:CRUD + Milvus 向量同步
**功能**:
1. 上传接口:文件 → 文本提取 → 分块 → 向量化 → MySQL + Milvus
2. 查询接口:分页、过滤
3. 删除接口:MySQL + Milvus 同步删除
4. 检索工具:精确匹配(MySQL)+ 语义检索(Milvus)+ RRF 融合
## 范围
**包含**:
- Day 1-2: MySQL 表 + JPA + Repository + Redis 会话
- Day 3: 包名重构 + 分层优化 + DTO 抽离
- Day 4-5: 文档管理 4 个接口 + 混合检索工具
**不包含**:
- Agent 功能(Phase 2)
- 意图识别和 RAG(Phase 2)
- Verifier 和 Harness(Phase 3)
## 非目标
- 性能优化(后续优化)
- 完整的权限控制(MVP 不需要)
- 前端界面(只做后端 API)
## 来自 devflow 的上下文约束
无(这是首个 OpenSpec,devflow 目录为空)
## 风险
1. **包名重构影响范围大**
- 缓解:先提交当前代码,独立分支重构
- 验证:重构后编译通过 + 启动成功
2. **Flyway 首次运行可能失败**
- 缓解:本地 MySQL 先手动测试
- 回退:Flyway 支持 repair 修复
3. **Redis 本地环境依赖**
- 缓解:提供 Docker Compose 配置
- 回退:可降级为内存实现(测试用)
## 关键假设
1. MySQL 8.0+ 和 Redis 6.0+ 可用(本地或 Docker)
2. 现有 Milvus 集成不需要改动
3. 单元测试覆盖率目标:70%+
## 成功标准
1. ✅ 3 张表创建成功,索引完整
2. ✅ Repository 层单元测试通过
3. ✅ Redis 会话存取正常,TTL 生效
4. ✅ 包名重构完成,编译通过
5. ✅ 文档上传/查询/删除接口可用
6. ✅ 混合检索工具返回正确结果
7. ✅ 整体测试覆盖率 ≥ 70%
## 产出文件(预期)
**数据库迁移**:
- `src/main/resources/db/migration/V001__create_diagnosis_record.sql`
- `src/main/resources/db/migration/V002__create_case_library.sql`
- `src/main/resources/db/migration/V003__create_api_document.sql`
**实体类**:
- `com.superbiz.agent.domain.entity.DiagnosisRecord`
- `com.superbiz.agent.domain.entity.CaseLibrary`
- `com.superbiz.agent.domain.entity.ApiDocument`
**Repository**:
- `com.superbiz.agent.repository.DiagnosisRecordRepository`
- `com.superbiz.agent.repository.CaseLibraryRepository`
- `com.superbiz.agent.repository.ApiDocumentRepository`
**会话管理**:
- `com.superbiz.agent.session.SessionManager`
- `com.superbiz.agent.session.RedisSessionManager`
- `com.superbiz.agent.session.SessionContext`
**文档管理**:
- `com.superbiz.agent.controller.DocumentController`
- `com.superbiz.agent.service.DocumentService`
- `com.superbiz.agent.service.TextExtractor`
- `com.superbiz.agent.tool.DocumentSearchTool`
**配置**:
- `pom.xml`(增加依赖)
- `application.yml`(增加 MySQL + Redis 配置)
**测试**:
- `*RepositoryTest.java`
- `*ServiceTest.java`
- `*ControllerTest.java`
## 工期估算
5 天(按实施计划)