feat(iit): Phase 1.5 AI对话集成REDCap真实数据完成
- feat: ChatService集成DeepSeek-V3实现AI对话(390行) - feat: SessionMemory实现上下文记忆(最近3轮对话,170行) - feat: 意图识别支持REDCap数据查询(关键词匹配) - feat: REDCap数据注入LLM(queryRedcapRecord, countRedcapRecords, getProjectInfo) - feat: 解决LLM幻觉问题(基于真实数据回答,明确system prompt) - feat: 即时反馈(正在查询...提示) - test: REDCap查询测试通过(test0102项目,10条记录,ID 7患者详情) - docs: 创建Phase1.5开发完成记录(313行) - docs: 更新Phase1.5开发计划(标记完成) - docs: 更新MVP开发任务清单(Phase 1.5完成) - docs: 更新模块当前状态(60%完成度) - docs: 更新系统总体设计文档(v2.6) - chore: 删除测试脚本(test-redcap-query-for-ai.ts, check-env-config.ts) - chore: 移除REDCap测试环境变量(REDCAP_TEST_*) 技术亮点: - AI基于REDCap真实数据对话,不编造信息 - 从数据库读取项目配置,不使用环境变量 - 企业微信端测试通过,用户体验良好 测试通过: - 查询项目记录总数(10条) - 查询特定患者详情(ID 7) - 项目信息查询 - 上下文记忆(3轮对话) - 即时反馈提示 影响范围:IIT Manager Agent模块
This commit is contained in:
@@ -15,8 +15,8 @@ WECHAT_AGENT_ID=1000002
|
||||
WECHAT_CORP_SECRET=AZIVxMtoLb0rEszXS81e4dBRl-I9kgTjygIS0cFfENU
|
||||
|
||||
# 企业微信回调配置(消息加解密)
|
||||
WECHAT_TOKEN=oX1RBm1YnvMy2SbDLbvAdDd5Gq3oBGq
|
||||
WECHAT_ENCODING_AES_KEY=zE4tcdBeekCHPUV015jCh9RVUydnCITINqSmCzg9xtO
|
||||
WECHAT_TOKEN=oXlRBm1YnvMy2SbDLbvAdDd5Gq3oBGq
|
||||
WECHAT_ENCODING_AES_KEY=V88eT3O9bMW897h4btr7v7qvQlmlMf31edTQCmuhOhO
|
||||
|
||||
# 测试用户ID(可选,仅测试环境使用)
|
||||
WECHAT_TEST_USER_ID=FengZhiBo
|
||||
@@ -45,11 +45,13 @@ WECHAT_TEST_USER_ID=FengZhiBo
|
||||
- **说明**:消息回调的Token(用于验证签名)
|
||||
- **获取方式**:企业微信管理后台 → 应用管理 → IIT Manager Agent → 接收消息 → 点击"随机获取"
|
||||
- **当前值**:`oXlRBm1YnvMy2SbDLbvAdDd5Gq3oBGq`
|
||||
- **⚠️ 注意**:Token必须与企业微信后台配置的完全一致,否则URL验证会失败
|
||||
|
||||
### 5. WECHAT_ENCODING_AES_KEY
|
||||
- **说明**:消息加解密密钥(43位字符)
|
||||
- **获取方式**:企业微信管理后台 → 应用管理 → IIT Manager Agent → 接收消息 → 点击"随机获取"
|
||||
- **当前值**:`zE4tcdBeekCHPUV015jCh9RVUydnCITINqSmCzg9xtO`
|
||||
- **当前值**:`V88eT3O9bMW897h4btr7v7qvQlmlMf31edTQCmuhOhO`
|
||||
- **⚠️ 注意**:必须与企业微信后台配置的完全一致,大小写敏感,用于消息加解密
|
||||
|
||||
### 6. WECHAT_TEST_USER_ID(可选)
|
||||
- **说明**:测试用户的企业微信UserID,仅用于开发和测试环境
|
||||
@@ -61,22 +63,36 @@ WECHAT_TEST_USER_ID=FengZhiBo
|
||||
- 可配置多个用户,用竖线分隔:`FengZhiBo|ZhangSan|LiSi`
|
||||
- **⚠️ 注意**:该配置仅供测试使用,生产环境通知目标应由项目配置决定
|
||||
|
||||
## 📝 REDCap项目配置说明
|
||||
|
||||
REDCap项目配置(包括URL、API Token等)**不使用环境变量**,而是存储在数据库的 `iit_schema.projects` 表中。
|
||||
|
||||
这样设计的优点:
|
||||
- ✅ 支持多项目管理
|
||||
- ✅ 动态配置,无需重启服务
|
||||
- ✅ 安全性更好(Token加密存储)
|
||||
- ✅ 便于团队协作
|
||||
|
||||
## 🔧 企业微信回调URL配置
|
||||
|
||||
### 本地开发(natapp)
|
||||
### 本地开发(natapp + 公司备案域名)
|
||||
|
||||
```
|
||||
回调URL: https://iit.nat100.top/api/v1/iit/wechat/callback
|
||||
回调URL: https://devlocal.xunzhengyixue.com/api/v1/iit/wechat/callback
|
||||
Token: oXlRBm1YnvMy2SbDLbvAdDd5Gq3oBGq
|
||||
EncodingAESKey: zE4tcdBeekCHPUV015jCh9RVUydnCITINqSmCzg9xtO
|
||||
EncodingAESKey: V88eT3O9bMW897h4btr7v7qvQlmlMf31edTQCmuhOhO
|
||||
```
|
||||
|
||||
**natapp映射**:
|
||||
- `https://devlocal.xunzhengyixue.com` → `127.0.0.1:3001`
|
||||
- 需要公司备案域名,否则企业微信不允许配置
|
||||
|
||||
### 生产环境(SAE)
|
||||
|
||||
```
|
||||
回调URL: https://iit.xunzhengyixue.com/api/v1/iit/wechat/callback
|
||||
Token: oXlRBm1YnvMy2SbDLbvAdDd5Gq3oBGq
|
||||
EncodingAESKey: zE4tcdBeekCHPUV015jCh9RVUydnCITINqSmCzg9xtO
|
||||
EncodingAESKey: V88eT3O9bMW897h4btr7v7qvQlmlMf31edTQCmuhOhO
|
||||
```
|
||||
|
||||
## ⚠️ 重要提示
|
||||
@@ -87,8 +103,9 @@ EncodingAESKey: zE4tcdBeekCHPUV015jCh9RVUydnCITINqSmCzg9xtO
|
||||
- 位置:企业微信管理后台 → 应用管理 → IIT Manager Agent → 企业可信IP
|
||||
|
||||
2. **natapp隧道**(本地开发)
|
||||
- 确保natapp隧道正常运行:`http://iit.nat100.top`
|
||||
- 确保natapp隧道正常运行:`https://devlocal.xunzhengyixue.com`
|
||||
- 后端服务监听:`http://localhost:3001`
|
||||
- **⚠️ 关键**:必须使用公司备案域名,否则企业微信不允许配置回调URL
|
||||
|
||||
3. **环境变量加载**
|
||||
- 修改 `.env` 文件后,需要**重启后端服务**
|
||||
@@ -207,7 +224,7 @@ Registered route: POST /api/v1/iit/wechat/callback
|
||||
### 步骤2:访问健康检查
|
||||
|
||||
```bash
|
||||
curl https://iit.nat100.top/api/v1/iit/health
|
||||
curl https://devlocal.xunzhengyixue.com/api/v1/iit/health
|
||||
```
|
||||
|
||||
预期返回:
|
||||
@@ -297,8 +314,8 @@ curl "https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=ACCESS_TO
|
||||
|
||||
**解决方法**:
|
||||
1. 检查后端日志是否有错误
|
||||
2. 确认natapp状态:`http://iit.nat100.top/api/v1/iit/health`
|
||||
3. 检查 `.env` 文件中的Token和EncodingAESKey
|
||||
2. 确认natapp状态:`https://devlocal.xunzhengyixue.com/api/v1/iit/health`
|
||||
3. 检查 `.env` 文件中的Token和EncodingAESKey是否与企业微信后台配置完全一致
|
||||
|
||||
### Q2: 收不到企业微信消息
|
||||
|
||||
@@ -359,22 +376,29 @@ curl "https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=ACCESS_TO
|
||||
- [ ] Token和EncodingAESKey已生成
|
||||
- [ ] 回调URL已配置并验证成功(用于接收消息)
|
||||
|
||||
### 环境变量配置
|
||||
- [ ] `WECHAT_CORP_ID` 已配置(`ww6ab493470ab4f377`)
|
||||
- [ ] `WECHAT_AGENT_ID` 已配置(`1000002`)
|
||||
- [ ] `WECHAT_CORP_SECRET` 已配置
|
||||
- [ ] `WECHAT_TOKEN` 已配置
|
||||
- [ ] `WECHAT_ENCODING_AES_KEY` 已配置
|
||||
- [ ] `WECHAT_TEST_USER_ID` 已配置(`FengZhiBo`)
|
||||
### 环境变量配置 - 企业微信
|
||||
- [x] `WECHAT_CORP_ID` 已配置(`ww6ab493470ab4f377`)
|
||||
- [x] `WECHAT_AGENT_ID` 已配置(`1000002`)
|
||||
- [x] `WECHAT_CORP_SECRET` 已配置
|
||||
- [x] `WECHAT_TOKEN` 已配置
|
||||
- [x] `WECHAT_ENCODING_AES_KEY` 已配置
|
||||
- [x] `WECHAT_TEST_USER_ID` 已配置(`FengZhiBo`)
|
||||
|
||||
### 数据库配置 - REDCap项目
|
||||
- [x] test0102项目已在数据库中(`iit_schema.projects`)
|
||||
- [x] 项目状态为active
|
||||
- [x] REDCap URL和API Token已配置
|
||||
|
||||
### 功能测试
|
||||
- [x] 使用官方调试工具成功获取Access Token
|
||||
- [x] 使用官方调试工具成功发送文本消息
|
||||
- [x] 使用官方调试工具成功发送卡片消息
|
||||
- [x] 使用官方调试工具成功发送Markdown消息
|
||||
- [ ] 后端服务启动成功,日志显示"企业微信服务初始化成功"
|
||||
- [ ] 回调URL验证成功
|
||||
- [ ] 完整闭环测试通过(REDCap → Node.js → 企业微信)
|
||||
- [x] 后端服务启动成功,日志显示"企业微信服务初始化成功"
|
||||
- [x] 回调URL验证成功
|
||||
- [x] 完整闭环测试通过(REDCap → Node.js → 企业微信)
|
||||
- [x] REDCap查询测试通过(test0102项目,10条记录)
|
||||
- [x] AI对话集成REDCap数据测试通过(真实数据,无幻觉)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user