Files
AIclinicalresearch/backend/WECHAT_MP_PLAIN_MODE.md
HaHafeng 5a17d096a7 feat(pkb): Complete PKB module frontend migration with V3 design
Summary:
- Implement PKB Dashboard and Workspace pages based on V3 prototype
- Add single-layer header with integrated Tab navigation
- Implement 3 work modes: Full Text, Deep Read, Batch Processing
- Integrate Ant Design X Chat component for AI conversations
- Create BatchModeComplete with template selection and document processing
- Add compact work mode selector with dropdown design

Backend:
- Migrate PKB controllers and services to /modules/pkb structure
- Register v2 API routes at /api/v2/pkb/knowledge
- Maintain dual API routes for backward compatibility

Technical details:
- Use Zustand for state management
- Handle SSE streaming responses for AI chat
- Support document selection for Deep Read mode
- Implement batch processing with progress tracking

Known issues:
- Batch processing API integration pending
- Knowledge assets page navigation needs optimization

Status: Frontend functional, pending refinement
2026-01-06 22:15:42 +08:00

263 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 微信服务号明文模式配置指南
> **目标**: 先用明文模式验证基础功能,成功后再升级到安全模式
> **优势**: 明文模式更简单无需处理AES加解密便于调试
> **安全性**: 明文模式不加密消息内容,仅用于开发测试,生产环境建议使用安全模式
---
## 📋 配置步骤10分钟
### Step 1: 确认环境变量1分钟
确保 `.env` 文件中已配置Token
```bash
# 微信服务号配置
WECHAT_MP_APP_ID=wx062568ff49e4570c
WECHAT_MP_APP_SECRET=c0d19435d1a1e948939c16d767ec0faf
WECHAT_MP_TOKEN=IitPatientWechat2026JanToken
# 注意:明文模式不需要 WECHAT_MP_ENCODING_AES_KEY
```
### Step 2: 启动服务1分钟
```powershell
cd D:\MyCursor\AIclinicalresearch\backend
npm run dev
```
**期望日志**
```
✅ 微信服务号回调控制器已初始化(明文模式)
Registered route: GET /wechat/patient/callback-plain (明文模式)
Registered route: POST /wechat/patient/callback-plain (明文模式)
```
### Step 3: 本地测试2分钟
运行测试脚本:
```powershell
cd D:\MyCursor\AIclinicalresearch\backend\src\modules\iit-manager
.\test-wechat-mp-plain.ps1
```
**期望输出**
```
🔐 计算签名...
SHA1签名: xxx...
🌐 测试1: 本地服务器通过natapp
✅ 请求成功 (200 OK)
✅ echostr 匹配成功!
🖥️ 测试2: 直接本地localhost:3001
✅ 请求成功 (200 OK)
✅ echostr 匹配成功!
```
### Step 4: 配置微信公众平台5分钟
1. **登录微信公众平台**
访问https://mp.weixin.qq.com/
2. **进入服务器配置**
左侧菜单 → 设置与开发 → 基本配置 → 服务器配置 → 修改配置
3. **填写配置信息**
| 配置项 | 值 |
|--------|-----|
| **URL** | `https://devlocal.xunzhengyixue.com/wechat/patient/callback-plain` |
| **Token** | `IitPatientWechat2026JanToken` |
| **EncodingAESKey** | **留空(明文模式不需要)** |
| **消息加解密方式** | **明文模式** ⚠️ 重要! |
| **数据格式** | **XML** ⚠️ 必须选择XML |
4. **提交验证**
点击"提交"微信会发送GET请求验证
5. **查看服务器日志**
应该看到:
```
📥 收到微信服务号 URL 验证请求(明文模式)
✅ URL 验证成功,返回 echostr
```
6. **启用配置**
验证成功后,点击"启用"
---
## ✅ 验证成功标志
1. ✅ 微信公众平台显示"配置成功"
2. ✅ 服务器日志显示"URL 验证成功"
3. ✅ 配置已启用
---
## 🧪 测试功能
### 测试1: 关注事件
1. 用微信扫码关注公众号:**AI for 临床研究**
2. 查看服务器日志:
**期望日志**
```
📥 收到微信服务号回调消息(明文模式)
✅ 签名验证成功
📝 开始异步处理消息
🎯 处理事件消息: subscribe
👤 用户关注公众号: oXXXXXXX
```
### 测试2: 文本消息
1. 在公众号对话框发送:**你好**
2. 查看服务器日志:
**期望日志**
```
📥 收到微信服务号回调消息(明文模式)
✅ 签名验证成功
💬 处理文本消息: 你好
```
---
## 🔄 升级到安全模式
明文模式验证成功后,可以升级到安全模式:
### Step 1: 生成EncodingAESKey
使用微信公众平台的"随机生成"按钮,或运行:
```powershell
cd D:\MyCursor\AIclinicalresearch\backend\src\modules\iit-manager
npx tsx generate-wechat-tokens.ts
```
### Step 2: 更新环境变量
在 `.env` 中添加:
```bash
WECHAT_MP_ENCODING_AES_KEY=VIzwMGRG4Ll8Sd7fPxPXLlBaWdsh2rK2qIGpyaEoc1v
```
### Step 3: 重启服务
```powershell
# 停止当前服务Ctrl+C
npm run dev
```
### Step 4: 修改微信公众平台配置
将URL从明文模式切换到安全模式
| 配置项 | 修改前(明文模式) | 修改后(安全模式) |
|--------|-------------------|-------------------|
| **URL** | `/wechat/patient/callback-plain` | `/wechat/patient/callback` |
| **EncodingAESKey** | 留空 | `VIzwMGRG4...` |
| **消息加解密方式** | 明文模式 | **安全模式(推荐)** |
### Step 5: 提交验证
点击"提交",验证成功后点击"启用"
---
## 🔍 故障排查
### 问题1: 本地测试失败400 Bad Request
**原因**: Fastify Schema校验失败
**解决**:
- 检查路由配置是否添加了 `additionalProperties: true`
- 查看服务器日志详细错误信息
### 问题2: 微信平台配置失败200002
**原因**: 入参错误
**检查项**
1. ✅ URL是否正确是否包含 `-plain` 后缀)
2. ✅ Token是否与环境变量一致
3. ✅ 消息加解密方式是否选择"明文模式"
4. ✅ natapp是否正常运行
5. ✅ 服务器是否正常运行
### 问题3: 服务器日志无响应
**可能原因**
1. ❌ natapp未启动或配置错误
2. ❌ 服务器未启动
3. ❌ 路由未注册
4. ❌ 防火墙拦截
**排查步骤**
```powershell
# 1. 测试健康检查接口
curl https://devlocal.xunzhengyixue.com/api/v1/iit/health
# 2. 测试明文模式路由通过natapp
.\test-wechat-mp-plain.ps1
# 3. 测试直接访问localhost
curl http://localhost:3001/api/v1/iit/health
```
---
## 📊 明文模式 vs 安全模式对比
| 特性 | 明文模式 | 安全模式 |
|------|---------|---------|
| **配置复杂度** | ⭐ 简单 | ⭐⭐⭐ 复杂 |
| **调试难度** | ⭐ 容易 | ⭐⭐⭐ 困难 |
| **安全性** | ⚠️ 低(消息明文传输) | ✅ 高AES加密 |
| **是否需要EncodingAESKey** | ❌ 不需要 | ✅ 需要 |
| **消息加解密** | ❌ 无加密 | ✅ AES加密 |
| **适用场景** | 🧪 开发测试 | 🚀 生产环境 |
| **推荐度** | ⚠️ 仅测试用 | ✅ 强烈推荐 |
---
## 🎯 建议的开发流程
```
1. 明文模式(开发测试)
验证基础功能正常
2. 安全模式(生产环境)
验证加解密正常
3. 部署到SAE
使用生产域名 iit.xunzhengyixue.com
```
---
## 📝 相关文档
- [微信服务号接入指南](./src/modules/iit-manager/docs/微信服务号接入指南.md)
- [环境变量配置](./WECHAT_ENV_CONFIG.md)
- [SAE部署步骤](./SAE_WECHAT_MP_DEPLOY_STEPS.md)
---
**创建时间**: 2026-01-04
**文档版本**: v1.0
**模式**: 明文模式Plain Text Mode