feat(dc/tool-c): 完成AI代码生成服务(Day 3 MVP)

核心功能:
- 新增AICodeService(550行):AI代码生成核心服务
- 新增AIController(257行):4个API端点
- 新增dc_tool_c_ai_history表:存储对话历史
- 实现自我修正机制:最多3次智能重试
- 集成LLMFactory:复用通用能力层
- 10个Few-shot示例:覆盖Level 1-4场景

技术优化:
- 修复NaN序列化问题(Python端转None)
- 修复数据传递问题(从Session获取真实数据)
- 优化System Prompt(明确环境信息)
- 调整Few-shot示例(移除import语句)

测试结果:
- 通过率:9/11(81.8%) 达到MVP标准
- 成功场景:缺失值处理、编码、分箱、BMI、筛选、填补、统计、分类
- 待优化:数值清洗、智能去重(已记录技术债务TD-C-006)

API端点:
- POST /api/v1/dc/tool-c/ai/generate(生成代码)
- POST /api/v1/dc/tool-c/ai/execute(执行代码)
- POST /api/v1/dc/tool-c/ai/process(生成并执行,一步到位)
- GET /api/v1/dc/tool-c/ai/history/:sessionId(对话历史)

文档更新:
- 新增Day 3开发完成总结(770行)
- 新增复杂场景优化技术债务(TD-C-006)
- 更新工具C当前状态文档
- 更新技术债务清单

