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,20 +1,20 @@
# Phase 1.5: AI瀵硅瘽闆嗘垚REDCap鐪熷疄鏁版嵁鏌ヨ<EFBFBD> - 寮€鍙戝畬鎴愯<E98EB4>褰?
# Phase 1.5: AI对话集成REDCap真实数据查询 - 开发完成记录
**寮€鍙戞棩鏈?*: 2026-01-03
**寮€鍙戜汉鍛?*: AI Clinical Research Team
**开发日期**: 2026-01-03
**开发人员**: AI Clinical Research Team
**版本**: Phase 1.5
**鐘舵€?*: 鉁?宸插畬鎴?
**状态**: ✅ 已完成
---
## 馃搵 **寮€鍙戠洰鏍?*
## 📋 **开发目标**
瀹炵幇AI鍦ㄤ紒涓氬井淇腑鍩轰簬REDCap鐪熷疄鏁版嵁涓嶱I杩涜<EFBFBD>鏅鸿兘瀵硅瘽锛岃В鍐矻LM骞昏<EFBFBD><EFBFBD><EFBFBD>銆?
实现AI在企业微信中基于REDCap真实数据与PI进行智能对话解决LLM幻觉问题。
### **鏍稿績闇€姹?*
### **核心需求**
1. AI能够查询REDCap真实数据
2. AI不编造数据基于事实回答
3. <EFBFBD>寔澶氳疆瀵硅瘽涓婁笅鏂囪<EFBFBD>蹇?
3. 支持多轮对话上下文记忆
4. 提供即时"正在查询"反馈
---
@@ -22,69 +22,69 @@
## 🎯 **完成功能**
### **1. 意图识别**
- 鉁?**鏌ヨ<E98F8C>鐗瑰畾璁板綍**: 璇嗗埆璁板綍ID锛堝<EFBFBD>"ID 7"銆?璁板綍7"锛?
- 鉁?**缁熻<E7BC81>璁板綍鏁?*: 璇嗗埆"澶氬皯"銆?鍑犱釜"銆?鍑犳潯"绛夊叧閿<E58FA7>
- 鉁?**椤圭洰淇℃伅**: 璇嗗埆"椤圭洰鍚嶇О"銆?椤圭洰鎯呭喌"绛?
- 鉁?**鏅<>€氬<E282AC>璇?*: 榛樿<E6A69B>澶勭悊鍏朵粬瀵硅瘽
- **查询特定记录**: 识别记录ID如"ID 7"、"记录7"
- **统计记录数**: 识别"多少"、"几个"、"几条"等关键词
- **项目信息**: 识别"项目名称"、"项目情况"等
- **普通对话**: 默认处理其他对话
**瀹炵幇鏂瑰紡**: 鍏抽敭璇嶅尮閰?+ 姝e垯琛ㄨ揪寮?
**实现方式**: 关键词匹配 + 正则表达式
### **2. REDCap数据查询**
- 鉁?**queryRedcapRecord()**: 鏌ヨ<EFBFBD>鐗瑰畾璁板綍鐨勮<EFBFBD>缁嗕俊鎭?
- 鉁?**countRedcapRecords()**: 缁熻<EFBFBD>鎬昏<EFBFBD>褰曟暟
- 鉁?**getProjectInfo()**: 鑾峰彇椤圭洰鍩烘湰淇℃伅
- **queryRedcapRecord()**: 查询特定记录的详细信息
- **countRedcapRecords()**: 统计总记录数
- **getProjectInfo()**: 获取项目基本信息
**鏁版嵁鏉ユ簮**: 鏁版嵁搴?`iit_schema.projects` 琛?鈫?RedcapAdapter 鈫?REDCap API
**数据来源**: 数据库 `iit_schema.projects` 表 → RedcapAdapter REDCap API
### **3. 数据注入LLM**
- 鉁?灏嗘煡璇㈢粨鏋滄敞鍏<E6959E>ystem娑堟伅
- 鉁?鏂扮殑System Prompt寮鸿皟"鍩轰簬鐪熷疄鏁版嵁锛屼笉缂栭€?
- 鉁?閿欒<E996BF>澶勭悊锛氭煡璇㈠け璐ユ椂鍙嬪ソ鎻愮ず
- ✅ 将查询结果注入System消息
- ✅ 新的System Prompt强调"基于真实数据,不编造"
- ✅ 错误处理:查询失败时友好提示
### **4. 涓婁笅鏂囪<EFBFBD>蹇?*
- 鉁?SessionMemory淇濆瓨鏈€杩?杞<><E69D9E>璇?
- 鉁?鏀<>寔澶氳疆瀵硅瘽鐞嗚В锛堝<E9949B>"浠?鎸囦唬涔嬪墠鎻愬埌鐨勬偅鑰咃級
### **4. 上下文记忆**
- SessionMemory保存最近3轮对话
- ✅ 支持多轮对话理解(如"他"指代之前提到的患者)
### **5. 即时反馈**
- 鉁?鏀跺埌娑堟伅鍚庣珛鍗冲洖澶?馃<>湪鏌ヨ<E98F8C>锛岃<E9949B>绋嶅€?.."
- 鉁?鏌ヨ<E98F8C>瀹屾垚鍚庢帹閫佹渶缁堢粨鏋?
- ✅ 收到消息后立即回复"🫡 正在查询,请稍候..."
- ✅ 查询完成后推送最终结果
---
## 馃彈锔?**鎶€鏈<E282AC>灦鏋?*
## 🏗️ **技术架构**
### **鏁版嵁娴?*
### **数据流**
```
用户消息(企业微信)
鈫?
WechatCallbackController.handleMessage()
鈫?
ChatService.handleMessage()
鈫?
1. detectIntent() - 意图识别
鈫?
2. queryRedcapRecord() / countRedcapRecords() / getProjectInfo()
鈫?
prisma.iitProject.findFirst() - 从数据库获取项目配置
鈫?
new RedcapAdapter(url, token) - 鍒涘缓API閫傞厤鍣?
鈫?
new RedcapAdapter(url, token) - 创建API适配器
redcap.exportRecords() - 调用REDCap API
鈫?
返回真实数据
鈫?
3. buildMessagesWithData() - 构建LLM消息注入数据
鈫?
4. llm.chat() - 调用DeepSeek-V3
鈫?
5. sessionMemory.addMessage() - 记录到上下文
鈫?
AI回复企业微信
```
### **关键代码**
- **ChatService.ts**: 390行新增REDCap查询方法
- **鎰忓浘璇嗗埆**: detectIntent()锛屾<EFBFBD>鍒欏尮閰?
- **意图识别**: detectIntent(),正则匹配
- **数据注入**: buildMessagesWithData()
- **System Prompt**: getSystemPromptWithData()
@@ -94,140 +94,140 @@ AI回复企业微信
### **测试环境**
- **项目**: test0102 (REDCap PID: 16)
- **璁板綍鏁?*: 10鏉★紙ID 1-10锛?
- **记录数**: 10条(ID 1-10
- **测试用户**: FengZhiBo
- **测试时间**: 2026-01-03 22:28
### **娴嬭瘯鍦烘櫙1: 鏌ヨ<E98F8C>鐗瑰畾璁板綍** 鉁?
### **测试场景1: 查询特定记录**
**用户输入**:
```
<EFBFBD>垜鏌ヨ<EFBFBD>涓€涓?璁板綍 7鐨?鎵€鏈変俊鎭?
帮我查询一下 记录 7的 所有信息
```
**AI回复** (基于真实数据):
```
鏍规嵁REDCap鏌ヨ<EFBFBD>缁撴灉锛岃<EFBFBD>褰?鐨勪俊鎭<E4BF8A><E98EAD>涓嬶細
根据REDCap查询结果记录7的信息如下
**基本信息**
- 濮撳悕锛氫紒涓氬井淇? 浼佷笟寰<E7AC9F>7
- 鍑虹敓鏃ユ湡锛?017-01-04
- 骞撮緞锛?宀?
- 姓名企业微信7 企业微信7
- 出生日期2017-01-04
- 年龄8岁
- 性别:男
- <EFBFBD>珮锛?30 cm
- 浣撻噸锛?0 kg
- BMI锛?9.6
- 身高130 cm
- 体重50 kg
- BMI29.6
**联系方式**
- 鍦板潃锛氫紒涓氬井淇?
- 地址企业微信7
- 邮箱gofeng117@163.com
**其他信息**
- 姘戞棌锛氳タ鐝<EFBFBD>墮瑁旀垨鎷変竵瑁?
- 民族:西班牙裔或拉丁裔
- 治疗史测试7777
- 是否完成:是
鎵€鏈夊瓧娈靛潎宸插鍐欏畬鎴愩€傚<EFBFBD>闇€鏌ョ湅瀹屾暣琛ㄥ崟锛屽缓璁<EFBFBD>櫥褰昍EDCap绯荤粺銆?
所有字段均已填写完成。如需查看完整表单建议登录REDCap系统。
```
**鏁版嵁楠岃瘉**: 鉁?瀹屽叏鍖归厤REDCap鏁版嵁搴?
**数据验证**: ✅ 完全匹配REDCap数据库
### **测试场景2: 统计查询** (预期)
**用户输入**: "我们系统中已经有几条记录了?"
**棰勬湡鍥炲<EFBFBD>**: "褰撳墠椤圭洰test0102宸叉湁 **10鏉?* 鎮€呮暟鎹<E69A9F><E98EB9>褰?
**预期回复**: "当前项目test0102已有 **10条** 患者数据记录"
### **测试场景3: 项目信息** (预期)
**用户输入**: "咱们当前的项目名称是什么?"
**棰勬湡鍥炲<EFBFBD>**: "褰撳墠椤圭洰鍚嶇О涓?**test0102**"
**预期回复**: "当前项目名称为 **test0102**"
### **性能指标**
- ⏱️ **API查询**: 300-700ms
- 鈴憋笍 **LLM鍝嶅簲**: 2-3绉?
- 鈴憋笍 **鎬诲搷搴旀椂闂?*: 3-5绉?
- 馃搳 **Token娑堣€?*: 绾?00 tokens/娆?
- ⏱️ **LLM响应**: 2-3
- ⏱️ **总响应时间**: 3-5
- 📊 **Token消耗**: 约500 tokens/
---
## 🆚 **对比解决LLM幻觉**
### **涔嬪墠锛堢紪閫犳暟鎹<EFBFBD>** 鉂?
### **之前(编造数据)**
```
AI: "ID 7鐨勫叆缁勬棩鏈熶负 **2023-10-26**锛堝嵆鍩虹嚎璁胯<EFBFBD>鏃ユ湡锛?
鉂?瀹屽叏缂栭€?
鉂?涓庣湡瀹炴暟鎹<E69A9F>笉绗?
鉂?椤圭洰鍚嶇О缂栭€犱负"IIT-2023-001: XX骞查<EFBFBD>瀵筜Y鐤剧梾..."
AI: "ID 7的入组日期为 **2023-10-26**(即基线访视日期)"
❌ 完全编造
❌ 与真实数据不符
❌ 项目名称编造为"IIT-2023-001: XX干预对YY疾病..."
```
### **鐜板湪锛堢湡瀹炴暟鎹<EFBFBD>** 鉁?
### **现在(真实数据)**
```
AI: "鍑虹敓鏃ユ湡锛?017-01-04
骞撮緞锛?宀?
<EFBFBD>珮锛?30 cm
浣撻噸锛?0 kg"
鉁?100%鐪熷疄
鉁?鏉ヨ嚜REDCap鏁版嵁搴?
鉁?椤圭洰鍚嶇О涓簍est0102锛堢湡瀹烇級
AI: "出生日期2017-01-04
年龄8岁
身高130 cm
体重50 kg"
100%真实
✅ 来自REDCap数据库
✅ 项目名称为test0102(真实)
```
---
## 馃挕 **鎶€鏈<EFBFBD>寒鐐?*
## 💡 **技术亮点**
### **1. 架构设计**
- 鉁?**浠庢暟鎹<E69A9F>簱璇诲彇閰嶇疆**: 涓嶄娇鐢ㄧ幆澧冨彉閲忥紝鏀<EFBFBD>寔澶氶」鐩?
- 鉁?**澶嶇敤閫氱敤鑳藉姏灞?*: LLMFactory闆堕厤缃<EFBFBD>泦鎴?
- 鉁?**鍒嗗眰娓呮櫚**: Controller 鈫?Service 鈫?Adapter 鈫?API
- **从数据库读取配置**: 不使用环境变量,支持多项目
- **复用通用能力层**: LLMFactory零配置集成
- **分层清晰**: Controller Service Adapter API
### **2. 意图识别**
- 鉁?**绠€鍗曟湁鏁?*: 鍏抽敭璇嶅尮閰?+ 姝e垯琛ㄨ揪寮?
- 鉁?**鎵╁睍鎬уソ**: 鏄撲簬娣诲姞鏂版剰鍥?
- 鉁?**鎬ц兘浼樼<E6B5BC>**: <1ms璇嗗埆鏃堕棿
- **简单有效**: 关键词匹配 + 正则表达式
- **扩展性好**: 易于添加新意图
- **性能优秀**: <1ms识别时间
### **3. 数据安全**
- 鉁?**Token鍔犲瘑瀛樺偍**: 鏁版嵁搴撲腑鍔犲瘑
- 鉁?**鍔ㄦ€佽幏鍙?*: 姣忔<E5A7A3>鏌ヨ<E98F8C>鏃朵粠鏁版嵁搴撹<E690B4>鍙?
- 鉁?**鏉冮檺鎺у埗**: 鍩轰簬椤圭洰鐘舵€佽繃婊?
- **Token加密存储**: 数据库中加密
- **动态获取**: 每次查询时从数据库读取
- **权限控制**: 基于项目状态过滤
### **4. 用户体验**
- 鉁?**鍗虫椂鍙嶉<E98D99>**: "湪鏌ヨ<EFBFBD>"娑堟伅
- 鉁?**鍑嗙‘鍥炵瓟**: 鍩轰簬鐪熷疄鏁版嵁
- 鉁?**涓婁笅鏂囪繛璐?*: 鏀<>寔澶氳疆瀵硅瘽
- **即时反馈**: "正在查询"消息
- **准确回答**: 基于真实数据
- **上下文连贯**: 支持多轮对话
---
## 📊 **代码统计**
### **新增文件**
1. `SessionMemory.ts` - 170琛?(涓婁笅鏂囪<E98F82>蹇?
2. `test-redcap-query-from-db.ts` - 250琛?(娴嬭瘯鑴氭湰)
3. `check-test-project-in-db.ts` - 74琛?(椤圭洰妫€鏌?
1. `SessionMemory.ts` - 170行 (上下文记忆)
2. `test-redcap-query-from-db.ts` - 250行 (测试脚本)
3. `check-test-project-in-db.ts` - 74行 (项目检查)
### **修改文件**
1. `ChatService.ts` - 鏂板<EFBFBD>200琛?(REDCap闆嗘垚)
1. `ChatService.ts` - 新增200(REDCap集成)
2. `WechatCallbackController.ts` - 新增即时反馈
3. `routes/index.ts` - 鏂板<EFBFBD>鏍硅矾鐢?
3. `routes/index.ts` - 新增根路由
### **删除文件**
1. `test-redcap-query-for-ai.ts` (使用环境变量,已废弃)
2. `check-env-config.ts` (<EFBFBD><EFBFBD>鍙橀噺妫€鏌ワ紝宸插簾寮?
2. `check-env-config.ts` (环境变量检查,已废弃)
---
## ⚠️ **当前限制**
### **1. 意图识别**
- 鉂?浠呮敮鎸佸叧閿<E58FA7>瘝鍖归厤
- 鉂?涓嶆敮鎸佸<E98EB8>鏉傛煡璇㈢粍鍚?
- 鉂?涓嶆敮鎸佹ā绯婂尮閰?
- ❌ 仅支持关键词匹配
- ❌ 不支持复杂查询组合
- ❌ 不支持模糊匹配
### **2. 数据查询**
- 鉂?浠呮敮鎸佸崟椤圭洰锛堥粯璁<E7B2AF>ctive椤圭洰锛?
- 鉂?涓嶆敮鎸佸瓧娈靛悕涓<E68295>枃鏄犲皠
- 鉂?涓嶆敮鎸佸<E98EB8>鏉傝繃婊ゆ潯浠?
- ❌ 仅支持单项目默认active项目
- ❌ 不支持字段名中文映射
- ❌ 不支持复杂过滤条件
### **3. 涓婁笅鏂囪<EFBFBD>蹇?*
- 鉂?浠呬繚瀛樻渶杩?杞<><E69D9E>璇?
- 鉂?鍩轰簬鍐呭瓨锛屾湇鍔¢噸鍚<E599B8>涪澶?
- 鉂?涓嶆敮鎸佽法浼氳瘽璁板繂
### **3. 上下文记忆**
- ❌ 仅保存最近3轮对话
- ❌ 基于内存,服务重启丢失
- ❌ 不支持跨会话记忆
---
@@ -235,9 +235,9 @@ AI: "出生日期
### **短期优化**
1. **扩展意图识别**: 支持更多查询模式
2. **瀛楁<EFBFBD>鏄犲皠**: <EFBFBD>枃瀛楁<EFBFBD>鍚?鈫?REDCap瀛楁<EFBFBD>鍚?
2. **字段映射**: 中文字段名 → REDCap字段名
3. **错误优化**: 更友好的错误提示
4. **澶氶」鐩<EFBFBD>敮鎸?*: 鐢ㄦ埛閫夋嫨鏌ヨ<E98F8C><EFBFBD>釜椤圭洰
4. **多项目支持**: 用户选择查询哪个项目
### **中期升级 (Phase 2)**
1. **Function Calling**: 升级为LLM自主决策调用工具
@@ -246,52 +246,52 @@ AI: "出生日期
4. **性能监控**: 记录查询耗时、错误率
### **长期规划**
1. **Dify鐭ヨ瘑搴?*: 鏌ヨ<E98F8C>鐮旂┒鏂规<E98F82>銆佷鸡鐞嗘枃浠?
1. **Dify知识库**: 查询研究方案、伦理文件
2. **智能质控**: AI分析数据质量问题
3. **H5前端**: 更丰富的交互体验
4. **澶氭ā鎬?*: 鏀<>寔鍥剧墖銆佹枃妗笂浼?
4. **多模态**: 支持图片、文档上传
---
## 📝 **技术债务**
### **1. 临时措施**
- 鈿狅笍 浣跨敤鍏抽敭璇嶅尮閰嶏紙搴斿崌绾т负Function Calling锛?
- 鈿狅笍 SessionMemory鍩轰簬鍐呭瓨锛堝簲鏀逛负Redis锛?
- 鈿狅笍 榛樿<E6A69B>鏌ヨ<E98F8C><EFBFBD>竴涓猘ctive椤圭洰锛堝簲鏀<E7B0B2>寔椤圭洰閫夋嫨锛?
- ⚠️ 使用关键词匹配(应升级为Function Calling
- ⚠️ SessionMemory基于内存(应改为Redis
- ⚠️ 默认查询第一个active项目应支持项目选择
### **2. 寰呭疄鐜板姛鑳?*
- [ ] 瀛楁<EFBFBD>鍚嶄腑鏂囨槧灏?
### **2. 待实现功能**
- [ ] 字段名中文映射
- [ ] 复杂查询条件
- [ ] 数据缓存机制
- [ ] 权限控制
---
## 馃幆 **閲岀▼纰戞剰涔?*
## 🎯 **里程碑意义**
### **鎶€鏈<EFBFBD>獊鐮?*
1. 鉁?**瑙喅LLM骞昏<E9AA9E>**: AI涓嶅啀缂栭€犳暟鎹?
2. 鉁?**鏁版嵁闂<E5B581>**: 鏁版嵁搴?鈫?REDCap 鈫?AI 鈫?鐢ㄦ埛
3. 鉁?**鏋舵瀯楠岃瘉**: 浠庢暟鎹<EFBFBD>簱璇诲彇閰嶇疆鐨勬柟妗堝彲琛?
### **技术突破**
1. **解决LLM幻觉**: AI不再编造数据
2. **数据闭环**: 数据库 → REDCap AI → 用户
3. **架构验证**: 从数据库读取配置的方案可行
### **涓氬姟浠峰€?*
1. 鉁?**鎻愬崌鏁堢巼**: PI鏃犻渶鐧诲綍REDCap鍗冲彲鏌ヨ<EFBFBD>鏁版嵁
2. 鉁?**澧炲己淇′换**: AI鍩轰簬浜嬪疄鍥炵瓟锛屽彲淇¤禆
3. 鉁?**鏀瑰杽浣撻獙**: 浼佷笟寰<EFBFBD>俊鐩存帴瀵硅瘽锛屼究鎹?
### **业务价值**
1. **提升效率**: PI无需登录REDCap即可查询数据
2. **增强信任**: AI基于事实回答,可信赖
3. **改善体验**: 企业微信直接对话,便捷
### **团队成长**
1. 鉁?**鏋舵瀯鑳藉姏**: 鐞嗚В鍒嗗眰鏋舵瀯鐨勯噸瑕佹€?
2. 鉁?**闂<><E99782>**: 浠庣幆澧冨彉閲忓埌鏁版嵁搴撻厤缃<EFBFBD>殑婕旇繘
3. 鉁?**娴嬭瘯椹卞姩**: 鍏堟祴璇昍EDCap API锛屽啀闆嗘垚AI
1. **架构能力**: 理解分层架构的重要性
2. **问题解决**: 从环境变量到数据库配置的演进
3. **测试驱动**: 先测试REDCap API,再集成AI
---
## 🙏 **致谢**
感谢团队成员的辛勤付出:
- **闇€姹傚垎鏋?*: 鏄庣AI瀵硅瘽鐨勬牳蹇冧环鍊?
- **鏋舵瀯璁捐<EFBFBD>**: 閫夋嫨浠庢暟鎹<E69A9F>簱璇诲彇閰嶇疆鐨勬柟妗?
- **需求分析**: 明确AI对话的核心价值
- **架构设计**: 选择从数据库读取配置的方案
- **代码实现**: 高质量的代码和清晰的注释
- **测试验证**: 完整的测试用例和真实场景验证
@@ -299,17 +299,16 @@ AI: "出生日期
## 📚 **相关文档**
- [Phase 1.5寮€鍙戣<EFBFBD>鍒抅(../04-寮€鍙戣<E98D99>鍒?Phase1.5-AI瀵硅瘽鑳藉姏寮€鍙戣<E98D99>鍒?md)
- [MVP浠诲姟娓呭崟](../04-寮€鍙戣<EFBFBD>鍒?MVP寮€鍙戜换鍔℃竻鍗?md)
- [妯″潡褰撳墠鐘舵€乚(../00-妯″潡褰撳墠鐘舵€佷笌寮€鍙戞寚鍗?md)
- [Phase 1.5开发计划](../04-开发计划/Phase1.5-AI对话能力开发计划.md)
- [MVP任务清单](../04-开发计划/MVP开发任务清单.md)
- [模块当前状态](../00-模块当前状态与开发指南.md)
- [Day 3开发记录](./Day3-企业微信集成与端到端测试完成记录.md)
---
**鏂囨。缁存姢**: 寮€鍙戝洟闃?
**鏈€鍚庢洿鏂?*: 2026-01-03
**涓嬩竴姝?*: Phase 2 - Function Calling + Dify鐭ヨ瘑搴?
**文档维护**: 开发团队
**最后更新**: 2026-01-03
**下一步**: Phase 2 - Function Calling + Dify知识库