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:
@@ -1,107 +1,99 @@
|
||||
# **PRD:Tool C \- 科研数据编辑器 (MVP V1.1)**
|
||||
# **PRD嚗関ool C \- 蝘𤑳<EFBFBD><EFBFBD>唳旿蝻𤥁<EFBFBD><EFBFBD>?(MVP V1.1)**
|
||||
|
||||
| 文档版本 | V1.1 (工程细化版) |
|
||||
| <EFBFBD><EFBFBD>﹝<EFBFBD><EFBFBD>𧋦 | V1.1 (撌亦<EFBFBD>蝏<EFBFBD><EFBFBD><EFBFBD>? |
|
||||
| :---- | :---- |
|
||||
| **产品形态** | **Web 端数据编辑器 (AG Grid \+ AI Chat)** |
|
||||
| **核心策略** | **"AI-First" \+ "Server-side State"**。依靠 AI 生成 Python 代码完成清洗;以服务端 DataFrame 为单一数据源,前端负责渲染和轻量编辑。 |
|
||||
| **技术底座** | React \+ AG Grid \+ Node.js BFF \+ Python Sandbox (FastAPI) \+ DeepSeek-V3 |
|
||||
| **变更记录** | V1.1: 增加数据同步机制、撤销回滚策略、会话生命周期定义。 |
|
||||
| **鈭批<EFBFBD>敶X<EFBFBD>?* | **Web 蝡舀㺭<EFBFBD>桃<EFBFBD>颲穃膥 (AG Grid \+ AI Chat)** |
|
||||
| **<EFBFBD>詨<EFBFBD>蝑𣇉裦** | **"AI-First" \+ "Server-side State"**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?AI <20><><EFBFBD> Python 隞<><E99A9E>摰峕<E691B0>皜<EFBFBD><E79A9C>嚗𥕢誑<F0A595A2>滚𦛚蝡?DataFrame 銝箏<E98A9D>銝<EFBFBD><E98A9D>唳旿皞琜<E79A9E><E7909C>滨垢韐蠘提皜脫<E79A9C><E884AB>諹蝠<E8ABB9>讐<EFBFBD>颲㻫<E9A2B2>?|
|
||||
| **<EFBFBD><EFBFBD><EFBFBD>臬<EFBFBD>摨?* | React \+ AG Grid \+ Node.js BFF \+ Python Sandbox (FastAPI) \+ DeepSeek-V3 |
|
||||
| **<EFBFBD>䀹凒霈啣<EFBFBD>** | V1.1: 憓𧼮<EFBFBD><EFBFBD>唳旿<EFBFBD>峕郊<EFBFBD>箏<EFBFBD><EFBFBD><EFBFBD>伃<EFBFBD><EFBFBD><EFBFBD>墧<EFBFBD>蝑𣇉裦<EFBFBD><EFBFBD><EFBFBD>霂萘<EFBFBD><EFBFBD>賢𪂹<EFBFBD>笔<EFBFBD>銋剹<EFBFBD>?|
|
||||
|
||||
## **一、 MVP 核心目标 (Objectives)**
|
||||
## **銝<EFBFBD><EFBFBD>?MVP <20>詨<EFBFBD><E8A9A8>格<EFBFBD> (Objectives)**
|
||||
|
||||
1. **验证闭环:** 跑通 “自然语言 \-\> Python 代码 \-\> 后端执行 \-\> 前端刷新” 的完整链路。
|
||||
2. **数据一致性:** 确保手动编辑与 AI 操作不冲突,状态可追溯。
|
||||
3. **可用性:** 解决中文乱码、会话超时等实际工程问题。
|
||||
1. **撉諹<EFBFBD><EFBFBD>剔㴓嚗?* 頝煾<E9A09D>?<3F>𡏭䌊<F0A18FAD>嗉祗閮<E7A597> \-\> Python 隞<EFBFBD><EFBFBD> \-\> <EFBFBD>𡒊垢<EFBFBD>扯<EFBFBD> \-\> <20>滨垢<E6BBA8>瑟鰵<E7919F>?<3F><><EFBFBD><EFBFBD>湧曎頝胯<E9A09D>?
|
||||
2. **<EFBFBD>唳旿銝<EFBFBD><EFBFBD>湔<EFBFBD>改<EFBFBD>** 蝖桐<E89D96><E6A190>见𢆡蝻𤥁<E89DBB>銝?AI <20>滢<EFBFBD>銝滚<E98A9D>蝒<EFBFBD><E89D92><EFBFBD>嗆<EFBFBD><E59786>虾餈賣滲<E8B3A3>?
|
||||
3. **<EFBFBD>舐鍂<EFBFBD>改<EFBFBD>** 閫<><E996AB>銝剜<E98A9D>銋梁<E98A8B><E6A281><EFBFBD><EFBFBD>霂肽<E99C82><E882BD>嗥<EFBFBD>摰鮋<E691B0>撌亦<E6928C><E4BAA6>桅<EFBFBD><E6A185>?
|
||||
## **鈭䎚<E988AD>?霂衣<E99C82><E8A1A3>蠘<EFBFBD><E8A098><EFBFBD>瘙?(Functional Requirements)**
|
||||
|
||||
## **二、 详细功能需求 (Functional Requirements)**
|
||||
|
||||
### **1\. 界面框架与会话 (Shell & Session)**
|
||||
|
||||
* **P0: 左右分栏布局:** 左侧 AG Grid (70%),右侧 AI Chat (30%)。
|
||||
* **P0: 会话初始化 (Session Init):**
|
||||
* 用户上传文件 \-\> 后端开启 Python 进程/容器 \-\> 加载 df \-\> 返回 sessionId。
|
||||
* **编码检测:** 后端必须尝试 utf-8 和 gbk 解码,防止中文乱码。
|
||||
* **P1: 心跳与保活 (Keep-alive):**
|
||||
* 前端每 30s 发送心跳。
|
||||
* **超时策略:** 若超过 30min 无操作,后端释放内存。用户再次操作时,提示“会话已过期,请重新加载文件”。
|
||||
### **1\. <20>屸𢒰獢<F0A292B0>沲銝𦒘<E98A9D>霂?(Shell & Session)**
|
||||
|
||||
* **P0: 撌血𢰧<E8A180><F0A2B0A7><EFBFBD>撣<EFBFBD><E692A3>嚗?* 撌虫儒 AG Grid (70%)嚗<>𢰧靘?AI Chat (30%)<29>?
|
||||
* **P0: 隡朞<E99AA1><E69C9E>嘥<EFBFBD><E598A5>?(Session Init):**
|
||||
* <20>冽<EFBFBD>銝𠹺<E98A9D><F0A0B9BA><EFBFBD>辣 \-\> <20>𡒊垢撘<E59EA2><E69298>?Python 餈𤤿<E9A488>/摰孵膥 \-\> <20>㰘蝸 df \-\> 餈𥪜<E9A488> sessionId<49>?
|
||||
* **蝻𣇉<E89DBB>璉<EFBFBD>瘚页<E7989A>** <20>𡒊垢敹<E59EA2>◆撠肽<E692A0> utf-8 <20>?gbk 閫<><E996AB>嚗屸俈甇V葉<EFBCB6><E89189>僚<EFBFBD><E5839A><EFBFBD>?
|
||||
* **P1: 敹<>歲銝𦒘<E98A9D>瘣?(Keep-alive):**
|
||||
* <20>滨垢瘥?30s <20>煾<EFBFBD><E785BE><EFBFBD>頝喋<E9A09D>?
|
||||
* **頞<>𧒄蝑𣇉裦嚗?* <20>亥<EFBFBD>餈?30min <20>䭾<EFBFBD>雿頣<E99BBF><E9A0A3>𡒊垢<F0A1928A>𦠜𦆮<F0A6A09C><F0A686AE><EFBFBD><EFBFBD><EFBFBD>鍂<EFBFBD>瑕<EFBFBD>甈⊥<E79488>雿𨀣𧒄嚗峕<E59A97>蝷算<E89DB7>靝<EFBFBD>霂嘥歇餈<E6AD87><E9A488>嚗諹窈<E8ABB9>齿鰵<E9BDBF>㰘蝸<E3B098><E89DB8>辣<EFBFBD>腈<EFBFBD>?
|
||||
### **2\. 頞<>漣蝵烐聢 (The Grid) \- *<2A>滨垢鈭支<E988AD>***
|
||||
|
||||
* **P0: <20>唳旿撅閧內 (View):**
|
||||
* 通过 API 分页拉取数据(预览模式,仅取前 100-500 行)。
|
||||
* **列类型推断:** 前端根据后端返回的 dtypes 渲染列头图标(数值/文本/日期)。
|
||||
* <EFBFBD>朞<EFBFBD> API <EFBFBD><EFBFBD>△<EFBFBD>匧<EFBFBD><EFBFBD>唳旿嚗<EFBFBD><EFBFBD>閫<EFBFBD>芋撘𧶏<EFBFBD>隞<EFBFBD><EFBFBD><EFBFBD>?100-500 銵䕘<EFBFBD><EFBFBD>?
|
||||
* **<EFBFBD>㛖掩<EFBFBD>𧢲綫<EFBFBD>哨<EFBFBD>** <20>滨垢<E6BBA8>寞旿<E5AF9E>𡒊垢餈𥪜<E9A488><F0A5AA9C>?dtypes 皜脫<E79A9C><E884AB>堒仍<E5A092>暹<EFBFBD>嚗<EFBFBD>㺭<EFBFBD>?<3F><>𧋦/<2F>交<EFBFBD>嚗剹<E59A97>?
|
||||
* **P0: <20>见𢆡蝻𤥁<E89DBB> (Manual Edit):**
|
||||
* 支持双击修改单元格。
|
||||
* **关键逻辑(脏数据标记):** 用户修改后,单元格右标红,数据暂存在前端 dirtyRows 队列中。
|
||||
* <EFBFBD>舀<EFBFBD><EFBFBD><EFBFBD>稬靽格㺿<EFBFBD>訫<EFBFBD><EFBFBD>潦<EFBFBD>?
|
||||
* **<EFBFBD>喲睸<EFBFBD>餉<EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>唳旿<EFBFBD><EFBFBD>扇嚗㚁<EFBFBD>** <20>冽<EFBFBD>靽格㺿<E6A0BC>𠬍<EFBFBD><F0A0AC8D>訫<EFBFBD><E8A8AB>澆𢰧<E6BE86><F0A2B0A7>滯嚗峕㺭<E5B395>格<EFBFBD>摮睃銁<E79D83>滨垢 dirtyRows <EFBFBD>笔<EFBFBD>銝准<EFBFBD>?
|
||||
* **P0: <20>嗆<EFBFBD><E59786><EFBFBD> (UI Locking):**
|
||||
* 当 AI 正在执行时,Grid 变为 **只读 (Read-only)**,显示 Loading 遮罩。
|
||||
|
||||
* 敶?AI 甇<EFBFBD>銁<EFBFBD>扯<EFBFBD><EFBFBD>塚<EFBFBD>Grid <20>䀝蛹 **<EFBFBD>芾粉 (Read-only)**嚗峕遬蝷?Loading <EFBFBD>桃蔗<EFBFBD>?
|
||||
### **3\. AI Copilot <20>箄<EFBFBD><E7AE84>拇<EFBFBD> (The Brain) \- *<2A>𡒊垢撽勗𢆡***
|
||||
|
||||
#### **3.1 鈭支<E988AD>瘚<EFBFBD><E7989A> (Chat Loop)**
|
||||
|
||||
1. **用户输入:** “把年龄大于60的设为老年组”。
|
||||
1. **<EFBFBD>冽<EFBFBD>颲枏<EFBFBD>嚗?* <20>𨀣<EFBFBD>撟湧<E6929F>憭找<E686AD>60<36><30>挽銝箄<E98A9D><E7AE84>僑蝏<E58391><E89D8F>腈<EFBFBD>?
|
||||
2. **<EFBFBD>滨蔭<EFBFBD>峕郊 (Auto-Sync):** **(V1.1 <20>啣<EFBFBD>)**
|
||||
* **判定:** 前端检查是否有未保存的手动修改 (dirtyRows).
|
||||
* **动作:** 如果有,先静默发送 PATCH /api/data 将手动修改同步给后端 df。确保 AI 基于最新数据操作。
|
||||
3. **代码生成:** 后端调用 DeepSeek,生成 Pandas 代码。
|
||||
4. **预操作确认 (Action Card):**
|
||||
* 展示:代码预览 \+ 摘要。
|
||||
* 按钮:\[运行\] | \[取消\]。
|
||||
|
||||
#### **3.2 执行与回滚 (Execute & Rollback) \- (V1.1 核心)**
|
||||
* **<EFBFBD>文<EFBFBD>嚗?* <20>滨垢璉<E59EA2><E79289>交糓<E4BAA4>行<EFBFBD><E8A18C>芯<EFBFBD>摮条<E691AE><E69DA1>见𢆡靽格㺿 (dirtyRows).
|
||||
* **<EFBFBD>其<EFBFBD>嚗?* 憒<><E68692><EFBFBD>㚁<EFBFBD><E39A81><EFBFBD><EFBFBD>暺睃<E69ABA><E79D83>?PATCH /api/data 撠<><E692A0><EFBFBD>其耨<E585B6>孵<EFBFBD>甇亦<E79487><E4BAA6>𡒊垢 df<64><66>&靽?AI <20>箔<EFBFBD><E7AE94><EFBFBD><EFBFBD>唳㺭<E594B3>格<EFBFBD>雿栶<E99BBF>?
|
||||
3. **隞<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?* <20>𡒊垢靚<E59EA2>鍂 DeepSeek嚗𣬚<EFBFBD><EFBFBD>?Pandas 隞<EFBFBD><EFBFBD><EFBFBD>?
|
||||
4. **憸<EFBFBD><EFBFBD>雿𦦵&霈?(Action Card):**
|
||||
* 撅閧內嚗帋誨<EFBFBD><EFBFBD><EFBFBD>閫?\+ <20>䁅<EFBFBD><E48185>?
|
||||
* <EFBFBD>厰僼嚗䨵[餈鞱<E9A488>\] | \[<5B>𡝗<EFBFBD>\]<5D>?
|
||||
#### **3.2 <20>扯<EFBFBD>銝𤾸<E98A9D>皛?(Execute & Rollback) \- (V1.1 <20>詨<EFBFBD>)**
|
||||
|
||||
* **P0: <20>芸𢆡敹怎<E695B9> (Auto-Checkpoint):**
|
||||
* 在执行 exec(code) 之前,后端必须先对当前 df 进行内存快照(或序列化备份)。
|
||||
* 记录操作日志:ActionID: 101, Type: AI\_CODE, Code: "..."。
|
||||
* <EFBFBD>冽<EFBFBD>銵?exec(code) 銋见<EFBFBD>嚗<EFBFBD><EFBFBD>蝡臬<EFBFBD>憿餃<EFBFBD>撖孵<EFBFBD><EFBFBD>?df 餈𥡝<E9A488><F0A5A19D><EFBFBD><EFBFBD>敹怎<E695B9>嚗<EFBFBD><E59A97>摨誩<E691A8><E8AAA9>硋<EFBFBD>隞踝<E99A9E><E8B89D>?
|
||||
* 霈啣<EFBFBD><EFBFBD>滢<EFBFBD><EFBFBD>亙<EFBFBD>嚗鋫ctionID: 101, Type: AI\_CODE, Code: "..."<EFBFBD>?
|
||||
* **P0: <20>扯<EFBFBD><E689AF>漤<EFBFBD>:**
|
||||
* 成功:返回新的预览数据 \-\> 刷新 Grid \-\> 添加一条“操作成功”消息。
|
||||
* 失败:捕获 Python Traceback \-\> 让 AI 尝试自我修复 (Self-Correction) 一次 \-\> 若仍失败,向用户展示错误原因。
|
||||
* <EFBFBD>𣂼<EFBFBD>嚗朞<EFBFBD><EFBFBD>墧鰵<EFBFBD><EFBFBD><EFBFBD>閫<EFBFBD>㺭<EFBFBD>?\-\> <EFBFBD>瑟鰵 Grid \-\> 瘛餃<EFBFBD>銝<EFBFBD><EFBFBD>﹦<EFBFBD>𨀣<EFBFBD>雿𨀣<EFBFBD><EFBFBD>麨<EFBFBD>脲<EFBFBD><EFBFBD>胯<EFBFBD>?
|
||||
* 憭梯揖嚗𡁏<EFBFBD><EFBFBD>?Python Traceback \-\> 霈?AI 撠肽<EFBFBD><EFBFBD>芣<EFBFBD>靽桀<EFBFBD> (Self-Correction) 銝<EFBFBD>甈?\-\> <EFBFBD>乩<EFBFBD>憭梯揖嚗<EFBFBD><EFBFBD><EFBFBD>冽<EFBFBD>撅閧內<EFBFBD>躰秤<EFBFBD>笔<EFBFBD><EFBFBD>?
|
||||
* **P0: <20>日<EFBFBD><E697A5>滢<EFBFBD> (Undo):**
|
||||
* 聊天框每条成功记录下显示 \[撤销\] 按钮。
|
||||
* 逻辑:调用后端 rollback(action\_id) \-\> 恢复到该操作前的快照 \-\> 刷新 Grid。
|
||||
|
||||
* <EFBFBD>𠰴予獢<EFBFBD><EFBFBD><EFBFBD>⊥<EFBFBD><EFBFBD>蠘扇敶蓥<EFBFBD><EFBFBD>曄內 \[<5B>日<EFBFBD>\] <20>厰僼<E58EB0>?
|
||||
* <EFBFBD>餉<EFBFBD>嚗朞<EFBFBD><EFBFBD>典<EFBFBD>蝡?rollback(action\_id) \-\> <EFBFBD>W<EFBFBD><EFBFBD>啗砲<EFBFBD>滢<EFBFBD><EFBFBD>滨<EFBFBD>敹怎<EFBFBD> \-\> <EFBFBD>瑟鰵 Grid<EFBFBD>?
|
||||
### **4\. 敹急㭘<E680A5><E3AD98>誘 (Prompt Chips)**
|
||||
|
||||
* **P0:** 顶部工具栏按钮(生成变量、长宽转换等),点击仅作为“快捷短语”填入输入框,不触发独立 UI 逻辑,保持架构统一。
|
||||
|
||||
* **P0:** 憿園<EFBFBD>撌亙<EFBFBD><EFBFBD>𤩺<EFBFBD><EFBFBD>殷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗛<EFBFBD><EFBFBD><EFBFBD>鵭摰質蓮<EFBFBD>Y<EFBFBD>嚗㚁<EFBFBD><EFBFBD>孵稬隞<EFBFBD><EFBFBD>銝算<EFBFBD>𨅯翰<EFBFBD>瑞<EFBFBD>霂凌<EFBFBD>嘥‵<EFBFBD>亥<EFBFBD><EFBFBD>交<EFBFBD>嚗䔶<EFBFBD>閫血<EFBFBD><EFBFBD>祉<EFBFBD> UI <20>餉<EFBFBD>嚗䔶<E59A97><E494B6><EFBFBD>沲<EFBFBD><E6B2B2><EFBFBD>銝<EFBFBD><E98A9D>?
|
||||
### **5\. 撖澆枂 (Export)**
|
||||
|
||||
* **P0:** 导出 Excel。
|
||||
* 逻辑:后端直接将当前的 df (包含所有 AI 修改和手动修改) 写入 Excel 流并返回。
|
||||
|
||||
## **三、 异常处理规范 (Error Handling)**
|
||||
* **P0:** 撖澆枂 Excel<EFBFBD>?
|
||||
* <EFBFBD>餉<EFBFBD>嚗𡁜<EFBFBD>蝡舐凒<EFBFBD>亙<EFBFBD>敶枏<EFBFBD><EFBFBD>?df (<28><>鉄<EFBFBD><E98984><EFBFBD>?AI 靽格㺿<E6A0BC>峕<EFBFBD><E5B395>其耨<E585B6>? <20>坔<EFBFBD> Excel 瘚<>僎餈𥪜<E9A488><F0A5AA9C>?
|
||||
## **銝剹<E98A9D>?撘<>虜憭<E8999C><E686AD>閫<EFBFBD><E996AB> (Error Handling)**
|
||||
|
||||
| 撘<>虜<EFBFBD>箸艶 | <20>滨垢銵函緵 | <20>𡒊垢憭<E59EA2><E686AD> |
|
||||
| :---- | :---- | :---- |
|
||||
| **中文乱码** | 提示“编码格式识别失败,请手动选择” | 尝试 chardet 检测,失败则报错 |
|
||||
| **AI 代码报错** | Chat 气泡变红,显示“AI 正在尝试修复...” | 捕获 stderr,将错误反喂给 AI 重试 (Max 1次) |
|
||||
| **会话过期** | 全屏遮罩“会话已过期” | 清理 Redis/内存,返回 401/404 |
|
||||
| **手动修改冲突** | 提示“正在同步数据...” | 优先处理手动 Patch,再执行 AI 任务 |
|
||||
| **銝剜<EFBFBD>銋梁<EFBFBD>** | <EFBFBD>鞟內<EFBFBD>𦦵<EFBFBD><EFBFBD><EFBFBD>聢撘讛<EFBFBD><EFBFBD>怠仃韐伐<EFBFBD>霂瑟<EFBFBD><EFBFBD>券<EFBFBD>㗇𥋘<EFBFBD>?| 撠肽<E692A0> chardet 璉<>瘚页<E7989A>憭梯揖<E6A2AF>蹱𥁒<E8B9B1>?|
|
||||
| **AI 隞<EFBFBD><EFBFBD><EFBFBD>仿<EFBFBD>** | Chat 瘞娍部<EFBFBD>条滯嚗峕遬蝷算<EFBFBD>𦯷I 甇<>銁撠肽<E692A0>靽桀<E99DBD>...<2E>?| <20>閗繮 stderr嚗<72><E59A97><EFBFBD>躰秤<E8BAB0>滚<EFBFBD>蝏?AI <20>滩<EFBFBD> (Max 1甈? |
|
||||
| **隡朞<EFBFBD>餈<EFBFBD><EFBFBD>** | <EFBFBD>典<EFBFBD><EFBFBD>桃蔗<EFBFBD>靝<EFBFBD>霂嘥歇餈<EFBFBD><EFBFBD><EFBFBD>?| 皜<><E79A9C> Redis/<2F><><EFBFBD>嚗諹<E59A97><E8ABB9>?401/404 |
|
||||
| **<EFBFBD>见𢆡靽格㺿<EFBFBD>脩<EFBFBD>** | <EFBFBD>鞟內<EFBFBD>𨀣迤<EFBFBD>典<EFBFBD>甇交㺭<EFBFBD>?..<2E>?| 隡睃<E99AA1>憭<EFBFBD><E686AD><EFBFBD>见𢆡 Patch嚗<68><E59A97><EFBFBD>扯<EFBFBD> AI 隞餃𦛚 |
|
||||
|
||||
## **四、 开发与测试重点 (QA Focus)**
|
||||
## **<EFBFBD>䜘<EFBFBD>?撘<><E69298>睲<EFBFBD>瘚贝<E7989A><E8B49D>滨<EFBFBD> (QA Focus)**
|
||||
|
||||
1. **銝<><E98A9D>湔<EFBFBD>扳<EFBFBD>霂𤏪<E99C82>**
|
||||
* 先手动改一个值,再让 AI 删一行,确认那个值还在不在(或者是否正确被删)。
|
||||
* 先让 AI 改一列,再撤销,确认是否完全恢复。
|
||||
2. **边界测试:**
|
||||
* 上传空文件。
|
||||
* 上传全中文列名的文件。
|
||||
* 让 AI 计算一个不存在的列。
|
||||
3. **性能测试:**
|
||||
* 连续快速发送 5 条指令,确保后端是**串行队列**处理,而不是并发搞乱数据。
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>冽㺿銝<EFBFBD>銝芸<EFBFBD>潘<EFBFBD><EFBFBD>滩悟 AI <20>牐<EFBFBD>銵䕘<E98AB5>蝖株恕<E6A0AA><E68195>葵<EFBFBD>潸<EFBFBD><E6BDB8>其<EFBFBD><E585B6>剁<EFBFBD><E58981>𤥁<EFBFBD><F0A4A581>糓<EFBFBD>行迤蝖株◤<E6A0AA>𩤃<EFBFBD><F0A9A483>?
|
||||
* <EFBFBD><EFBFBD>悟 AI <EFBFBD>嫣<EFBFBD><EFBFBD>梹<EFBFBD><EFBFBD>齿伃<EFBFBD><EFBFBD>嚗𣬚&霈斗糓<EFBFBD>血<EFBFBD><EFBFBD>冽<EFBFBD>憭溻<EFBFBD>?
|
||||
2. **颲寧<EFBFBD>瘚贝<EFBFBD>嚗?*
|
||||
* 銝𠹺<EFBFBD>蝛箸<EFBFBD>隞嗚<EFBFBD>?
|
||||
* 銝𠹺<EFBFBD><EFBFBD>其葉<EFBFBD><EFBFBD><EFBFBD><EFBFBD>滨<EFBFBD><EFBFBD><EFBFBD>辣<EFBFBD>?
|
||||
* 霈?AI 霈∠<EFBFBD>銝<EFBFBD>銝芯<EFBFBD>摮睃銁<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
3. **<EFBFBD>扯<EFBFBD>瘚贝<EFBFBD>嚗?*
|
||||
* 餈䂿賒敹恍<EFBFBD>笔<EFBFBD><EFBFBD>?5 <20>⊥<EFBFBD>隞歹<E99A9E>蝖桐<E89D96><E6A190>𡒊垢<F0A1928A>?*銝脰<E98A9D><E884B0>笔<EFBFBD>**憭<><E686AD>嚗諹<E59A97>䔶<EFBFBD><E494B6>臬僎<E887AC>烐<EFBFBD>銋望㺭<E69C9B>柴<EFBFBD>?
|
||||
## **鈭𢛵<E988AD>?<3F><><EFBFBD>嚗𡁏㺭<F0A1818F>桀<EFBFBD>甇?API 摰帋<E691B0> (蝞<><E89D9E>?**
|
||||
|
||||
## **五、 附录:数据同步 API 定义 (简版)**
|
||||
|
||||
* POST /api/sync: 前端 \-\> 后端。发送手动修改的 Diff。
|
||||
* POST /api/sync: <20>滨垢 \-\> <20>𡒊垢<F0A1928A><E59EA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>其耨<E585B6>寧<EFBFBD> Diff<66>?
|
||||
* Payload: \[{ rowId: "P001", col: "age", value: 66 }\]
|
||||
* POST /api/run: 前端 \-\> 后端。发送 AI 代码执行请求。
|
||||
* POST /api/run: <EFBFBD>滨垢 \-\> <EFBFBD>𡒊垢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?AI 隞<><E99A9E><EFBFBD>扯<EFBFBD>霂瑟<E99C82><E7919F>?
|
||||
* Payload: { code: "df\['new'\] \= 1", snapshot: true }
|
||||
* POST /api/undo: 前端 \-\> 后端。
|
||||
* POST /api/undo: <EFBFBD>滨垢 \-\> <EFBFBD>𡒊垢<EFBFBD>?
|
||||
* Payload: { step: \-1 }
|
||||
|
||||
\#\#\# 蝏坔<E89D8F><E59D94>穃𣪧<E7A983>毺<EFBFBD>銝<EFBFBD><E98A9D>亥<EFBFBD><E4BAA5>餌<EFBFBD>
|
||||
|
||||
\*\*“V1.1 的核心在于‘状态管理’。请务必保证后端 Python 内存里的 \`DataFrame\` 是唯一的‘真理来源 (Source of Truth)’。前端的所有操作(无论是手改还是 AI 改),本质上都是在向这个真理层发送指令和同步状态。”\*\*
|
||||
\*\*<EFBFBD>𦛼1.1 <EFBFBD><EFBFBD>瓲敹<EFBFBD>銁鈭𢛶<EFBFBD>条𠶖<EFBFBD><EFBFBD>恣<EFBFBD><EFBFBD><EFBFBD>踺<EFBFBD><EFBFBD>窈<EFBFBD>∪<EFBFBD>靽肽<EFBFBD><EFBFBD>𡒊垢 Python <EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣬚<EFBFBD> \`DataFrame\` <EFBFBD>臬𣈲銝<EFBFBD><EFBFBD><EFBFBD><EFBFBD>条<EFBFBD><EFBFBD><EFBFBD>䔉皞?(Source of Truth)<EFBFBD>踺<EFBFBD><EFBFBD><EFBFBD>蝡舐<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗇<EFBFBD>雿頣<EFBFBD><EFBFBD>㰘捏<EFBFBD>舀<EFBFBD><EFBFBD>寡<EFBFBD><EFBFBD>?AI <20>對<EFBFBD>嚗峕𧋦韐其<E99F90><E585B6>賣糓<E8B3A3>典<EFBFBD>餈嗘葵<E59798>毺<EFBFBD>撅<EFBFBD><E69285><EFBFBD><EFBFBD><EFBFBD>隞文<E99A9E><E69687>峕郊<E5B395>嗆<EFBFBD><E59786><EFBFBD><EFBFBD><EFBFBD>𩄼*\*
|
||||
|
||||
现在,您可以拿着这份文档,很有底气地去和开发团队开工了。它已经堵上了最容易翻车的几个漏洞。
|
||||
<EFBFBD>啣銁嚗峕<EFBFBD><EFBFBD>臭誑<EFBFBD>輻<EFBFBD>餈嗘遢<EFBFBD><EFBFBD>﹝嚗<EFBFBD><EFBFBD><EFBFBD>匧<EFBFBD>瘞𥪜𧑐<EFBFBD>餃<EFBFBD>撘<EFBFBD><EFBFBD>穃𣪧<EFBFBD>笔<EFBFBD>撌乩<EFBFBD><EFBFBD><EFBFBD><EFBFBD>撌脩<EFBFBD><EFBFBD>萎<EFBFBD>鈭<EFBFBD><EFBFBD>摰寞<EFBFBD>蝧餉膠<EFBFBD><EFBFBD><EFBFBD>銝芣<EFBFBD>瘣𠺶<EFBFBD>?
|
||||
|
||||
Reference in New Issue
Block a user