deploy: Complete 0126-27 deployment - database upgrade, services update, code recovery

Major Changes:
- Database: Install pg_bigm/pgvector plugins, create test database
- Python service: v1.0 -> v1.1, add pymupdf4llm/openpyxl/pypandoc
- Node.js backend: v1.3 -> v1.7, fix pino-pretty and ES Module imports
- Frontend: v1.2 -> v1.3, skip TypeScript check for deployment
- Code recovery: Restore empty files from local backup

Technical Fixes:
- Fix pino-pretty error in production (conditional loading)
- Fix ES Module import paths (add .js extensions)
- Fix OSSAdapter TypeScript errors
- Update Prisma Schema (63 models, 16 schemas)
- Update environment variables (DATABASE_URL, EXTRACTION_SERVICE_URL, OSS)
- Remove deprecated variables (REDIS_URL, DIFY_API_URL, DIFY_API_KEY)

Documentation:
- Create 0126 deployment folder with 8 documents
- Update database development standards v2.0
- Update SAE deployment status records

Deployment Status:
- PostgreSQL: ai_clinical_research_test with plugins
- Python: v1.1 @ 172.17.173.84:8000
- Backend: v1.7 @ 172.17.173.89:3001
- Frontend: v1.3 @ 172.17.173.90:80

Tested: All services running successfully on SAE
This commit is contained in:
2026-01-27 08:13:27 +08:00
parent 01a17f1e6f
commit 2481b786d8
318 changed files with 5290 additions and 3216 deletions

View File

