fix(backend): Resolve PgBoss infinite loop issue and cleanup unused files
Backend fixes: - Fix PgBoss task infinite loop on SAE (root cause: missing queue table constraints) - Add singletonKey to prevent duplicate job enqueueing - Add idempotency check in reviewWorker (skip completed tasks) - Add optimistic locking in reviewService (atomic status update) Frontend fixes: - Add isSubmitting state to prevent duplicate submissions in RVW Dashboard - Fix API baseURL in knowledgeBaseApi (relative path) Cleanup (removed): - Old frontend/ directory (migrated to frontend-v2) - python-microservice/ (unused, replaced by extraction_service) - Root package.json and node_modules (accidentally created) - redcap-docker-dev/ (external dependency) - Various temporary files and outdated docs in root New documentation: - docs/07-运维文档/01-PgBoss队列监控与维护.md - docs/07-运维文档/02-故障预防检查清单.md - docs/07-运维文档/03-数据库迁移注意事项.md Database fix applied to RDS: - Added PRIMARY KEY to platform_schema.queue - Added 3 missing foreign key constraints Tested: Local build passed, RDS constraints verified
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# 🎯 2026年1月26日 部署状态真实记录
|
||||
# 🎯 2026年1月26-27日 部署状态真实记录
|
||||
|
||||
> **文档类型**:部署状态实时记录
|
||||
> **更新时间**:2026-01-26 16:30
|
||||
> **更新时间**:2026-01-27 15:30(数据库中文编码问题修复)
|
||||
> **部署人员**:开发团队
|
||||
> **文档目的**:记录本次部署的真实状态,供后续参考
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
| 3 | Node.js后端更新 | ✅ 已完成 | 2026-01-27 07:55 | v1.3 → v1.7,修复ES Module导入 |
|
||||
| 4 | 前端Nginx更新 | ✅ 已完成 | 2026-01-27 08:00 | v1.2 → v1.3,更新后端IP |
|
||||
| 5 | IIT回调地址配置 | ⏳ 待配置 | - | 外部平台配置 |
|
||||
| 6 | **数据库中文编码修复** | ✅ 已完成 | 2026-01-27 15:30 | PowerShell编码问题,重新导入数据 |
|
||||
|
||||
---
|
||||
|
||||
@@ -373,6 +374,17 @@ sha256:42bff8a3d65c0b11eafc09aae5aed9ef0ff6f550d60a3426c7f5d15c7433a973
|
||||
| 07:50 | 开始构建前端v1.3,修复Dockerfile跳过TypeScript检查 |
|
||||
| 08:00 | 前端v1.3部署成功,新IP(172.17.173.90) |
|
||||
| 08:05 | 更新前端环境变量,指向新后端IP |
|
||||
| 14:00 | 🔴 **发现数据库中文乱码问题**:用户名、租户名显示为 `????` |
|
||||
| 14:10 | 定位问题原因:PowerShell 编码破坏了 UTF-8 数据 |
|
||||
| 14:20 | 在 Docker 容器内重新导出本地数据库(正确的 UTF-8) |
|
||||
| 14:25 | 验证导出文件中文正确(王医生、示范医院等) |
|
||||
| 14:30 | 开启 RDS 外网访问,准备重新导入 |
|
||||
| 14:40 | 强制删除 RDS 测试数据库(`DROP DATABASE ... WITH (FORCE)`) |
|
||||
| 14:45 | 重新创建数据库,安装 pg_bigm、pgvector 插件 |
|
||||
| 14:50 | 在容器内直接导入数据(`psql -f /tmp/backup_utf8.sql`) |
|
||||
| 15:00 | ✅ 验证中文数据正确显示 |
|
||||
| 15:10 | 关闭 RDS 外网访问 |
|
||||
| 15:30 | 更新部署文档,记录问题和解决方案 |
|
||||
|
||||
---
|
||||
|
||||
@@ -405,20 +417,77 @@ sha256:42bff8a3d65c0b11eafc09aae5aed9ef0ff6f550d60a3426c7f5d15c7433a973
|
||||
5. ✅ **前后端TypeScript错误** - 跳过类型检查,部署优先
|
||||
6. ✅ **OSS环境配置** - 开发/生产Bucket分离
|
||||
7. ✅ **大量空文件恢复** - 从本地备份恢复
|
||||
8. ✅ **数据库中文乱码(????)** - PowerShell编码问题,在容器内直接导入修复
|
||||
|
||||
### 🎯 待完成任务
|
||||
|
||||
| 任务 | 优先级 | 说明 |
|
||||
|------|--------|------|
|
||||
| IIT回调地址配置 | 高 | 企业微信、微信服务号回调URL更新 |
|
||||
| TypeScript类型修复 | 中 | 改善代码质量,不影响运行 |
|
||||
| 功能全面测试 | 高 | 验证所有模块功能 |
|
||||
| 任务 | 优先级 | 状态 | 说明 |
|
||||
|------|--------|------|------|
|
||||
| 数据库中文编码修复 | 🔴 高 | ✅ **已完成** | PowerShell编码问题,已重新导入 |
|
||||
| IIT回调地址配置 | 🔴 高 | ⏳ 待完成 | 企业微信、微信服务号回调URL更新 |
|
||||
| 功能全面测试 | 🔴 高 | ⏳ 待完成 | 验证所有模块功能 |
|
||||
| TypeScript类型修复 | 🟡 中 | ⏳ 待完成 | 改善代码质量,不影响运行 |
|
||||
|
||||
---
|
||||
|
||||
> **🎉 部署状态**:核心服务全部完成!
|
||||
> **⏱️ 总耗时**:约17小时(跨2天)
|
||||
> **🎉 部署状态**:核心服务全部完成 + 中文编码问题已修复!
|
||||
> **⏱️ 总耗时**:约17小时(跨2天)+ 1.5小时(编码问题修复)
|
||||
> **🔜 下一步**:IIT回调地址配置 + 全面功能测试
|
||||
> **📝 最后更新**:2026-01-27 08:05
|
||||
> **📝 最后更新**:2026-01-27 15:30
|
||||
|
||||
---
|
||||
|
||||
## 🔴 2026-01-27 紧急修复:数据库中文编码问题
|
||||
|
||||
### 问题现象
|
||||
|
||||
部署完成后,前端显示用户名称、租户名称、联系人等信息全部为 `????` 或 `??`。
|
||||
|
||||
### 根因分析
|
||||
|
||||
数据迁移脚本 `database-migration-script.ps1` 使用 PowerShell 执行数据库导入:
|
||||
1. PowerShell 的 `>` 重定向默认使用 **UTF-16 LE** 编码
|
||||
2. `Get-Content` 默认使用 **GBK/CP936** 编码
|
||||
3. 虽然 `pg_dump` 指定了 `--encoding=UTF8`,但 PowerShell 管道破坏了编码
|
||||
|
||||
### 修复方案
|
||||
|
||||
**在 Docker 容器内直接操作,完全绕过 PowerShell:**
|
||||
|
||||
```bash
|
||||
# ❌ 错误做法(PowerShell编码问题)
|
||||
docker exec ... pg_dump ... > backup.sql
|
||||
Get-Content backup.sql | docker exec ... psql ...
|
||||
|
||||
# ✅ 正确做法(容器内直接操作)
|
||||
docker exec ... pg_dump ... -f /tmp/backup_utf8.sql
|
||||
docker exec ... psql ... -f /tmp/backup_utf8.sql
|
||||
```
|
||||
|
||||
### 修复步骤
|
||||
|
||||
1. ✅ 在容器内重新导出数据库(`pg_dump -f /tmp/backup_utf8.sql`)
|
||||
2. ✅ 验证导出文件中文正确(`王医生`、`示范医院` 等)
|
||||
3. ✅ 开启 RDS 外网访问
|
||||
4. ✅ 强制删除 RDS 测试数据库(`DROP DATABASE ... WITH (FORCE)`)
|
||||
5. ✅ 重新创建数据库(`CREATE DATABASE ... ENCODING='UTF8'`)
|
||||
6. ✅ 安装插件(pg_bigm、pgvector)
|
||||
7. ✅ 在容器内直接导入(`psql -f /tmp/backup_utf8.sql`)
|
||||
8. ✅ 验证中文数据正确显示
|
||||
9. ✅ 关闭 RDS 外网访问
|
||||
|
||||
### 验证结果
|
||||
|
||||
```
|
||||
用户名:王医生、李医生、测试用户、超级管理员、Prompt工程师 ✅
|
||||
租户名:示范医院、示范药企、壹证循科技、北京积水潭医院、武田制药 ✅
|
||||
联系人:张主任、李经理、张院长 ✅
|
||||
```
|
||||
|
||||
### 经验总结
|
||||
|
||||
- ⚠️ **Windows PowerShell 不适合处理 UTF-8 数据**:重定向和管道会破坏编码
|
||||
- ✅ **推荐做法**:数据库迁移时,在 Docker 容器内直接操作
|
||||
- ✅ **验证方法**:导入后立即查询中文字段,确认显示正确
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user