feat(aia): Complete AIA V2.0 with universal streaming capabilities

Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
This commit is contained in:
2026-01-14 19:15:01 +08:00
parent 3d35e9c58b
commit 1b53ab9d52
386 changed files with 52096 additions and 65238 deletions

View File

@@ -1,23 +1,23 @@
# 工具C Day 3 开发计划 - AI代码生成服务
# 宸ュ叿C Day 3 寮€鍙戣<EFBFBD>鍒?- AI浠爜鐢熸垚鏈嶅姟
> **鏂囨。鐗堟湰**: V1.0
> **鍒涘缓鏃ユ湡**: 2025-12-06
> **开发目标**: AI代码生成 + Python执行 + 自我修正
> **寮€鍙戠洰鏍?*: AI浠爜鐢熸垚 + Python鎵ц<E98EB5> + 鑷<>垜淇<E59E9C><E6B787>
> **棰勮<E6A3B0>宸ユ椂**: 5.5-6灏忔椂
> **依赖**: Day 2已完成(Session管理)
> **渚濊禆**: Day 2宸插畬鎴愶紙Session绠$悊锛?
---
## 馃搵 鏍稿績鍐崇瓥鎬荤粨
### 决策1: 对话存储方式 ✅
### 鍐崇瓥1: 瀵硅瘽瀛樺偍鏂瑰紡 鉁?
**方案选择**: 创建独立表 `dc_tool_c_ai_history`
**鏂规<EFBFBD>閫夋嫨**: 鍒涘缓鐙<EFBFBD>珛琛?`dc_tool_c_ai_history`
**鐞嗙敱**:
-<>潵妯″潡鍙<E6BDA1>兘鐙<E58598>珛閿€鍞<E282AC>垨鐙<E59EA8>珛閮ㄧ讲
- 绗﹀悎Schema闅旂<E99785>鍘熷垯
- Tool C有特殊字段需求(code、executeResult
- Tool C鏈夌壒娈婂瓧娈甸渶姹傦紙code銆乪xecuteResult锛?
**鏁版嵁搴揝chema**:
```prisma
@@ -29,7 +29,7 @@ model DcToolCAiHistory {
content String @db.Text
// Tool C鐗规湁瀛楁<E7809B>
generatedCode String? @db.Text // AI生成的代码
generatedCode String? @db.Text // AI鐢熸垚鐨勪唬鐮?
codeExplanation String? @db.Text // 浠g爜瑙i噴
executeStatus String? // success/failed/pending
executeResult Json? // 鎵ц<E98EB5>缁撴灉
@@ -48,80 +48,80 @@ model DcToolCAiHistory {
---
### 决策2: AI代码执行流程 ✅
### 鍐崇瓥2: AI爜鎵ц<EFBFBD>娴佺▼ 鉁?
**方案选择**: 用户确认后执行方案A
**鏂规<EFBFBD>閫夋嫨**: 鐢ㄦ埛纭<EFBFBD><EFBFBD>鍚庢墽琛岋紙鏂规<EFBFBD>A锛?
**娴佺▼**:
```
鐢ㄦ埛杈撳叆鑷<EFBFBD>劧璇<EFBFBD>
鈫?
AI鐢熸垚浠爜 + 瑙i噴
鈫?
鍓嶇<EFBFBD>灞曠ず浠爜锛堥珮浜<EFBFBD>
用户点击"执行"按钮 ← 用户确认
鈫?
鐢ㄦ埛鐐瑰嚮"鎵ц<E98EB5>"鎸夐挳 鈫?鐢ㄦ埛纭<E59F9B><E7BAAD>
鈫?
Python鏈嶅姟鎵ц<EFBFBD>
鈫?
杩斿洖缁撴灉 + 鏁版嵁棰勮<E6A3B0>锛堝墠50琛岋級
```
**鐞嗙敱**:
- ✅ 用户可审查代码(安全可控)
- ✅ 符合"AI辅助"而非"AI自动"的定位
- ✅ 降低执行错误风险
- 鉁?鐢ㄦ埛鍙<E59F9B><E98D99>鏌ヤ唬鐮侊紙瀹夊叏鍙<E58F8F>帶锛?
- 鉁?绗﹀悎"AI杈呭姪"鑰岄潪"AI鑷<49>姩"鐨勫畾浣?
- 鉁?闄嶄綆鎵ц<E98EB5>閿欒<E996BF>椋庨櫓
---
### 决策3: System Prompt设计 ✅
### 鍐崇瓥3: System Prompt璁捐<EFBFBD> 鉁?
**方案选择**: 完整版10个Few-shot示例
**鏂规<EFBFBD>閫夋嫨**: 瀹屾暣鐗?0涓狥ew-shot绀轰緥
**绀轰緥鍒嗗竷**:
| 绾у埆 | 鏁伴噺 | 绀轰緥缂栧彿 | 鍦烘櫙 |
|------|------|---------|------|
| Level 1 | 2| 1-2 | 缺失值统一、数值清洗 |
| Level 2 | 2| 3-4 | 编码、分箱 |
| Level 3 | 3| 5-7 | BMI、日期、筛选 |
| Level 4 | 3| 8-10 | 简单填补、**多重插补**、去重 |
| Level 1 | 2涓?| 1-2 | 缂哄け鍊肩粺涓€銆佹暟鍊兼竻娲?|
| Level 2 | 2涓?| 3-4 | 缂栫爜銆佸垎绠?|
| Level 3 | 3涓?| 5-7 | BMI銆佹棩鏈熴€佺瓫閫?|
| Level 4 | 3涓?| 8-10 | 绠€鍗曞~琛ャ€?*澶氶噸鎻掕ˉ**銆佸幓閲?|
**鏍稿績浜<E7B8BE>**:
- ✅ 包含缺失值处理示例8
- ✅ 包含多重插补MICE示例9⭐ 重点
- ✅ 覆盖从基础到高级全梯度
- 鉁?鍖呭惈缂哄け鍊煎<E98D8A>鐞嗭紙绀轰緥8锛?
- 鉁?鍖呭惈澶氶噸鎻掕ˉMICE锛堢ず渚?锛夆瓙 閲嶇偣
- 鉁?瑕嗙洊浠庡熀纭€鍒伴珮绾у叏姊<E58F8F>
**文档位置**: [工具C_AI_Few-shot示例库.md](./工具C_AI_Few-shot示例库.md)
**鏂囨。浣嶇疆**: [宸ュ叿C_AI_Few-shot绀轰緥搴?md](./宸ュ叿C_AI_Few-shot绀轰緥搴?md)
---
### 决策4: 数据状态管理 ✅
### 鍐崇瓥4: 鏁版嵁鐘舵€佺<E282AC>鐞?鉁?
**方案选择**: Python内存维护方案C
**鏂规<EFBFBD>閫夋嫨**: Python鍐呭瓨缁存姢锛堟柟妗圕锛?
**鏋舵瀯**:
```
Session创建 → 数据加载到Python内存
AI操作1 → 修改内存中的DataFrame
AI操作2 → 继续修改DataFrame(累积)
AI操作N → ...
用户点击"导出" → 保存到OSS
Session鍒涘缓 鈫?鏁版嵁鍔犺浇鍒癙ython鍐呭瓨
鈫?
AI鎿嶄綔1 鈫?淇<>敼鍐呭瓨涓<E793A8>DataFrame
鈫?
AI鎿嶄綔2 鈫?缁х画淇<E794BB>DataFrame锛堢疮绉<EFBFBD>
鈫?
AI鎿嶄綔N 鈫?...
鈫?
鐢ㄦ埛鐐瑰嚮"瀵煎嚭" 鈫?淇濆瓨鍒癘SS
```
**鎶€鏈<E282AC>€哄姟**:
- 📝 Python重启会丢失状态
- 馃摑 Python閲嶅惎浼氫涪澶辩姸鎬?
- 馃摑 鏈<>潵浼樺寲锛氭寔涔呭寲鍒癛edis鎴朞SS
- 馃摑 鏂囨。浣嶇疆: [鎶€鏈<EFBFBD>€哄姟娓呭崟](../07-鎶€鏈<E282AC>€哄姟/Tool-C鎶€鏈<E282AC>€哄姟娓呭崟.md)
---
### 决策5: AI自我修正机制 ✅
### 鍐崇瓥5: AI<EFBFBD>垜淇<EFBFBD><EFBFBD>鏈哄埗 鉁?
**方案选择**: 最多3次重试方案B
**鏂规<EFBFBD>閫夋嫨**: 鏈€澶?娆¢噸璇曪紙鏂规<E98F82>B锛?
**娴佺▼**:
```python
@@ -134,18 +134,18 @@ while attempt < 3:
result = execute_code(code)
if result.success:
return result # ✅ 成功
return result # 鉁?鎴愬姛
error_feedback = result.error
attempt += 1
# ❌ 3次仍失败返回友好错误
# 鉂?3娆粛澶辫触锛岃繑鍥炲弸濂介敊璇?
return "鎵ц<EFBFBD>澶辫触锛岃<EFBFBD>璋冩暣闇€姹傚悗閲嶈瘯"
```
---
### 决策6: LLM模型选择 ✅
### 鍐崇瓥6: LLM妯″瀷閫夋嫨 鉁?
**浼樺厛浣跨敤**: DeepSeek-V3
@@ -153,21 +153,21 @@ return "执行失败,请调整需求后重试"
```typescript
const llm = LLMFactory.createAdapter('deepseek-v3');
const response = await llm.chat(messages, {
temperature: 0.1, // 低温度,确保代码准确性
temperature: 0.1, // 浣庢俯搴︼紝纭<EFBFBD>繚浠爜鍑嗙鎬?
maxTokens: 2000, // 瓒冲<E79392>鐢熸垚浠爜+瑙i噴
topP: 0.9
});
```
**备选方案**:
**澶囬€夋柟妗?*:
- Qwen3-72B: 涓<>枃鐞嗚В鏇村ソ
- GPT-5-Pro: 浠g爜璐ㄩ噺鏈€楂橈紙鎴愭湰楂橈級
---
### 决策7: 上下文传递 ✅
### 鍐崇瓥7: 涓婁笅鏂囦紶閫?鉁?
**配置**: 传递最近5轮对话
**閰嶇疆**: 浼犻€掓渶杩?杞<><E69D9E>璇?
**瀹炵幇**:
```typescript
@@ -179,85 +179,85 @@ async getConversationHistory(sessionId: string, limit: number = 5) {
});
}
// 构建消息上下文
// 鏋勫缓娑堟伅涓婁笅鏂?
const messages = [
{ role: 'system', content: systemPrompt },
...history.reverse(), // 最近5轮
...history.reverse(), // 鏈€杩?杞?
{ role: 'user', content: userMessage }
];
```
---
### 决策8: 执行结果展示 ✅
### 鍐崇瓥8: 鎵ц<E98EB5>缁撴灉灞曠ず 鉁?
**配置**: 返回前50行预览
**閰嶇疆**: 杩斿洖鍓?0琛岄<E7909B>瑙?
**鍘熷洜**:
- 50行足够查看数据变化
- 50琛岃冻澶熸煡鐪嬫暟鎹<EFBFBD>彉鍖?
- 涓嶄細杩囧ぇ褰卞搷鎬ц兘
- 符合医疗数据场景(通常几十到几百行)
- 绗﹀悎鍖荤枟鏁版嵁鍦烘櫙锛堥€氬父鍑犲崄鍒板嚑鐧捐<EFBFBD>锛?
---
### 决策9: Few-shot示例确认 ✅
### 鍐崇瓥9: Few-shot绀轰緥纭<EFBFBD><EFBFBD> 鉁?
**最终10个示例**:
1. 统一缺失值标记
**鏈€缁?0涓<30>ず渚?*:
1. 缁熶竴缂哄け鍊兼爣璁?
2. 鏁板€煎垪娓呮礂锛堟<E9949B>楠屽€肩<E282AC>鍙峰<E98D99>鐞嗭級
3. 分类变量编码性别→1/0
3. 鍒嗙被鍙橀噺缂栫爜锛堟€у埆鈫?/0锛?
4. 杩炵画鍙橀噺鍒嗙<E98D92>锛堝勾榫勫垎缁勶級
5. BMI计算与分类
5. BMI璁$畻涓庡垎绫?
6. 鏃ユ湡璁$畻锛堜綇闄㈠ぉ鏁帮級
7. 条件筛选(入组标准)
7. 鏉′欢绛涢€夛紙鍏ョ粍鏍囧噯锛?
8. 绠€鍗曠己澶卞€煎琛ワ紙涓<E7B499>綅鏁帮級
9. **多重插补MICE** ⭐ 核心
9. **澶氶噸鎻掕ˉMICE** 猸?鏍稿績
10. 鏅鸿兘鍘婚噸锛堟寜鏃ユ湡淇濈暀鏈€鏂帮級
---
## 🏗️ 技术架构设计
## 馃彈锔?鎶€鏈<E282AC>灦鏋勮<E98F8B>璁?
### 鏁翠綋鏋舵瀯
```
┌─────────────────────────────────────────────────┐
Frontend (React)
- 对话界面Tool C专用
- 代码展示(高亮)
- 执行按钮
- 结果预览AG Grid
└──────────────┬──────────────────────────────────┘
REST API
┌──────────────▼──────────────────────────────────┐
Node.js Backend (Fastify)
│ ┌─────────────────────────────────────────┐
│ │ AICodeService
│ │ - generateCode()
│ │ - executeCode()
│ │ - generateAndExecute() (带重试)
│ │ - getHistory()
│ └──────────┬───────────────┬──────────────┘
┌───────▼─────┐ ┌────▼──────────┐
│ │ LLMFactory │ │ PythonExecutor
│ (通用层复用)│ │ Service
└─────────────┘ └───────┬───────┘
└──────────────────────────────┼─────────────────┘
HTTP
┌───────────▼──────────────────┐
Python Service (FastAPI)
- /api/dc/validate (AST检查) │
- /api/dc/execute (执行代码) │
- Session状态管理(内存)
└──────────────────────────────┘
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? Frontend (React) 鈹?
鈹? - 瀵硅瘽鐣岄潰锛圱ool C涓撶敤锛? 鈹?
鈹? - 爜灞曠ず锛堥珮浜<EFBFBD> 鈹?
鈹? - 鎵ц<EFBFBD>鎸夐挳 鈹?
鈹? - 缁撴灉棰勮<EFBFBD>锛圓G Grid锛? 鈹?
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹<EFBFBD>攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹?REST API
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈻尖攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? Node.js Backend (Fastify) 鈹?
鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹?
鈹? 鈹?AICodeService 鈹? 鈹?
鈹? 鈹?- generateCode() 鈹? 鈹?
鈹? 鈹?- executeCode() 鈹? 鈹?
鈹? 鈹?- generateAndExecute() (甯﹂噸璇? 鈹? 鈹?
鈹? 鈹?- getHistory() 鈹? 鈹?
鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹<E282AC>攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹<E282AC>攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹?
鈹? 鈹? 鈹? 鈹?
鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈻尖攢鈹€鈹€鈹€鈹€鈹? 鈹屸攢鈹€鈹€鈹€鈻尖攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹?
鈹? 鈹?LLMFactory 鈹? 鈹?PythonExecutor鈹? 鈹?
鈹? 鈹?(閫氱敤灞傚<E7819E>鐢?鈹? 鈹?Service 鈹? 鈹?
鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹<E282AC>攢鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹?
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹尖攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹?HTTP
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈻尖攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹?Python Service (FastAPI) 鈹?
鈹?- /api/dc/validate (AST妫€鏌? 鈹?
鈹?- /api/dc/execute (鎵ц<EFBFBD>爜) 鈹?
鈹?- Session鐘舵€佺<EFBFBD>鐞嗭紙鍐呭瓨锛? 鈹?
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
```
---
### 鏍稿績鏈嶅姟璁捐<E79281>
#### AICodeService (新建,~400行)
#### AICodeService (鏂板缓锛寏400琛?
```typescript
// backend/src/modules/dc/tool-c/services/AICodeService.ts
@@ -268,7 +268,7 @@ export class AICodeService {
/**
* 鐢熸垚Pandas浠
* @param sessionId - Tool C Session ID
* @param userMessage - 用户自然语言需求
* @param userMessage - 鐢ㄦ埛鑷<EFBFBD>劧璇<EFBFBD>█闇€姹?
* @returns { code, explanation, messageId }
*/
async generateCode(
@@ -278,13 +278,13 @@ export class AICodeService {
// 1. 鑾峰彇Session淇℃伅锛堟暟鎹<E69A9F>泦鍏冩暟鎹<E69A9F>
const session = await sessionService.getSession(sessionId);
// 2. 构建System Prompt含10个Few-shot
// 2. 鏋勫缓System Prompt锛堝惈10涓狥ew-shot锛?
const systemPrompt = this.buildSystemPrompt(session);
// 3. 获取对话历史最近5轮
// 3. 鑾峰彇瀵硅瘽鍘嗗彶锛堟渶杩?杞<>
const history = await this.getHistory(sessionId, 5);
// 4. 调用LLM复用LLMFactory
// 4. 璋冪敤LLM锛堝<EFBFBD>鐢↙LMFactory锛?
const llm = LLMFactory.createAdapter('deepseek-v3');
const response = await llm.chat([
{ role: 'system', content: systemPrompt },
@@ -295,7 +295,7 @@ export class AICodeService {
maxTokens: 2000
});
// 5. 解析AI回复提取code和explanation
// 5. 瀽AI鍥炲<EFBFBD>锛堟彁鍙朿ode鍜宔xplanation锛?
const parsed = this.parseAIResponse(response.content);
// 6. 淇濆瓨鍒版暟鎹<E69A9F>
@@ -327,10 +327,10 @@ export class AICodeService {
): Promise<ExecuteCodeResult> {
// 1. 璋冪敤Python鏈嶅姟鎵ц<E98EB5>
const result = await pythonExecutorService.executeCode(code, {
sessionId // Python服务维护Session状态
sessionId // Python鏈嶅姟缁存姢Session鐘舵€?
});
// 2. 更新消息状态
// 2. 鏇存柊娑堟伅鐘舵€?
await prisma.dcToolCAiHistory.update({
where: { id: messageId },
data: {
@@ -359,8 +359,8 @@ export class AICodeService {
/**
* 鐢熸垚骞舵墽琛岋紙甯﹁嚜鎴戜慨姝o級
* @param sessionId - Tool C Session ID
* @param userMessage - 用户需求
* @param maxRetries - 最大重试次数默认3
* @param userMessage - 鐢ㄦ埛闇€姹?
* @param maxRetries - 鏈€澶ч噸璇曟<EFBFBD>鏁帮紙榛樿<EFBFBD>3锛?
* @returns { code, explanation, executeResult, retryCount }
*/
async generateAndExecute(
@@ -374,10 +374,10 @@ export class AICodeService {
while (attempt < maxRetries) {
try {
// 构建带错误反馈的提示词
// 鏋勫缓甯﹂敊璇<EFBFBD>弽棣堢殑鎻愮ず璇?
const enhancedMessage = attempt === 0
? userMessage
: `${userMessage}\n\n上次执行错误:${lastError}\n请修正代码。`;
: `${userMessage}\n\n涓婃<EFBFBD>鎵ц<EFBFBD>閿欒<EFBFBD>锛?{lastError}\n璇蜂慨姝d唬鐮併€俙;
// 鐢熸垚浠g爜
generated = await this.generateCode(sessionId, enhancedMessage);
@@ -390,8 +390,8 @@ export class AICodeService {
);
if (executeResult.success) {
// ✅ 成功
logger.info(`[AICodeService] 执行成功(尝试${attempt + 1}次)`);
// 鉁?鎴愬姛
logger.info(`[AICodeService] ц<EFBFBD>?{attempt + 1}`);
return {
...generated,
executeResult,
@@ -399,11 +399,11 @@ export class AICodeService {
};
}
// ❌ 失败,准备重试
// 鉂?澶辫触锛屽噯澶囬噸璇?
lastError = executeResult.error || '鏈<>煡閿欒<E996BF>';
attempt++;
logger.warn(`[AICodeService] 执行失败(尝试${attempt}/${maxRetries}: ${lastError}`);
logger.warn(`[AICodeService] ц<EFBFBD>?{attempt}/${maxRetries}? ${lastError}`);
} catch (error: any) {
logger.error(`[AICodeService] 寮傚父: ${error.message}`);
@@ -438,48 +438,48 @@ export class AICodeService {
// ==================== 杈呭姪鏂规硶 ====================
/**
* 构建System Prompt含10个Few-shot
* 鏋勫缓System Prompt锛堝惈10涓狥ew-shot锛?
*/
private buildSystemPrompt(session: SessionData): string {
return `你是医疗科研数据清洗专家负责生成Pandas代码来清洗整理数据。
return `<EFBFBD>andas浠爜鏉ユ竻娲楁暣鐞嗘暟鎹<EFBFBD>?
## 当前数据集信息
- 文件名: ${session.fileName}
## ?
- ? ${session.fileName}
- 琛屾暟: ${session.totalRows}
- 鍒楁暟: ${session.totalCols}
- 鍒楀悕: ${session.columns.join(', ')}
##
1. 只能操作df变量不能修改其他变量
2. 禁止导入os、sys、subprocess等危险模块
3. 禁止使用eval、exec、__import__等危险函数
1. <EFBFBD>df鍙橀噺锛屼笉鑳戒慨鏀瑰叾浠栧彉閲?
2. <EFBFBD>os銆乻ys銆乻ubprocess绛夊嵄闄ā?
3. <EFBFBD>eval銆乪xec銆乢_import__绛夊嵄闄?
4. <EFBFBD>
5. SON: {"code": "...", "explanation": "..."}
## Few-shot绀轰緥
### 示例1: 统一缺失值标记
用户: 把所有代表缺失的符号(-、不详、NA、N/A统一替换为标准空值
### 绀轰緥1: 缁熶竴缂哄け鍊兼爣璁?
鐢ㄦ埛: 鎶婃墍鏈変唬琛ㄧ己澶辩殑绗彿?A銆丯/A锛夌粺涓?
:
\`\`\`python
df = df.replace(['-', '涓嶈<E6B693>', 'NA', 'N/A', '\\\\', '鏈<>煡'], np.nan)
\`\`\`
说明: 将多种缺失值表示统一为NaN便于后续统计分析
璇存槑: 灏嗗<E7818F>绉嶇己澶卞€艰〃绀虹粺涓€涓篘aN锛屼究浜庡悗缁<E68297>粺璁″垎鏋?
### 绀轰緥2: 鏁板€煎垪娓呮礂
用户: 把肌酐列里的非数字符号去掉,<0.1按0.05处理,转为数值类型
鐢ㄦ埛: 鎶婅倢閰愬垪閲岀殑闈炴暟瀛楃<E7809B>鍙峰幓鎺夛紝<0.1鎸?.05澶勭悊锛岃浆涓烘暟鍊肩被鍨?
浠g爜:
\`\`\`python
df['creatinine'] = df['creatinine'].astype(str).str.replace('>', '').str.replace('<', '')
df.loc[df['creatinine'] == '0.1', 'creatinine'] = '0.05'
df['creatinine'] = pd.to_numeric(df['creatinine'], errors='coerce')
\`\`\`
说明: 检验科数据常含符号,需清理后才能计算
璇存槑: 妫€楠岀<E6A5A0>鏁版嵁甯稿惈绗﹀彿锛岄渶娓呯悊鍚庢墠鑳借<E991B3>绠?
[... 绀轰緥3-8 ...]
### 绀轰緥9: 澶氶噸鎻掕ˉ锛圡ICE锛夆瓙 閲嶇偣
用户: 使用多重插补法对BMI、年龄、肌酐列的缺失值进行填补
鐢ㄦ埛: 浣跨敤澶氶噸鎻掕ˉ娉曞<E5A889>BMI銆佸勾榫勩€佽倢閰愬垪鐨勭己澶卞€艰繘琛屽琛?
浠g爜:
\`\`\`python
from sklearn.experimental import enable_iterative_imputer
@@ -504,12 +504,12 @@ df = df.sort_values('check_date').drop_duplicates(subset=['patient_id'], keep='l
璇存槑: 鍏堟寜鏃ユ湡鎺掑簭锛屽啀鍘婚噸淇濈暀鏈€鍚庝竴鏉★紙鏈€鏂帮級
## 鐢ㄦ埛褰撳墠璇锋眰
请根据以上示例和当前数据集信息,生成代码并解释。
璇锋牴鎹<EFBFBD>互涓婄ず渚嬪拰褰撳墠鏁版嵁闆嗕俊鎭<EFBFBD>紝鐢熸垚浠爜骞惰В閲娿€?
`;
}
/**
* 解析AI回复提取code和explanation
* 瀽AI鍥炲<EFBFBD>锛堟彁鍙朿ode鍜宔xplanation锛?
*/
private parseAIResponse(content: string): { code: string; explanation: string } {
try {
@@ -531,7 +531,7 @@ df = df.sort_values('check_date').drop_duplicates(subset=['patient_id'], keep='l
}
}
throw new Error('AI回复格式错误,无法提取代码');
throw new Error('AI鍥炲<EFBFBD>鏍煎紡閿欒<EFBFBD>锛屾棤娉曟彁鍙栦唬鐮?);
}
/**
@@ -577,7 +577,7 @@ export const aiCodeService = new AICodeService();
---
#### AIController (新建,~200行)
#### AIController (鏂板缓锛寏200琛?
```typescript
// backend/src/modules/dc/tool-c/controllers/AIController.ts
@@ -585,7 +585,7 @@ export class AIController {
/**
* POST /api/v1/dc/tool-c/ai/generate
* 生成代码(不执行)
* 鐢熸垚浠爜锛堜笉鎵ц<EFBFBD>锛?
*/
async generateCode(request: FastifyRequest, reply: FastifyReply) {
try {
@@ -697,24 +697,24 @@ export const aiController = new AIController();
---
## 📅 开发计划
## 馃搮 寮€鍙戣<E98D99>鍒?
### 闃舵<E99783>1: 鏁版嵁搴撹<E690B4>璁★紙30鍒嗛挓锛夆彴 09:00-09:30
**浠诲姟娓呭崟**:
- [ ] 更新 `backend/prisma/schema.prisma`添加DcToolCAiHistory模型)
- [ ] 创建数据库迁移脚本 `create-tool-c-ai-history-table.mjs`
- [ ] 执行迁移(创建表)
- [ ] 验证表结构
- [ ] 鏇存柊 `backend/prisma/schema.prisma`锛堟坊鍔燚cToolCAiHistory妯″瀷锛?
- [ ] 鍒涘缓鏁版嵁搴撹縼绉昏剼鏈?`create-tool-c-ai-history-table.mjs`
- [ ] 鎵ц<EFBFBD>杩佺Щ锛堝垱寤鸿〃锛?
- [ ] 楠岃瘉琛ㄧ粨鏋?
- [ ] 鐢熸垚Prisma Client (`npx prisma generate`)
**交付物**:
- `dc_schema.dc_tool_c_ai_history` 表创建成功
- Prisma Client更新完成
**浜や粯鐗?*:
- 鉁?`dc_schema.dc_tool_c_ai_history` 琛ㄥ垱寤烘垚鍔?
- 鉁?Prisma Client鏇存柊瀹屾垚
---
### 阶段2: AICodeService实现2小时 09:30-11:30
### 闃舵<EFBFBD>2: AICodeService瀹炵幇锛?灏忔椂锛夆彴 09:30-11:30
**浠诲姟娓呭崟**:
- [ ] 鍒涘缓 `AICodeService.ts` 鍩虹<E98DA9>缁撴瀯
@@ -725,88 +725,88 @@ export const aiController = new AIController();
- [ ] 瀹炵幇 `generateAndExecute()` - 鐢熸垚+鎵ц<E98EB5>+閲嶈瘯
- [ ] 瀹炵幇 `getHistory()` - 鑾峰彇瀵硅瘽鍘嗗彶
- [ ] 瀹炵幇 `saveMessages()` - 淇濆瓨娑堟伅鍒版暟鎹<E69A9F>
- [ ] 添加完整错误处理和日志
- [ ] 娣诲姞瀹屾暣閿欒<EFBFBD>澶勭悊鍜屾棩蹇?
**交付物**:
- `AICodeService.ts` 完整实现(~400行
- ✅ 单元测试通过
**浜や粯鐗?*:
- 鉁?`AICodeService.ts` 瀹屾暣瀹炵幇锛垀400琛岋級
- 鉁?鍗曞厓娴嬭瘯閫氳繃
---
### 阶段3: AIController实现1小时 11:30-12:30
### 闃舵<EFBFBD>3: AIController瀹炵幇锛?灏忔椂锛夆彴 11:30-12:30
**浠诲姟娓呭崟**:
- [ ] 鍒涘缓 `AIController.ts`
- [ ] 瀹炵幇 `POST /ai/generate` - 鐢熸垚浠g爜
- [ ] 瀹炵幇 `POST /ai/execute` - 鎵ц<E98EB5>
- [ ] 实现 `POST /ai/process` - 一步到位
- [ ] 瀹炵幇 `POST /ai/process` - 涓€姝ュ埌浣?
- [ ] 瀹炵幇 `GET /ai/history/:sessionId` - 瀵硅瘽鍘嗗彶
- [ ] 娣诲姞鍙傛暟楠岃瘉
- [ ] 娣诲姞閿欒<E996BF>澶勭悊
**交付物**:
- `AIController.ts` 完整实现(~200行
- ✅ 4个API端点就绪
**浜や粯鐗?*:
- 鉁?`AIController.ts` 瀹屾暣瀹炵幇锛垀200琛岋級
- 鉁?4涓狝PI绔<49>偣灏辩华
---
### 午休 ⏰ 12:30-13:30
### 鍗堜紤 鈴?12:30-13:30
---
### 阶段4: 路由配置15分钟 13:30-13:45
### 闃舵<EFBFBD>4: 璺<>敱閰嶇疆锛?5鍒嗛挓锛夆彴 13:30-13:45
**浠诲姟娓呭崟**:
- [ ] 鏇存柊 `routes/index.ts`
- [ ] 娉ㄥ唽AI鐩稿叧璺<E58FA7>
- [ ] 测试路由可访问性
- [ ] 娴嬭瘯璺<EFBFBD>敱鍙<EFBFBD><EFBFBD><EFBFBD>€?
**交付物**:
- ✅ AI路由注册完成
- Swagger文档更新(如有)
**浜や粯鐗?*:
- 鉁?AI璺<49>敱娉ㄥ唽瀹屾垚
- 鉁?Swagger鏂囨。鏇存柊锛堝<EFBFBD>鏈夛級
---
### 阶段5: 测试验收1.5小时)⏰ 13:45-15:15
### 闃舵<EFBFBD>5: 娴嬭瘯楠屾敹锛?.5灏忔椂锛夆彴 13:45-15:15
#### 5.1 基础测试30分钟
#### 5.1 鍩虹<EFBFBD>娴嬭瘯锛?0鍒嗛挓锛?
**娴嬭瘯鐢ㄤ緥**:
1. [ ] 测试1: 统一缺失值标记
1. [ ] 娴嬭瘯1: 缁熶竴缂哄け鍊兼爣璁?
2. [ ] 娴嬭瘯2: 鏁板€煎垪娓呮礂
3. [ ] 娴嬭瘯3: 鎬у埆缂栫爜
4. [ ] 娴嬭瘯4: 骞撮緞鍒嗙粍
**楠屾敹鏍囧噯**:
- AI能正确生成代码
- 代码可执行
- AI鑳芥<EFBFBD><EFBFBD>敓鎴愪唬鐮?
- 爜鍙<EFBFBD>墽琛?
- 缁撴灉绗﹀悎棰勬湡
#### 5.2 中级测试30分钟
#### 5.2 <EFBFBD>骇娴嬭瘯锛?0鍒嗛挓锛?
**娴嬭瘯鐢ㄤ緥**:
5. [ ] 娴嬭瘯5: BMI璁
6. [ ] 娴嬭瘯6: 浣忛櫌澶╂暟璁$畻
7. [ ] 测试7: 条件筛选
7. [ ] 娴嬭瘯7: 鏉′欢绛涢€?
#### 5.3 高级测试30分钟
#### 5.3 楂樼骇娴嬭瘯锛?0鍒嗛挓锛?
**娴嬭瘯鐢ㄤ緥**:
8. [ ] 测试8: 中位数填补
9. [ ] 测试9: 多重插补MICE
8. [ ] 娴嬭瘯8: 涓<>綅鏁板琛?
9. [ ] 娴嬭瘯9: 澶氶噸鎻掕ˉMICE 猸?
10. [ ] 娴嬭瘯10: 鏅鸿兘鍘婚噸
#### 5.4 特殊测试30分钟
#### 5.4 鐗规畩娴嬭瘯锛?0鍒嗛挓锛?
**娴嬭瘯鐢ㄤ緥**:
11. [ ] 自我修正测试(故意错误,验证重试机制)
12. [ ] 边界测试(列不存在、全部缺失等)
13. [ ] 并发测试(多用户同时使用)
11. [ ] <EFBFBD>垜淇<EFBFBD><EFBFBD>娴嬭瘯锛堟晠鎰忛敊璇<EFBFBD>紝楠岃瘉閲嶈瘯鏈哄埗锛?
12. [ ] 杈圭晫娴嬭瘯锛堝垪涓嶅瓨鍦ㄣ€佸叏閮ㄧ己澶辩瓑锛?
13. [ ] 骞跺彂娴嬭瘯锛堝<EFBFBD>鐢ㄦ埛鍚屾椂浣跨敤锛?
14. [ ] 绔<>埌绔<E59F8C>祴璇曪紙涓婁紶鈫扐I澶勭悊鈫掔粨鏋滈獙璇侊級
**交付物**:
- ✅ 测试脚本 `test-tool-c-day3.mjs`
- ✅ 测试报告(通过率≥90%
**浜や粯鐗?*:
- 鉁?娴嬭瘯鑴氭湰 `test-tool-c-day3.mjs`
- 鉁?娴嬭瘯鎶ュ憡锛堥€氳繃鐜団墺90%锛?
---
@@ -814,14 +814,14 @@ export const aiController = new AIController();
**浠诲姟娓呭崟**:
- [ ] 鍒涘缓鎶€鏈<E282AC>€哄姟娓呭崟 `Tool-C鎶€鏈<E282AC>€哄姟娓呭崟.md`
- [ ] 更新模块状态文档 `00-工具C当前状态与开发指南.md`
- [ ] 鏇存柊妯″潡鐘舵€佹枃妗?`00-宸ュ叿C褰撳墠鐘舵€佷笌寮€鍙戞寚鍗?md`
- [ ] 鍒涘缓Day 3寮€鍙戝畬鎴愭€荤粨
- [ ] 提交Git并推送
- [ ] 鎻愪氦Git骞舵帹閫?
**交付物**:
- ✅ 技术债务文档
- Day 3开发记录
- Git提交成功
**浜や粯鐗?*:
- 鉁?鎶€鏈<E282AC>€哄姟鏂囨。
- 鉁?Day 3寮€鍙戣<EFBFBD>褰?
- 鉁?Git鎻愪氦鎴愬姛
---
@@ -829,116 +829,116 @@ export const aiController = new AIController();
### 鍔熻兘楠屾敹
| 功能 | 验收标准 | 状态 |
| 鍔熻兘 | 楠屾敹鏍囧噯 | 鐘舵€?|
|------|---------|------|
| AI代码生成 | 10个示例场景100%可生成正确代码 | ⏸️ |
| AI浠g爜鐢熸垚 | 10涓<30>ず渚嬪満鏅?00%鍙<>敓鎴愭<E98EB4><EFBFBD>唬鐮?| 鈴革笍 |
| 浠爜鎵ц<E98EB5> | 鐢熸垚鐨勪唬鐮佸彲鎴愬姛鎵ц<E98EB5> | 鈴革笍 |
| 自我修正 | 失败后能自动重试最多3次 | ⏸️ |
| 对话历史 | 能获取最近5轮对话 | ⏸️ |
| 数据预览 | 执行后返回前50行预览 | ⏸️ |
| <EFBFBD>垜淇<EFBFBD><EFBFBD> | 澶辫触鍚庤兘鑷<E58598>姩閲嶈瘯锛堟渶澶?娆★級 | 鈴革笍 |
| 瀵硅瘽鍘嗗彶 | 鑳借幏鍙栨渶杩?杞<><E69D9E>璇?| 鈴革笍 |
| 鏁版嵁棰勮<EFBFBD> | 鎵ц<E98EB5>鍚庤繑鍥炲墠50琛岄<E7909B>瑙?| 鈴革笍 |
### 技术验收
### 鎶€鏈<EFBFBD>獙鏀?
| 指标 | 目标 | 状态 |
| 鎸囨爣 | 鐩<>爣 | 鐘舵€?|
|------|------|------|
| 浠g爜璐ㄩ噺 | 鏃燭ypeScript閿欒<E996BF> | 鈴革笍 |
| 云原生规范 | 100%符合 | ⏸️ |
| 错误处理 | 所有异常都有处理 | ⏸️ |
| 日志完整性 | 关键操作都有日志 | ⏸️ |
| 测试覆盖率 | ≥80% | ⏸️ |
| 浜戝師鐢熻<EFBFBD>鑼?| 100%绗﹀悎 | 鈴革笍 |
| 閿欒<EFBFBD>澶勭悊 | 鎵€鏈夊紓甯搁兘鏈夊<E98F88>鐞?| 鈴革笍 |
| 鏃ュ織瀹屾暣鎬?| 鍏抽敭鎿嶄綔閮芥湁鏃ュ織 | 鈴革笍 |
| 娴嬭瘯瑕嗙洊鐜?| 鈮?0% | 鈴革笍 |
### 鎬ц兘楠屾敹
| 指标 | 目标 | 状态 |
| 鎸囨爣 | 鐩<>爣 | 鐘舵€?|
|------|------|------|
| AI生成时间 | <5秒 | ⏸️ |
| AI鐢熸垚鏃堕棿 | <5绉?| 鈴革笍 |
| 浠爜鎵ц<E98EB5>鏃堕棿 | <3绉掞紙绠€鍗曟搷浣滐級 | 鈴革笍 |
| 端到端时间 | <10秒 | ⏸️ |
| <EFBFBD>埌绔<EFBFBD>椂闂?| <10绉?| 鈴革笍 |
---
## 馃摝 浜や粯娓呭崟
### 代码文件6个
### 浠g爜鏂囦欢锛?涓<>
1. `backend/prisma/schema.prisma` - 新增DcToolCAiHistory模型
2. `backend/scripts/create-tool-c-ai-history-table.mjs` - 建表脚本
3. `backend/src/modules/dc/tool-c/services/AICodeService.ts` - 400
4. `backend/src/modules/dc/tool-c/controllers/AIController.ts` - 200
5. `backend/src/modules/dc/tool-c/routes/index.ts` - 更新
6. `backend/test-tool-c-day3.mjs` - 测试脚本
1. 鉁?`backend/prisma/schema.prisma` - 鏂板<EFBFBD>DcToolCAiHistory妯″瀷
2. 鉁?`backend/scripts/create-tool-c-ai-history-table.mjs` - 寤鸿〃鑴氭湰
3. 鉁?`backend/src/modules/dc/tool-c/services/AICodeService.ts` - 400琛?
4. 鉁?`backend/src/modules/dc/tool-c/controllers/AIController.ts` - 200琛?
5. 鉁?`backend/src/modules/dc/tool-c/routes/index.ts` - 鏇存柊
6. 鉁?`backend/test-tool-c-day3.mjs` - 娴嬭瘯鑴氭湰
### 文档文件4个
### 鏂囨。鏂囦欢锛?涓<>
1. `工具C_AI_Few-shot示例库.md` - 10个示例详解
2. `工具C_Day3开发计划.md` - 本文档
3. `Tool-C技术债务清单.md` - 待优化项
4. `2025-12-06_工具C_Day3开发完成总结.md` - 总结报告
1. 鉁?`宸ュ叿C_AI_Few-shot绀轰緥搴?md` - 10<EFBFBD>ず渚嬭<EFBFBD>瑙?
2. 鉁?`宸ュ叿C_Day3寮€鍙戣<E98D99>鍒?md` - <EFBFBD>枃妗?
3. 鉁?`Tool-C鎶€鏈<EFBFBD>€哄姟娓呭崟.md` - 寰呬紭鍖栭」
4. 鉁?`2025-12-06_宸ュ叿C_Day3寮€鍙戝畬鎴愭€荤粨.md` - 鎬荤粨鎶ュ憡
---
## 馃敆 鐩稿叧鏂囨。
- [工具C_AI_Few-shot示例库.md](./工具C_AI_Few-shot示例库.md)
- [宸ュ叿C_AI_Few-shot绀轰緥搴?md](./宸ュ叿C_AI_Few-shot绀轰緥搴?md)
- [宸ュ叿C_MVP寮€鍙戣<EFBFBD>鍒抇V1.0.md](./宸ュ叿C_MVP寮€鍙戣<E98D99>鍒抇V1.0.md)
- [閫氱敤瀵硅瘽鏈嶅姟鎶藉彇璁″垝.md](../../../08-椤圭洰绠$悊/05-鎶€鏈<E282AC>€哄姟/閫氱敤瀵硅瘽鏈嶅姟鎶藉彇璁″垝.md)
- [云原生开发规范.md](../../../04-开发规范/08-云原生开发规范.md)
- [浜戝師鐢熷紑鍙戣<EFBFBD>鑼?md](../../../04-寮€鍙戣<EFBFBD>鑼?08-浜戝師鐢熷紑鍙戣<E98D99>鑼?md)
---
## 馃攧 椋庨櫓绠$悊
### 风险1: AI生成代码质量不稳定
### 椋庨櫓1: AI鐢熸垚浠g爜璐ㄩ噺涓嶇ǔ瀹?
**搴斿<E690B4><EFBFBD>**:
- ✅ 使用10个Few-shot示例提升质量
- ✅ 降低temperature至0.1
- ✅ 实施3次重试机制
- ✅ 添加AST静态检查Python服务)
- 鉁?浣跨敤10涓狥ew-shot绀轰緥鎻愬崌璐ㄩ噺
- 鉁?闄嶄綆temperature鑷?.1
- 鉁?瀹炴柦3娆¢噸璇曟満鍒?
- 鉁?娣诲姞AST闈欐€佹<E282AC>鏌ワ紙Python鏈嶅姟锛?
### 椋庨櫓2: LLM璋冪敤瓒呮椂
**搴斿<E690B4><EFBFBD>**:
- ✅ 设置合理的timeout10秒
- ✅ 前端显示加载状态
- ✅ 添加重试机制
- 鉁?璁剧疆鍚堢悊鐨則imeout锛?0绉掞級
- 鉁?鍓嶇<E98D93>鏄剧ず鍔犺浇鐘舵€?
- 鉁?娣诲姞閲嶈瘯鏈哄埗
### 椋庨櫓3: Python鎵ц<E98EB5>澶辫触
**搴斿<E690B4><EFBFBD>**:
- ✅ AI自我修正最多3次
- ✅ 友好错误提示
- ✅ 建议用户调整需求
- 鉁?AI鑷<49>垜淇<E59E9C><E6B787>锛堟渶澶?娆★級
- 鉁?鍙嬪ソ閿欒<E996BF>鎻愮ず
- 鉁?寤鸿<E5AFA4>鐢ㄦ埛璋冩暣闇€姹?
---
## 馃搳 棰勬湡鎴愭灉
**Day 3完成后**:
- Tool C用户可通过自然语言清洗数据
- ✅ AI能生成90%场景的正确代码
- ✅ 失败场景有自动重试机制
- ✅ 完整的对话历史管理
**Day 3瀹屾垚鍚?*:
- 鉁?Tool C鐢ㄦ埛鍙<EFBFBD>€氳繃鑷<EFBFBD>劧璇<EFBFBD>█娓呮礂鏁版嵁
- 鉁?AI鑳界敓鎴?0%鍦烘櫙鐨勬<E990A8><EFBFBD>唬鐮?
- 鉁?澶辫触鍦烘櫙鏈夎嚜鍔ㄩ噸璇曟満鍒?
- 鉁?瀹屾暣鐨勫<E990A8>璇濆巻鍙茬<E98D99>鐞?
**鏁翠綋杩涘害**:
- Day 1: Python微服务 ✅
- Day 2: Session管理 ✅
- Day 1: Python<EFBFBD>湇鍔?鉁?
- Day 2: Session绠$悊 鉁?
- Day 3: AI浠爜鐢熸垚 鈴革笍
- Day 4-5: 前端开发
- Day 6: 端到端测试
- Day 4-5: 鍓嶇<EFBFBD>寮€鍙?
- Day 6: <EFBFBD>埌绔<EFBFBD>祴璇?
---
## 馃摑 鏇存柊璁板綍
| 日期 | 版本 | 更新内容 | 更新人 |
| 鏃ユ湡 | 鐗堟湰 | 鏇存柊鍐呭<E98D90> | 鏇存柊浜?|
|------|------|---------|--------|
| 2025-12-06 | V1.0 | 初始创建明确9大决策和开发计划 | AI Assistant |
| 2025-12-06 | V1.0 | 鍒濆<EFBFBD>鍒涘缓锛屾槑纭?澶у喅绛栧拰寮€鍙戣<E98D99>鍒?| AI Assistant |
---
**文档状态**: ✅ 已确认
**下一步**: 开始执行开发计划预计5.5-6小时
**鏂囨。鐘舵€?*: 鉁?宸茬‘璁?
**涓嬩竴姝?*: 寮€濮嬫墽琛屽紑鍙戣<E98D99>鍒掞紙棰勮<E6A3B0>5.5-6灏忔椂锛?
**鍑嗗<E98D91>寮€濮嬪紑鍙戯紒** 馃殌
@@ -992,5 +992,6 @@ export const aiController = new AIController();