影响范围:
- backend/src/modules/dc/tool-c/*(新增2个文件,更新1个文件)
- backend/scripts/create-tool-c-ai-history-table.mjs(新增)
- backend/prisma/schema.prisma(新增DcToolCAiHistory模型)
- extraction_service/services/dc_executor.py(NaN序列化修复)
- docs/03-业务模块/DC-数据清洗整理/*(5份文档更新)

Breaking Changes: 无

总代码行数:+950行

Refs: #Tool-C-Day3
This commit is contained in:
2025-12-07 16:21:32 +08:00
parent 2348234013
commit f01981bf78
68 changed files with 6257 additions and 17 deletions

View File

@@ -1,8 +1,8 @@
# 工具CTool C- 科研数据编辑器 - 当前状态与开发指南
> **最后更新**: 2025-12-06
> **当前版本**: Day 2 MVP开发完成
> **开发进度**: Python微服务 ✅ | Session管理 ✅ | AI代码生成 ⏸️ | 前端开发 ⏸️
> **最后更新**: 2025-12-07
> **当前版本**: Day 3 MVP开发完成
> **开发进度**: Python微服务 ✅ | Session管理 ✅ | AI代码生成 | 前端开发 ⏸️
---
@@ -10,11 +10,12 @@
| 组件 | 进度 | 代码行数 | 状态 |
|------|------|---------|------|
| **Python微服务** | 100% | ~450行 | ✅ Day 1完成 |
| **Node.js后端** | 40% | ~1700行 | 🟡 Day 2完成 |
| **Python微服务** | 100% | ~430行 | ✅ Day 1完成Day 3优化 |
| **Node.js后端** | 85% | ~2650行 | Day 2-3完成 |
| **前端界面** | 0% | 0行 | ⏸️ 未开始 |
| **数据库Schema** | 100% | 1表 | ✅ Day 2完成 |
| **总体进度** | **25%** | **~2150行** | 🟡 **MVP阶段** |
| **数据库Schema** | 100% | 2表 | ✅ Day 2-3完成 |
| **测试通过率** | 81.8% | 9/11场景 | ✅ MVP达标 |
| **总体进度** | **60%** | **~3080行** | ✅ **后端MVP完成** |
---
@@ -156,6 +157,86 @@ df['hypertension'] = df.apply(
---
### Day 3: AI代码生成服务 ✅
#### 文件结构(新增)
```
backend/src/modules/dc/tool-c/
├── services/
│ ├── PythonExecutorService.ts # 177行 ✅ Day 1
│ ├── SessionService.ts # 383行 ✅ Day 2
│ ├── DataProcessService.ts # 303行 ✅ Day 2
│ └── AICodeService.ts # 550行 ✅ Day 3 新增
├── controllers/
│ ├── TestController.ts # 131行 ✅ Day 1
│ ├── SessionController.ts # 300行 ✅ Day 2
│ └── AIController.ts # 257行 ✅ Day 3 新增
└── routes/
└── index.ts # 85行 ✅ Day 3 更新
```
#### 核心功能
**3.1 AICodeService** ✅
- **功能**: AI代码生成核心服务
- **方法**:
```typescript
class AICodeService {
generateCode(sessionId, userMessage): Promise<GenerateCodeResult>
executeCode(sessionId, code, messageId): Promise<ExecuteCodeResult>
generateAndExecute(sessionId, userMessage, maxRetries): Promise<ProcessResult>
getHistory(sessionId, limit): Promise<Message[]>
}
```
- **特性**:
- ✅ 复用LLMFactory通用能力层
- ✅ 10个Few-shot示例Level 1-4
- ✅ 自我修正机制最多3次重试
- ✅ 对话历史管理最近5轮
- ✅ 从Session获取真实数据执行
- ✅ 详细System Prompt含环境说明
**3.2 AIController** ✅
- **功能**: AI功能API端点
- **端点**:
- `POST /ai/generate` - 生成代码(不执行)✅
- `POST /ai/execute` - 执行代码 ✅
- `POST /ai/process` - 生成并执行(一步到位)✅
- `GET /ai/history/:sessionId` - 获取对话历史 ✅
**3.3 数据库表** ✅
- **表名**: `dc_schema.dc_tool_c_ai_history`
- **字段**: 14个id, session_id, user_id, role, content, generated_code, code_explanation, execute_status, execute_result, execute_error, retry_count, model, created_at
- **索引**: 3个主键 + session_id + user_id
- **迁移脚本**: `backend/scripts/create-tool-c-ai-history-table.mjs`
#### AI功能测试结果Day 3
✅ **测试通过率**: 9/11 (81.8%) **达到MVP标准**
**成功场景9个**
1. ✅ 统一缺失值标记
2. ✅ 分类变量编码
3. ✅ 连续变量分箱
4. ✅ BMI计算
5. ✅ 条件筛选
6. ✅ 缺失值填补
7. ✅ 统计汇总
8. ✅ 复杂分类
9. ✅ 对话历史获取
**待优化场景2个已记录技术债务TD-C-006**
1. ❌ 数值列清洗(复杂字符串处理)
2. ❌ 智能去重(日期解析+排序)
**关键修复:**
- ✅ NaN序列化问题Python端转None
- ✅ 数据传递问题从Session获取真实数据
- ✅ System Prompt优化明确告知环境信息
- ✅ Few-shot示例调整移除import语句
---
### Day 2: Session管理 + 数据处理 ✅
#### 文件结构(新增)
@@ -436,7 +517,7 @@ dc_schema.dc_health_checks -- 健康检查 ✅
-- Tool C相关表
dc_schema.dc_tool_c_sessions -- ✅ 已创建Day 2
dc_schema.dc_tool_c_ai_history -- ⏸️ 待创建Day 3
dc_schema.dc_tool_c_ai_history -- ✅ 已创建Day 3
```
**创建方式**(已完成):
@@ -497,12 +578,13 @@ CREATE TABLE dc_schema.dc_tool_c_sessions (
| DELETE | `/api/v1/dc/tool-c/sessions/:id` | 删除Session | ✅ | 200 成功 |
| POST | `/api/v1/dc/tool-c/sessions/:id/heartbeat` | 心跳更新 | ✅ | 200 成功 |
#### AI功能端点待开发)
| 方法 | 端点 | 功能 | 状态 | 计划 |
#### AI功能端点Day 3已完成
| 方法 | 端点 | 功能 | 状态 | 测试 |
|------|------|------|------|------|
| POST | `/api/v1/dc/tool-c/ai/chat` | AI对话生成代码 | ⏸️ | Day 3 |
| POST | `/api/v1/dc/tool-c/ai/execute` | 执行AI代码 | ⏸️ | Day 3 |
| GET | `/api/v1/dc/tool-c/ai/history/:sessionId` | 获取历史 | ⏸️ | Day 3 |
| POST | `/api/v1/dc/tool-c/ai/generate` | 生成代码 | | ✅ 通过 |
| POST | `/api/v1/dc/tool-c/ai/execute` | 执行代码 | | ✅ 通过 |
| POST | `/api/v1/dc/tool-c/ai/process` | 生成并执行 | | ✅ 81.8%通过 |
| GET | `/api/v1/dc/tool-c/ai/history/:sessionId` | 获取历史 | ✅ | ✅ 通过 |
---
@@ -712,6 +794,7 @@ curl -X POST http://localhost:3000/api/v1/dc/tool-c/test/execute \
|------|--------|---------|
| 2025-12-06 | Day 1完成 | [2025-12-06_工具C_Day1开发完成总结.md](./06-开发记录/2025-12-06_工具C_Day1开发完成总结.md) |
| 2025-12-06 | Day 2完成 | [2025-12-06_工具C_Day2开发完成总结.md](./06-开发记录/2025-12-06_工具C_Day2开发完成总结.md) |
| 2025-12-07 | Day 3完成 | [2025-12-06_工具C_Day3开发完成总结.md](./06-开发记录/2025-12-06_工具C_Day3开发完成总结.md) ✅ **后端MVP完成** |
---