@@ -0,0 +1,336 @@
# 🔧 IIT回调地址修复方案
> **文档版本**v1.0
> **创建日期**2026-01-26
> **适用范围**IIT Manager Agent模块
> **变更类型**:配置修复 + 地址变更
---
## 📋 一、问题描述
### 1.1 当前状态
IIT Manager Agent模块目前使用 **natapp内网穿透** 进行开发调试:
```yaml
开发环境回调URL: https://devlocal.xunzhengyixue.com/api/v1/iit/patient-wechat/callback
使用方式: natapp内网穿透映射到本地127.0.0.1:3001
适用场景: 本地开发调试
```
### 1.2 目标状态
部署到SAE生产环境后需要使用**真实生产域名**
```yaml
生产环境回调URL: https://iit.xunzhengyixue.com/api/v1/iit/patient-wechat/callback
使用方式: 直接访问SAE服务
适用场景: 生产环境
```
### 1.3 涉及的回调类型
| 回调类型 | 开发环境URL | 生产环境URL |
|---------|------------|------------|
| **企业微信回调** | `https://devlocal.xunzhengyixue.com/api/v1/iit/wechat/callback` | `https://iit.xunzhengyixue.com/api/v1/iit/wechat/callback` |
| **微信服务号回调** | `https://devlocal.xunzhengyixue.com/api/v1/iit/patient-wechat/callback` | `https://iit.xunzhengyixue.com/api/v1/iit/patient-wechat/callback` |
| **REDCap DET Webhook** | `http://localhost:3001/api/v1/iit/webhooks/redcap` | `https://iit.xunzhengyixue.com/api/v1/iit/webhooks/redcap` |
---
## 🔍 二、代码中的地址检查
### 2.1 已确认的地址引用位置
通过代码搜索,发现以下位置涉及回调地址:
**1. 文档中的地址(需要更新)**
- `backend/WECHAT_MP_CONFIG_READY.md`
- `backend/WECHAT_ENV_CONFIG.md`
- `backend/src/modules/iit-manager/docs/微信服务号接入指南.md`
- `backend/DEPLOY_TO_SAE_FOR_WECHAT_MP.md`
**2. 测试脚本中的地址(保持开发地址,用于本地测试)**
- `backend/src/modules/iit-manager/test-wechat-mp-local.ps1`
- `backend/src/modules/iit-manager/test-wechat-mp-plain.ps1`
- `backend/src/modules/iit-manager/test-patient-wechat-config.ts`
**3. 代码生成工具中的地址(需要更新提示信息)**
- `backend/src/modules/iit-manager/generate-wechat-tokens.ts`
### 2.2 代码本身无需修改
**重要发现**:代码本身没有硬编码回调地址!
回调处理是**被动接收**的URL配置在
- 企业微信后台
- 微信服务号后台
- REDCap系统设置
代码只需要正确响应请求即可。
---
## 🔧 三、配置修复步骤
### 3.1 企业微信回调配置
**登录企业微信管理后台**
1. 访问https://work.weixin.qq.com/wework_admin/loginpage_wx
2. 使用管理员账号登录
**修改应用回调URL**
1. 进入【应用管理】→【IIT Manager Agent】
2. 找到【接收消息】配置
3. 修改URL
```
https://devlocal.xunzhengyixue.com/api/v1/iit/wechat/callback
https://iit.xunzhengyixue.com/api/v1/iit/wechat/callback
```
4. 保持Token和EncodingAESKey不变
```
Token: oXlRBm1YnvMy2SbDLbvAdDd5Gq3oBGq
EncodingAESKey: v88eT3O9bMW897h4btr7v7qvQImlMf31edTQCmuhOhO
```
5. 点击【保存】
6. 等待企业微信验证回调URL
### 3.2 微信服务号回调配置
**登录微信公众平台**
1. 访问https://mp.weixin.qq.com/
2. 使用管理员账号登录
**修改服务器配置**
1. 进入【设置与开发】→【基本配置】
2. 找到【服务器配置】
3. 点击【修改配置】
4. 修改服务器地址(URL)
```
https://devlocal.xunzhengyixue.com/api/v1/iit/patient-wechat/callback
https://iit.xunzhengyixue.com/api/v1/iit/patient-wechat/callback
```
5. 保持Token和EncodingAESKey不变
6. 点击【提交】
7. 等待微信验证服务器配置
### 3.3 REDCap DET配置如使用
**在REDCap管理后台配置**
1. 登录REDCap Control Center
2. 进入项目设置
3. 找到Data Entry Trigger (DET)配置
4. 修改Webhook URL
```
http://localhost:3001/api/v1/iit/webhooks/redcap
https://iit.xunzhengyixue.com/api/v1/iit/webhooks/redcap
```
---
## ✅ 四、验证步骤
### 4.1 验证服务可访问
```bash
# 1. 验证健康检查端点
curl https://iit.xunzhengyixue.com/api/v1/iit/health
# 预期返回:{ "status": "ok", ... }
```
### 4.2 验证企业微信回调
```bash
# 企业微信调试工具会自动验证
# 或手动测试GET请求URL验证
curl "https://iit.xunzhengyixue.com/api/v1/iit/wechat/callback?msg_signature=test&timestamp=123&nonce=abc&echostr=hello"
# 如果返回echostr内容hello说明验证通过
```
### 4.3 验证微信服务号回调
```bash
# 微信平台会自动发送验证请求
# 验证成功后状态显示"已启用"
```
### 4.4 端到端测试
1. **企业微信测试**
- 在企业微信中向IIT Manager Agent发送消息
- 确认收到AI回复
2. **微信服务号测试**
- 关注服务号并发送消息
- 确认收到回复
3. **REDCap测试**(如配置):
- 在REDCap中保存一条记录
- 确认触发Webhook并处理成功
---
## 📝 五、文档更新清单
### 5.1 需要更新的文档
以下文档中的地址引用需要更新或添加说明:
| 文档路径 | 更新内容 |
|---------|---------|
| `backend/WECHAT_MP_CONFIG_READY.md` | 添加生产环境URL说明 |
| `backend/WECHAT_ENV_CONFIG.md` | 更新URL配置说明 |
| `backend/DEPLOY_TO_SAE_FOR_WECHAT_MP.md` | 确认生产URL正确 |
| `docs/03-业务模块/IIT Manager Agent/00-模块当前状态与开发指南.md` | 更新回调URL状态 |
### 5.2 代码文件更新(可选)
更新提示信息,帮助开发者区分环境:
**`generate-wechat-tokens.ts`**
```typescript
console.log('回调URL配置');
console.log(' 开发环境https://devlocal.xunzhengyixue.com/api/v1/iit/patient-wechat/callback');
console.log(' 生产环境https://iit.xunzhengyixue.com/api/v1/iit/patient-wechat/callback');
```
---
## 🔄 六、环境切换说明
### 6.1 开发环境(本地调试)
```yaml
使用方式: natapp内网穿透
启动命令: natapp.exe -authtoken=YOUR_TOKEN -subdomain=devlocal
回调URL: https://devlocal.xunzhengyixue.com/...
后端地址: 127.0.0.1:3001
```
### 6.2 SAE测试环境
```yaml
使用方式: SAE服务 + 测试数据库
回调URL: https://iit.xunzhengyixue.com/...(可配置测试域名)
后端地址: SAE内网IP:3001
```
### 6.3 SAE生产环境
```yaml
使用方式: SAE服务 + 生产数据库
回调URL: https://iit.xunzhengyixue.com/...
后端地址: SAE内网IP:3001
公网访问: https://iit.xunzhengyixue.com/
```
---
## ⚠️ 七、注意事项
### 7.1 域名备案
`iit.xunzhengyixue.com` 域名必须已完成ICP备案否则无法在微信平台使用。
**确认状态**:✅ 已备案(根据历史记录)
### 7.2 SSL证书
回调URL必须使用HTTPS确认SSL证书
- 证书有效期
- 证书链完整
- 域名匹配
### 7.3 防火墙/安全组
确保SAE服务可以接收来自
- 企业微信服务器的请求
- 微信公众平台服务器的请求
- REDCap服务器的请求
### 7.4 Token和密钥管理
**切勿泄露**
- Token
- EncodingAESKey
- Corp Secret
这些密钥在开发和生产环境可以相同,但要确保安全存储。
---
## 📊 八、检查清单
### 部署前
- [ ] 确认SAE后端服务已部署并正常运行
- [ ] 确认 `https://iit.xunzhengyixue.com/api/v1/iit/health` 可访问
- [ ] 确认域名SSL证书有效
### 配置修改
- [ ] 企业微信回调URL已更新
- [ ] 微信服务号回调URL已更新
- [ ] REDCap DET URL已更新如使用
### 验证
- [ ] 企业微信URL验证通过
- [ ] 微信服务号URL验证通过
- [ ] 企业微信消息收发正常
- [ ] 微信服务号消息收发正常
- [ ] REDCap Webhook触发正常如使用
---
## 📞 九、问题排查
### 问题1URL验证失败
**可能原因**
- 后端服务未启动
- SSL证书问题
- 回调路由未注册
**排查步骤**
1. 检查健康端点:`curl https://iit.xunzhengyixue.com/api/v1/iit/health`
2. 检查回调端点:`curl https://iit.xunzhengyixue.com/api/v1/iit/wechat/callback`
3. 查看SAE日志
### 问题2消息无响应
**可能原因**
- 消息加解密配置错误
- AI服务调用超时
- 数据库连接问题
**排查步骤**
1. 检查SAE日志中的错误信息
2. 确认环境变量配置正确
3. 测试AI服务连接
### 问题3超时错误
**可能原因**
- 微信要求5秒内响应
- AI处理时间过长
**解决方案**
- 代码已使用异步回复模式setImmediate
- 确保先返回空字符串,再异步推送消息
---
> **最后更新**2026-01-26
> **维护人员**:开发团队
> **参考文档**
> - [企业微信开发文档](https://developer.work.weixin.qq.com/document/)
> - [微信公众平台开发文档](https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html)