feat(admin): Add user management and upgrade to module permission system

Features - User Management (Phase 4.1):
- Database: Add user_modules table for fine-grained module permissions
- Database: Add 4 user permissions (view/create/edit/delete) to role_permissions
- Backend: UserService (780 lines) - CRUD with tenant isolation
- Backend: UserController + UserRoutes (648 lines) - 13 API endpoints
- Backend: Batch import users from Excel
- Frontend: UserListPage (412 lines) - list/filter/search/pagination
- Frontend: UserFormPage (341 lines) - create/edit with module config
- Frontend: UserDetailPage (393 lines) - details/tenant/module management
- Frontend: 3 modal components (592 lines) - import/assign/configure
- API: GET/POST/PUT/DELETE /api/admin/users/* endpoints

Architecture Upgrade - Module Permission System:
- Backend: Add getUserModules() method in auth.service
- Backend: Login API returns modules array in user object
- Frontend: AuthContext adds hasModule() method
- Frontend: Navigation filters modules based on user.modules
- Frontend: RouteGuard checks requiredModule instead of requiredVersion
- Frontend: Remove deprecated version-based permission system
- UX: Only show accessible modules in navigation (clean UI)
- UX: Smart redirect after login (avoid 403 for regular users)

Fixes:
- Fix UTF-8 encoding corruption in ~100 docs files
- Fix pageSize type conversion in userService (String to Number)
- Fix authUser undefined error in TopNavigation
- Fix login redirect logic with role-based access check
- Update Git commit guidelines v1.2 with UTF-8 safety rules

Database Changes:
- CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled)
- ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code)
- INSERT 4 permissions + role assignments
- UPDATE PUBLIC tenant with 8 module subscriptions

Technical:
- Backend: 5 new files (~2400 lines)
- Frontend: 10 new files (~2500 lines)
- Docs: 1 development record + 2 status updates + 1 guideline update
- Total: ~4900 lines of code

Status: User management 100% complete, module permission system operational
This commit is contained in:
2026-01-16 13:42:10 +08:00
parent 98d862dbd4
commit 66255368b7
560 changed files with 70424 additions and 52353 deletions

View File

@@ -1,34 +1,37 @@
# **諤サ菴<EFBFBD> PRD<52>壼現逍礼ァ醍<EFBDA7>疲匱閭ス謨ー謐ョ貂<EFBDAE>エ怜ケウ蜿?(The Data Cleaning Platform)**
# **总体 PRD医疗科研智能数据清洗平台 (The Data Cleaning Platform)**
| <EFBFBD>。」迚域悽 | V1.0 (蝓コ莠主キ・蜈キ邂ア譫カ譫? |
| 文档版本 | V1.0 (基于工具箱架构) |
| :---- | :---- |
| **莠ァ蜩∝ス「諤?* | 莨∽ク夂コ?Web SaaS 蟷ウ蜿ー |
| **譬ク蠢<EFBFBD>サキ蛟?* | 荳コ荳エ蠎雁現逕滓署萓?**窶應ク€遶吝シ鞘€?* 逧<>焚謐ョ豐サ逅<EFBDBB><E98085>蜉幢シ瑚ァ」蜀ウ螟壽コ仙シよ桷謨ー謐ョ蜷亥ケカ髫セ縲∫羅蜴<E7BE85>枚譛ャ謠仙叙髫セ縲∫サ溯ョ。蜑肴ク<E882B4>エ礼ケ∫瑞逧<E7919E>ク牙、ァ逞帷せ縲?|
| **謚€譛ッ譫カ譫?* | Node.js \+ React \+ Python/R (扈溯ョ。譛榊苅) \+ LLM |
| **产品形态** | 企业级 Web SaaS 平台 |
| **核心价值** | 为临床医生提供 **“一站式”** 的数据治理能力,解决多源异构数据合并难、病历文本提取难、统计前清洗繁琐的三大痛点。 |
| **技术架构** | Node.js \+ React \+ Python/R (统计服务) \+ LLM |
## **荳€縲?鬘ケ逶ョ閭梧勹荳守岼譬?(Background & Objectives)**
## **一、 项目背景与目标 (Background & Objectives)**
### **1.1 核心痛点**
荳エ蠎顔ァ醍<EFBFBD>疲焚謐ョ逧<EFBFBD>㊥螟<EFBFBD>ソ<EFBFBD>ィ具シ<EFBFBD>ata Preparation<6F>€壼クク蜊<EFBDB8>謐ョ謨エ荳ェ遘醍<E98198>泌捉譛溽<E8AD9B>?80% 譌カ髣エ縲ょ現逕滄擇荳エ荳牙、ァ髦サ遒搾シ<E690BE>
临床科研数据的准备过程Data Preparation通常占据整个科研周期的 80% 时间。医生面临三大阻碍:
1. **乱 (Messy):** HIS 导出的数据分散在多个 Excel门诊、住院、检验ID 对不上,时间线混乱。
2. **杂 (Unstructured):** 大量关键信息(如病理诊断、出院小结)存在于文本段落中,无法直接统计。
3. **错 (Dirty):** 缺失值、异常值、录入错误频发不符合统计软件SPSS/SAS的格式要求。
1. **荵?(Messy):** HIS 蟇シ蜃コ逧<EFBDBA>焚謐ョ蛻<EFBDAE>淵蝨ィ螟壻クェ Excel<65>磯葎隸翫€∽ス城劼縲∵」€鬪鯉シ会シ栗D 蟇ケ荳堺ク奇シ梧慮髣エ郤ソ豺キ荵ア縲?
2. **譚?(Unstructured):** 螟ァ驥丞<E9A9A5>髞ョ菫。諱ッ<E8ABB1>亥ヲら羅逅<E7BE85>ッ頑妙縲∝<E7B8B2>髯「蟆冗サ難シ牙ュ伜惠莠取枚譛ャ谿オ關ス荳ュ<E88DB3>梧裏豕慕峩謗・扈溯ョ。縲?
3. **髞?(Dirty):** 郛コ螟ア蛟シ縲∝シょクク蛟シ縲∝ス募<EFBDBD>髞呵ッッ鬚大書<E5A4A7>御ク咲ャヲ蜷育サ溯ョ。霓ッ莉カ<E88E89><EFBDB6>PSS/SAS<41>臥噪譬シ蠑剰ヲ∵アゅ€?
### **1.2 产品目标**
<EFBFBD>サコ荳€荳?**窶懈オ∫ィ句喧縲∵匱閭ス蛹悶€∽ス朱葎讒帚€?* 逧<>焚謐ョ貂<EFBDAE>エ怜ケウ蜿ー<E89CBF><EFBDB0>
构建一个 **“流程化、智能化、低门槛”** 的数据清洗平台:
* **讓。蝮怜<EFBFBD>?(Modular):** <EFBFBD>、肴揩豬∫ィ区究隗」荳コ荳我クェ迢ャ遶句キ・蜈キ<EFBFBD>碁剄菴手ョ、遏・雍溯差縲?
* **蜿ッ菫。襍?(Trustworthy):** 騾夊ソ<EFBFBD>€懷曙讓。蝙矩ェ瑚ッ≫€晏柱窶懷<EFBFBD><EFBFBD>ィ玖ソス貅ッ窶晢シ瑚ァ」蜀ウ蟇?AI 逧<>ソ。莉サ蜊ア譛コ縲?
* **鬮俶€ァ閭ス (Performant):** 謾ッ謖<EFBFBD> 10荳? 陦梧焚謐ョ逧<EFBDAE>オ∝シ丞、<E4B89E>炊荳主ョ樊慮郛冶セ代€?
## **莠後€?莠ァ蜩∵€サ菴捺楔譫<E6A594> (Product Architecture)**
* **模块化 (Modular):** 将复杂流程拆解为三个独立工具,降低认知负荷。
* **可信赖 (Trustworthy):** 通过“双模型验证”和“全过程追溯”,解决对 AI 的信任危机。
* **高性能 (Performant):** 支持 10万+ 行数据的流式处理与实时编辑。
蟷ウ蜿ー驥<EFBFBD>畑 **窶? \+ 3窶?* 譫カ譫<EFBDB6>ィ。蠑擾シ?*1 荳ェ扈滉ク€蟾・菴懷<E88FB4>?\+ 3 荳ェ蝙ら峩謨郁<E8ACA8>蟾・蜈?*縲?
### **2.1 譫カ譫<EFBDB6><E8ADAB>?*
## **二、 产品总体架构 (Product Architecture)**
平台采用 **“1 \+ 3”** 架构模式:**1 个统一工作台 \+ 3 个垂直效能工具**。
### **2.1 架构图**
graph TD
User\[荳エ蠎雁現逕<EFBFBD>/遘醍<E98198>比ココ蜻禄] \--\> Portal\[譎コ閭ス謨ー謐ョ貂<EFBDAE>エ怜キ・菴懷<E88FB4>?(Portal)\]
User\[临床医生/科研人员\] \--\> Portal\[智能数据清洗工作台 (Portal)\]
subgraph The\_Toolkit \[效能工具箱\]
Portal \--\> ToolA\[工具 A: 超级合并器\]
@@ -37,8 +40,8 @@ graph TD
end
subgraph Data\_Flow \[数据流转\]
ToolA \--蜷亥ケカ蜷取焚謐?-\> ToolB
ToolB \--扈捺桷蛹匁焚謐?-\> ToolC
ToolA \--合并后数据--\> ToolB
ToolB \--结构化数据--\> ToolC
ToolC \--清洗后数据集--\> Analysis\[智能数据分析模块\]
end
@@ -52,52 +55,58 @@ graph TD
ToolB \-.-\> Engine2
ToolC \-.-\> Engine3
### **2.2 讓。蝮怜ョ壻ケ我ク手セケ逡?*
### **2.2 模块定义与边界**
| 模块名称 | 对应场景 | 核心任务 | 关键产出 | 详细文档 |
| :---- | :---- | :---- | :---- | :---- |
| **蟾・菴懷<EFBFBD>?(Portal)** | 蜈ィ螻€蜈・蜿」 | 莉サ蜉。逶第而縲∬オ<E288AC>コァ邂。逅<EFBDA1>€∬キィ蟾・蜈キ豬∬スャ | 扈滉ク€莉ェ陦ィ逶?| [PRD\_謨ー謐ョ貂<EFBDAE>エ怜キ・菴懷床](https://www.google.com/search?q=PRD_%E6%95%B0%E6%8D%AE%E6%B8%85%E6%B4%97%E5%B7%A5%E4%BD%9C%E5%8F%B0.md) |
| **工作台 (Portal)** | 全局入口 | 任务监控、资产管理、跨工具流转 | 统一仪表盘 | [PRD\_数据清洗工作台](https://www.google.com/search?q=PRD_%E6%95%B0%E6%8D%AE%E6%B8%85%E6%B4%97%E5%B7%A5%E4%BD%9C%E5%8F%B0.md) |
| **工具 A (Merger)** | 多源合并 | ID 对齐、访视基准合并、时间窗清洗 | 宽表 (Wide Table) | [PRD\_工具A\_超级合并器\_V2](https://www.google.com/search?q=PRD_%E5%B7%A5%E5%85%B7A_%E8%B6%85%E7%BA%A7%E5%90%88%E5%B9%B6%E5%99%A8_V2.md) |
| **蟾・蜈キ B (AI)** | <EFBFBD>悽謠仙叙 | OCR縲∝ョ樔ス捺署蜿悶€<E682B6>嚼遘∬┳謨上€∽コ、蜿蛾ェ瑚ッ?| 扈捺桷蛹門ュ玲ョ?| [PRD\_蟾・蜈キB\_逞<5F>紙扈捺桷蛹匁惻蝎ィ莠コ\_V2](https://www.google.com/search?q=PRD_%E5%B7%A5%E5%85%B7B_%E7%97%85%E5%8E%86%E7%BB%93%E6%9E%84%E5%8C%96%E6%9C%BA%E5%99%A8%E4%BA%BA_V2.md) |
| **蟾・蜈キ C (Editor)** | 豺ア蠎ヲ貂<EFBFBD><EFBFBD> | 郛コ螟ア蝪ォ陦・縲∝シょクク螟<EFBDB8>炊縲∝序驥剰ョ。邂励€<C280>邂?| 譛€扈亥<E68988>譫宣寔 | [PRD\_蟾・蜈キC\_遘醍<E98198>疲焚謐ョ郛冶セ大勣\_V2](https://www.google.com/search?q=PRD_%E5%B7%A5%E5%85%B7C_%E7%A7%91%E7%A0%94%E6%95%B0%E6%8D%AE%E7%BC%96%E8%BE%91%E5%99%A8_V2.md) |
| **工具 B (AI)** | 文本提取 | OCR、实体提取、隐私脱敏、交叉验证 | 结构化字段 | [PRD\_工具B\_病历结构化机器人\_V2](https://www.google.com/search?q=PRD_%E5%B7%A5%E5%85%B7B_%E7%97%85%E5%8E%86%E7%BB%93%E6%9E%84%E5%8C%96%E6%9C%BA%E5%99%A8%E4%BA%BA_V2.md) |
| **工具 C (Editor)** | 深度清洗 | 缺失填补、异常处理、变量计算、分箱 | 最终分析集 | [PRD\_工具C\_科研数据编辑器\_V2](https://www.google.com/search?q=PRD_%E5%B7%A5%E5%85%B7C_%E7%A7%91%E7%A0%94%E6%95%B0%E6%8D%AE%E7%BC%96%E8%BE%91%E5%99%A8_V2.md) |
## **荳峨€?譬ク蠢<EFBDB8>ク壼苅豬∫ィ<E288AB> (Core Workflows)**
## **三、 核心业务流程 (Core Workflows)**
### **3.1 蜈ク蝙句<EFBFBD>體セ霍ッ蝨コ譎?(The "Happy Path")**
### **3.1 典型全链路场景 (The "Happy Path")**
蝨コ譎ッ<EFBFBD>壼現逕滓噺髮<EFBFBD><EFBFBD> 100 莉ス謔」閠<EFBDA3>噪菴城劼 Excel 蜥檎羅逅<E7BE85>冠蜻?PDF<44>碁怙隕∬ソ幄。檎函蟄伜<E89F84>譫舌€?
1. **蜷亥ケカ (Step 1):** 蝨?**蟾・菴懷<E88FB4>?* 蜷ッ蜉ィ **蟾・蜈キ A**縲ゆク贋シ<E8B48B>窶應ス城劼隶ー蠖補€昜クコ荳サ陦ィ<E999A6>€懈」€鬪悟黒窶昜クコ霎<EFBDBA>。ィ縲らウサ扈溷渕莠寂€<C280>髯「譌・譛?ツア7螟ゥ窶晉噪譌カ髣エ遯暦シ悟ー<E6829F>€鬪梧焚謐ョ謖りスス蛻ー菴城劼隶ー蠖穂ク翫€?
2. **謠仙叙 (Step 2):** 蜷亥ケカ螳梧<EFBFBD>蜷趣シ檎せ蜃サ窶懈オ∬スャ蛻ー蟾・蜈キ B窶昴€?*蟾・蜈キ B** 閾ェ蜉ィ蜉<EFBDA8>霓ス謨ー謐ョ縲ょ現逕滄€画叫窶懆ぜ逋檎羅逅<E7BE85>ィ。迚遺€晢シ悟曙讓。蝙具シ<E585B7>eepSeek & Qwen<65>牙ケカ蜿第署蜿問€懆ち逖、螟ァ蟆鞘€晏柱窶懈キ句キエ扈楢スャ遘サ窶昴€ょ現逕溷惠蜈ィ譎ッ鄂第<E98482>シ荳ュ陬∝<E999AC>荳堺ク€閾エ逧<EFBDB4>焚謐ョ縲?
3. **<EFBFBD><EFBFBD> (Step 3):** 謠仙叙螳梧<EFBFBD>蜷趣シ檎せ蜃サ窶懈オ∬スャ蛻ー蟾・蜈キ C窶昴€?*蟾・蜈キ C** 謇灘シ€郛冶セ大勣縲ょ現逕滄€夊ソ<E5A48A>セァ霎ケ譬丞書邇ー窶懆ち逖、螟ァ蟆鞘€晄怏郛コ螟ア蛟シ<E89B9F>御ク€髞ョ逕ィ蝮<EFBDA8>€シ蝪ォ陦・<E999A6>帛ケカ譁ー蠅櫁ョ。邂怜<E98282> BMI縲?
4. **<EFBFBD> (Step 4):** 謨ー謐ョ貂<EFBFBD>エ怜ョ梧ッ包シ御ソ晏ュ倅クコ窶懷<EFBFBD>譫宣寔\_V1窶昴€ゆク€髞ョ蜿鷹€<C280>邉サ扈溽噪窶懈匱閭ス謨ー謐ョ蛻<EFBDAE>梵窶晄ィ。蝮苓ソ幄。?Kaplan-Meier 逕溷ュ伜<EFBDAD>譫舌€?
## **蝗帙€?蜈ィ螻€髱槫粥閭ス髴€豎?(Non-Functional Requirements)**
场景:医生收集了 100 份患者的住院 Excel 和病理报告 PDF需要进行生存分析。
1. **合并 (Step 1):** **工作台** 启动 **工具 A**。上传“住院记录”为主表,“检验单”为辅表。系统基于“入院日期 ±7天”的时间窗将检验数据挂载到住院记录上。
2. **提取 (Step 2):** 合并完成后,点击“流转到工具 B”。**工具 B** 自动加载数据。医生选择“肺癌病理模版”双模型DeepSeek & Qwen并发提取“肿瘤大小”和“淋巴结转移”。医生在全景网格中裁决不一致的数据。
3. **清洗 (Step 3):** 提取完成后,点击“流转到工具 C”。**工具 C** 打开编辑器。医生通过侧边栏发现“肿瘤大小”有缺失值,一键用均值填补;并新增计算列 BMI。
4. **分析 (Step 4):** 数据清洗完毕,保存为“分析集\_V1”。一键发送至系统的“智能数据分析”模块进行 Kaplan-Meier 生存分析。
## **四、 全局非功能需求 (Non-Functional Requirements)**
### **4.1 用户体验策略 (UX Strategy)**
* **蜴サ蜿ッ隗<EFBFBD> (De-visualization):** 蟇ケ莠主キ・蜈キ A 蜥?B<>御ク榊ア慕、コ蜈ィ驥<EFBDA8> Excel 鄂第<E98482><EFBFBD>碁㊦逕?**窶懷髄蟇シ驟咲ス?\-\> 鮟醍將螟<E5B087>炊 \-\> 鮟<>≡鬚<E289A1>ァ遺€?* 逧<>ィ。蠑擾シ碁剄菴取オ剰ァ亥勣貂イ譟灘視蜉幢シ瑚★辟ヲ扈捺棡縲?
* **蜿埼ヲ郁。・蛛ソ (Feedback Loop):** 譌「辟カ逵倶ク崎ァ∬ソ<EFBFBD>ィ具シ悟ソ<EFBFBD>。サ蠅槫シコ扈捺棡蜿埼ヲ医€よッ丈クェ蟾・蜈キ蠢<EFBFBD>。サ謠蝉セ幄ッヲ扈<EFBFBD>噪 **窶懈焚謐ョ雍ィ驥乗冠蜻岩€?*<2A>亥ヲゑシ壻ク「蠑<EFBDA2>。梧焚縲∝<E7B8B2>遯∫紫縲∫ゥコ蛟シ邇<EFBDBC>シ峨€?
* **譛ャ蝨ー莨伜<EFBFBD> (Local-First):** 蟾・蜈キ C 驥<> IndexedDB 蟄伜お<EFBFBD>檎。ョ菫晉シ冶セ第桃菴懶シ育ュ幃€€∵崛謐「<EFBFBD>画裏鄂醍サ懷サカ霑溘€?
### **4.2 謨ー謐ョ螳牙<E89EB3>荳朱嚼遘?(Security & Privacy)**
* **去可视化 (De-visualization):** 对于工具 A 和 B不展示全量 Excel 网格,采用 **“向导配置 \-\> 黑盒处理 \-\> 黄金预览”** 的模式,降低浏览器渲染压力,聚焦结果。
* **反馈补偿 (Feedback Loop):** 既然看不见过程,必须增强结果反馈。每个工具必须提供详细的 **“数据质量报告”**(如:丢弃行数、冲突率、空值率)。
* **本地优先 (Local-First):** 工具 C 采用 IndexedDB 存储,确保编辑操作(筛选、替换)无网络延迟。
### **4.2 数据安全与隐私 (Security & Privacy)**
* **PII 脱敏:** 所有发送给 LLM (工具 B) 的数据,**必须**在后端先经过正则脱敏(姓名、身份证、手机号)。
* **数据隔离:** 不同用户的数据严格物理隔离S3 路径 / DB Row Level Security
* **PII 閼ア謨<EFBDB1>:** 謇€譛牙書騾∫サ<E288AB> LLM (蟾・蜈キ B) 逧<>焚謐ョ<E8AC90><EFBDAE>**蠢<>。サ**蝨ィ蜷守ォッ蜈育サ剰ソ<E589B0>ュ」蛻呵┳謨擾シ亥ァ灘錐縲∬コォ莉ス隸√€∵焔譛コ蜿キ<E89CBF>€?
* **謨ー謐ョ髫皮ヲサ:** 荳榊酔逕ィ謌キ逧<EFBDB7>焚謐ョ荳・譬シ迚ゥ逅<EFBDA9>囈遖サ<E98196><EFBDBB>3 霍ッ蠕<EFBDAF> / DB Row Level Security<74>€?
### **4.3 性能指标 (Performance SLAs)**
* **<EFBFBD>サカ謾ッ謖<EFBFBD>:** 蜊穂クェ譁<EFBDAA>サカ謾ッ謖∵怙螟?**50MB** 謌?**50荳<30><EFBFBD>**縲?
* **文件支持:** 单个文件支持最大 **50MB****50万行**
* **响应速度:**
* 蟾・蜈キ A 蜷亥ケカ<EFBDB9>?0荳<30>。鯉シ会シ喀< 60遘偵€?
* 蟾・蜈キ B 謠仙叙<E4BB99>亥ケカ蜿托シ会シ壼叙蜀ウ莠<EFBDB3> Token 驥擾シ碁怙謠蝉セ幄ソ帛コヲ譚。縲?
* 蟾・蜈キ C 郛冶セ大桃蠎費シ喀< 100ms縲?
## **莠斐€?謨ー謐ョ譬<EFBDAE>㊥荳取オ∬スャ蜊剰ョ?(Data Standards)**
* 工具 A 合并10万行\< 60秒。
* 工具 B 提取(并发):取决于 Token 量,需提供进度条。
* 工具 C 编辑响应:\< 100ms
## **五、 数据标准与流转协议 (Data Standards)**
为了保证三个工具能顺畅协作,必须定义统一的数据交换标准:
1. **<EFBFBD>サカ譬シ蠑<EFBFBD>:**<>Κ豬∬スャ扈滉ク€菴ソ逕ィ **CSV (UTF-8 with BOM)** 謌?**JSON Lines**縲?
2. **譌・譛滓<EFBFBD>シ蠑<EFBFBD>:**€譛牙キ・蜈キ莠ァ蜃コ逧<EFBDBA>律譛溷<E8AD9B><E6BAB7>悟シコ蛻カ譬<EFBDB6>㊥蛹紋クコ YYYY-MM-DD縲?
3. **遨コ蛟シ陦ィ遉?** 扈滉ク€菴ソ逕ィ null 謌也ゥコ蟄礼ャヲ荳?""<22>御ク・遖∽スソ逕?"NA", "-" 遲画枚譛ャ豺キ蜈・謨ー蛟シ蛻励€?
4. **豬∬スャ蜃ュ隸<EFBFBD>:** 霍ィ蟾・蜈キ霍ウ霓ャ譌カ<E8AD8C>€夊ソ<E5A48A> URL 蜿よ焚莨<E7849A>騾?assetId (襍<>コァID)<29>梧磁謾カ譁ケ騾夊ソ<E5A48A> API 闔キ蜿匁枚莉カ豬<EFBDB6>シ梧裏髴€蜑咲ォッ騾丈シ<E4B888>螟ァ譁<EFBDA7>サカ縲?
## **蜈ュ縲?髯<>ス包シ夂沿譛ャ隗<EFBDAC><E99A97>?(Roadmap)**
1. **文件格式:** 内部流转统一使用 **CSV (UTF-8 with BOM)** **JSON Lines**
2. **日期格式:** 所有工具产出的日期列,强制标准化为 YYYY-MM-DD
3. **空值表示:** 统一使用 null 或空字符串 "",严禁使用 "NA", "-" 等文本混入数值列。
4. **流转凭证:** 跨工具跳转时,通过 URL 参数传递 assetId (资产ID),接收方通过 API 获取文件流,无需前端透传大文件。
* **Phase 1 (MVP):** 荳顔コソ蟾・菴懷<E88FB4>?\+ 蟾・蜈キ A (蝓コ遑€蜷亥ケカ) \+ 蟾・蜈キ C (蝓コ遑€郛冶セ<E586B6>)縲ょキ・蜈?B 證ゆク堺ク顔コソ縲?
* **Phase 2 (Intelligence):** 荳顔コソ 蟾・蜈キ B (蜊墓ィ。蝙区署蜿?縲ょキ・蜈?C 蠅槫刈萓ァ霎ケ譬冗サ溯ョ。縲?
* **Phase 3 (Trust):** 蟾・蜈キ B 蜊<>コァ荳コ蜿梧ィ。蝙倶コ、蜿蛾ェ瑚ッ√€ょキ・蜈?A 蜊<>コァ荳コ譌カ髣エ遯怜粋蟷カ縲
## **六、 附录:版本规划 (Roadmap)**
* **Phase 1 (MVP):** 上线工作台 \+ 工具 A (基础合并) \+ 工具 C (基础编辑)。工具 B 暂不上线。
* **Phase 2 (Intelligence):** 上线 工具 B (单模型提取)。工具 C 增加侧边栏统计。
* **Phase 3 (Trust):** 工具 B 升级为双模型交叉验证。工具 A 升级为时间窗合并。