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,18 +1,21 @@
# <EFBFBD><EFBFBD> AI銝游<EFBFBD><EFBFBD>𠉛弦撟喳蝱 - <20><EFBFBD>鈭騌AE<41><45><EFBFBD><EFBFBD>摰䂿𠶖<E482BF><F0A0B696>扇敶?
> **<2A><><EFBFBD><EFBFBD>?*嚗朞扇敶閖燵<E99696><EFBFBD>SAE<41>滚𦛚<E6BB9A><EFBFBD><E586BD><EFBFBD>摰䂿𠶖<E482BF>?+ 瘥𤩺活<F0A4A9BA>函蔡霈啣<E99C88>
> **<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>?*嚗?026-01-01 14:00
> **蝏湔擪鈭箏<EFBFBD>**嚗𡁜<E59A97><F0A1819C>穃𣪧<E7A983>?
> **霂湔<EFBFBD>**嚗𡁏𧋦<F0A1818F><F0A78BA6><EFBFBD><EFB99D>霈啣<E99C88>SAE銝𦠜<E98A9D><F0A6A09C><EFBFBD><E58CA7><EFBFBD>敶枏<E695B6><E69E8F><EFBFBD><E59786><EFBFBD><EFBFBD><EFBFBD>𡠺<EFBFBD><F0A1A0BA><EFBFBD><EFBFBD><EFBFBD><E595A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8AE90><EFBFBD><E7A094><EFBFBD><EFBFBD><EFBFBD><E69296>蝑匧<E89D91><E58CA7><EFBFBD>皞𣂷縑<F0A382B7>?
# 🚀 AI临床研究平台 - 阿里云SAE最新真实状态记录
> **文档用途**记录阿里云SAE服务器最新真实状态 + 每次部署记录
> **最后更新**2026-01-01 14:00
> **维护人员**:开发团队
> **说明**本文档准确记录SAE上所有应用的当前状态包括内网地址、镜像版本、用户名密码等关键资源信息
---
## <EFBFBD><EFBFBD><><E98A9D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵脩𠶖<E884A9><F0A0B696><EFBFBD>閫?
| <20>滚𦛚<E6BB9A>滨妍 | <20>函蔡<E587BD><EFBFBD>?| <20>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦 | <20>函蔡雿滨蔭 | <20><><EFBFBD>擧凒<E693A7>唳𧒄<E594B3>?|
## 📊 一、当前部署状态一览
| 服务名称 | 部署状态 | 镜像版本 | 部署位置 | 最后更新时间 |
|---------|---------|---------|---------|-------------|
| **PostgreSQL<EFBFBD>唳旿摨?* | <20>?餈鞱<E9A488>銝?| PostgreSQL 15 | RDS | 2025-12-24 |
| **<EFBFBD>滨垢Nginx<EFBFBD>滚𦛚** | <EFBFBD>?餈鞱<E9A488>銝?| v1.2 | SAE | 2026-01-01 |
| **Python敺格<EFBFBD><EFBFBD>?* | <20>?餈鞱<E9A488>銝?| v1.0 | SAE | 2025-12-24 |
| **Node.js<EFBFBD>𡒊垢** | <EFBFBD>?餈鞱<E9A488>銝?| v1.3 | SAE | 2025-12-25 |
| **Dify AI<EFBFBD>滚𦛚** | <EFBFBD>?<3F><EFBFBD>蝵?| - | - | - |
| **PostgreSQL数据库** | ✅ 运行中 | PostgreSQL 15 | RDS | 2025-12-24 |
| **前端Nginx服务** | ✅ 运行中 | v1.2 | SAE | 2026-01-01 |
| **Python微服务** | ✅ 运行中 | v1.0 | SAE | 2025-12-24 |
| **Node.js后端** | ✅ 运行中 | v1.3 | SAE | 2025-12-25 |
| **Dify AI服务** | ⏳ 未部署 | - | - | - |
---
@@ -20,14 +23,16 @@
### 2.1 ACR容器镜像仓库
**<EFBFBD>箸𧋦靽⊥<EFBFBD>**嚗?- **<EFBFBD><EFBFBD>蝛粹𡢿**嚗䫤ai-clinical`
**基本信息**
- **命名空间**`ai-clinical`
- **Registry地址公网**`crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com`
- **Registry<EFBFBD><EFBFBD>嚗ĀPC嚗?*嚗䫤crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com`
- **<EFBFBD><EFBFBD><EFBFBD>?*嚗䫤gofeng117@163.com`
- **Registry地址VPC**`crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com`
- **用户名**`gofeng117@163.com`
- **密码**`fengzhibo117`
**<EFBFBD>𨅯<EFBFBD>隞枏<EFBFBD><EFBFBD>𡑒”**嚗?
| 隞枏<E99A9E><E69E8F>滨妍 | <20><><EFBFBD><EFBFBD><E59581>?| <20>𨅯<EFBFBD>憭批<E686AD> | VPC<50><EFBFBD> |
**镜像仓库列表**
| 仓库名称 | 最新版本 | 镜像大小 | VPC地址 |
|---------|---------|---------|---------|
| **python-extraction** | v1.0 | 1.12GB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0` |
| **ai-clinical_frontend-nginx** | v1.2 | ~50MB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.2` |
@@ -37,48 +42,59 @@
### 2.2 VPC网络与NAT网关
**VPC靽⊥<EFBFBD>**嚗?- **VPC ID**嚗䫤vpc-2ze055cptkew9c38w4r06`
**VPC信息**
- **VPC ID**`vpc-2ze055cptkew9c38w4r06`
- **VPC名称**`ai-clinical-vpc`
- **网段**`172.17.0.0/16`
- **<EFBFBD><EFBFBD>**嚗𡁜<E59A97><F0A1819C>?嚗<><E59A97>鈭穿<E988AD>
- **鈭斗揢<EFBFBD>?**嚗䫤vsw-2zevacop039bxrmj6yc0c`嚗<><EFBFBD>典躹F嚗?- **鈭斗揢<E69697>?**嚗䫤vsw-2zehoeyw9ldncymcyvfwq`<EFBFBD><EFBFBD>典躹A嚗?- **摰匧<E691B0><EFBFBD>D**嚗䫤sg-2zedk6fi8sgmmcwdu7tu`
- **地域**华北2北京
- **交换机1**`vsw-2zevacop039bxrmj6yc0c`可用区F
- **交换机2**`vsw-2zehoeyw9ldncymcyvfwq`可用区A
- **安全组ID**`sg-2zedk6fi8sgmmcwdu7tu`
**NAT蝵穃<EFBFBD>靽⊥<EFBFBD>**嚗?- **NAT蝵穃<E89DB5><E7A983>滨妍**嚗䫤NAT_airesearch`
**NAT网关信息**
- **NAT网关名称**`NAT_airesearch`
- **NAT网关ID**`ngw-2zeec9ulzgw7ywvx1pst6`
- **<EFBFBD><EFBFBD>IP嚗𠄌IP嚗?*嚗䫤182.92.176.14`
- **公网IPEIP**`182.92.176.14`
- **SNAT表ID**`stb-2zesszmzx1qpwf1cb2bry`
---
### 2.3 RDS PostgreSQL<EFBFBD>唳旿摨?
**摰硺<E691B0>靽⊥<E99DBD>**嚗?- **摰硺<E691B0>ID**嚗䫤pgm-2zex1m2y3r23hdn5`
- **閫<>聢**嚗?<3F>?GB嚗īg.n2.2c.1m嚗?- **摮睃<E691AE>蝛粹𡢿**嚗?00GB嚗𠄎SD鈭𤑳<E988AD>嚗?- **PostgreSQL<51><4C>𧋦**嚗?5.0
### 2.3 RDS PostgreSQL数据库
**实例信息**
- **实例ID**`pgm-2zex1m2y3r23hdn5`
- **规格**2核4GBpg.n2.2c.1m
- **存储空间**100GBSSD云盘
- **PostgreSQL版本**15.0
- **内网地址**`pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432`
- **憭𣇉<EFBFBD><EFBFBD><EFBFBD>**嚗䫤pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com`<EFBFBD><EFBFBD>儭?撌脣<E6928C><E884A3><EFBFBD>
- **<EFBFBD><EFBFBD>憭扯<EFBFBD><EFBFBD>交㺭**嚗?00
- **外网地址**`pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com`(⚠️ 已关闭)
- **最大连接数**400
- **时区**Asia/Shanghai
- **<EFBFBD><EFBFBD><EFBFBD>?*嚗?72.17.0.0/16嚗ĀPC蝵烐挾嚗?
**<2A>唳旿摨㯄<E691A8>蝵?*嚗?- **<EFBFBD>唳旿摨枏<EFBFBD>**嚗䫤ai_clinical_research`
- **<2A><EFBFBD><E586BD>?*嚗䫤airesearch`
- **白名单**172.17.0.0/16VPC网段
**数据库配置**
- **数据库名**`ai_clinical_research`
- **用户名**`airesearch`
- **密码**`Xibahe@fengzhibo117`
- **摮㛖泵<EFBFBD>?*嚗䦧TF8
- **字符集**UTF8
- **排序规则**en_US.utf8
**餈墧𦻖摮㛖泵銝?*嚗?```
**连接字符串**
```
postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research
```
<EFBFBD>𩤃<EFBFBD> 瘜冽<E7989C>嚗𡁜<E59A97><F0A1819C><EFBFBD><EFBFBD>?`@` <20><><EFBFBD>RL蝻𣇉<E89DBB>銝?`%40`
⚠️ 注意:密码中的 `@` 需要URL编码为 `%40`
**Schema<EFBFBD><EFBFBD>**嚗?1銝芯<E98A9D><E88AAF>﹖chema嚗㚁<E59A97>
**Schema架构**11个业务Schema
| Schema<EFBFBD>滨妍 | <20><EFBFBD><E79285> | 銵冽㺭<E586BD>?| 霂湔<E99C82> |
| Schema名称 | 功能模块 | 表数量 | 说明 |
|-----------|---------|-------|------|
| `platform_schema` | 撟喳蝱<EFBFBD><EFBFBD> | 8 | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pg-boss嚗?|
| `asl_schema` | 蝟餌<EFBFBD><EFBFBD><EFBFBD>讃蝑𥟇䰻 | 6 | 憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD><EFBFBD><EFBFBD><E69FB4><EFBFBD><EFBFBD>亥扇敶?|
| `aia_schema` | AI<EFBFBD><EFBFBD><EFBFBD><EFBFBD> | 5 | AI憿寧𤌍<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?|
| `platform_schema` | 平台核心 | 8 | 用户、权限、任务队列(pg-boss |
| `asl_schema` | 系统文献筛查 | 6 | 项目、文献、筛查记录 |
| `aia_schema` | AI智能摘要 | 5 | AI项目、摘要任务 |
| `dc_schema` | 数据清洗 | 6 | 工具A/B/C数据处理 |
| `pkb_schema` | 銝芯犖<EFBFBD><EFBFBD>摨?| 5 | <20><>讃蝞∠<E89D9E><E288A0><EFBFBD><EFBFBD>霈?|
| `iit_schema` | IIT Manager Agent | 5 | IIT憿寧𤌍<EFBFBD><EFBFBD><EFBFBD>摰⊥瓲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銵?|
| `pkb_schema` | 个人知识库 | 5 | 文献管理、笔记 |
| `iit_schema` | IIT Manager Agent | 5 | IIT项目、待审核动作、任务运行 |
| `admin_schema` | 系统管理 | 0 | 预留 |
| `rvw_schema` | 文献回顾 | 0 | 预留 |
| `ssa_schema` | 智能统计分析 | 0 | 预留 |
@@ -89,18 +105,22 @@ postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyun
### 2.4 SAE Serverless应用
**<2A><EFBFBD>蝛粹𡢿**嚗?- **<2A><EFBFBD>蝛粹𡢿ID**嚗䫤cn-beijing:test-airesearch`
- **<EFBFBD><EFBFBD>**嚗𡁜<E59A97><F0A1819C>?嚗<><E59A97>鈭穿<E988AD>
**命名空间**
- **命名空间ID**`cn-beijing:test-airesearch`
- **地域**华北2北京
**撌脤<EFBFBD>蝵脣<EFBFBD><EFBFBD><EFBFBD>銵?*嚗?
| 摨𠉛鍂<F0A0899B>滨妍 | <20><EFBFBD>?| 閫<>聢 | 摰硺<E691B0><E7A1BA>?| 蝡臬藁 | <20><><EFBFBD><EFBFBD><EFBFBD> | <20>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦 |
**已部署应用列表**
| 应用名称 | 状态 | 规格 | 实例数 | 端口 | 内网地址 | 镜像版本 |
|---------|------|------|-------|------|---------|---------|
| **python-extraction-test** | <EFBFBD>?餈鞱<E9A488>銝?| 1<EFBFBD>?GB | 1 | 8000 | `http://172.17.173.66:8000` | v1.0 |
| **nodejs-backend-test** | <EFBFBD>?餈鞱<E9A488>銝?| 1<EFBFBD>?GB | 1 | 3001 | `http://172.17.173.73:3001` | v1.3 |
| **frontend-nginx-service** | <EFBFBD>?餈鞱<E9A488>銝?| 0.5<EFBFBD>?GB | 1 | 80 | `http://172.17.173.80:80` | v1.2 |
| **python-extraction-test** | ✅ 运行中 | 1核2GB | 1 | 8000 | `http://172.17.173.66:8000` | v1.0 |
| **nodejs-backend-test** | ✅ 运行中 | 1核2GB | 1 | 3001 | `http://172.17.173.73:3001` | v1.3 |
| **frontend-nginx-service** | ✅ 运行中 | 0.5核1GB | 1 | 80 | `http://172.17.173.80:80` | v1.2 |
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滨蔭**嚗?
**Node.js<6A>𡒊垢嚗ěodejs-backend-test嚗?*嚗?```bash
**环境变量配置**
**Node.js后端nodejs-backend-test**
```bash
NODE_ENV=production
PORT=3001
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research?connection_limit=18&pool_timeout=10
@@ -142,12 +162,14 @@ WECHAT_AGENT_ID=1000002
WECHAT_CORP_SECRET=AZIVxMtoLb0rEszXS81e4dBRl-I9kgTjygIS0cFfENU
```
**<EFBFBD>滨垢Nginx嚗Êrontend-nginx-service嚗?*嚗?```bash
**前端Nginxfrontend-nginx-service**
```bash
BACKEND_SERVICE_HOST=172.17.173.73
BACKEND_SERVICE_PORT=3001
```
**Python敺格<EFBFBD><EFBFBD><EFBFBD>python-extraction-test嚗?*嚗?```bash
**Python微服务(python-extraction-test**
```bash
LOG_LEVEL=INFO
TEMP_DIR=/tmp/extraction_service
```
@@ -156,39 +178,55 @@ TEMP_DIR=/tmp/extraction_service
### 2.5 OSS对象存储
**Bucket靽⊥<EFBFBD>**嚗?- **Bucket<65>滨妍**嚗䫤ai-clinical-research`
- **<EFBFBD><EFBFBD>**嚗𡁜<E59A97><F0A1819C>?嚗<><E59A97>鈭穿<E988AD>
- **摮睃<EFBFBD>蝐餃<EFBFBD>**嚗𡁏<E59A97><F0A1818F><EFBFBD><EFBFBD><EFBFBD>?- **霈輸䔮<E8BCB8><EFBFBD>**嚗𡁶<E59A97><F0A181B6>?- **摮睃<E691AE><E79D83>𦯀<EFBFBD>蝐餃<E89D90>**嚗𡁜<E59A97><F0A1819C>𤾸<EFBFBD>雿坔<E99BBF><E59D94>?- **<EFBFBD><EFBFBD><EFBFBD>Endpoint**嚗䫤oss-cn-beijing-internal.aliyuncs.com`
**Bucket信息**
- **Bucket名称**`ai-clinical-research`
- **地域**华北2北京
- **存储类型**:标准存储
- **访问控制**:私有
- **存储冗余类型**:同城冗余存储
- **内网Endpoint**`oss-cn-beijing-internal.aliyuncs.com`
- **公网Endpoint**`oss-cn-beijing.aliyuncs.com`
- **Bucket域名内网**`ai-clinical-research.oss-cn-beijing-internal.aliyuncs.com`
- **<EFBFBD>𥕦遣<EFBFBD>園𡢿**嚗?025-12-16 20:22
- **创建时间**2025-12-16 20:22
**RAM<EFBFBD><EFBFBD>霈輸䔮<EFBFBD><EFBFBD>**嚗?- **RAM<41><EFBFBD><E586BD>?*嚗䫤oss-bucket-put-object@1991407246109125.onaliyun.com`
**RAM用户访问凭证**
- **RAM用户名**`oss-bucket-put-object@1991407246109125.onaliyun.com`
- **AccessKeyId**`LTAI5tB2Dt3NdvBL3G7nYGv7`
- **AccessKeySecret**`1iSN9k39RkApP93QjUhC1DcPIeMG4V`
- **UID**`203256565888301026`
- **<EFBFBD>𥕦遣<EFBFBD>園𡢿**嚗?025-12-16 20:31:41
- **创建时间**2025-12-16 20:31:41
<EFBFBD>𩤃<EFBFBD> **摰匧<E691B0>霅血<E99C85>**嚗鋫ccessKey<65><EFBFBD><E88880>煺縑<E785BA><EFBFBD>霂瑕嚉<E79195>𣂷漱<F0A382B7><EFBFBD><EFBFBD>Git隞枏<E99A9E>嚗?
**摮睃<E691AE><E79D83><EFBFBD>?*嚗?- `/uploads/pdfs/` - PDF<44><46>辣銝𠹺<E98A9D>
⚠️ **安全警告**AccessKey是敏感信息请勿提交到公开Git仓库
**存储用途**
- `/uploads/pdfs/` - PDF文件上传
- `/uploads/docx/` - Word文档上传
- `/uploads/txt/` - 文本文件上传
- `/exports/` - 导出文件临时存储
---
### 2.6 CLB韐蠘蝸<EFBFBD><EFBFBD><EFBFBD>?
**<2A><EFBFBD>霈輸䔮<E8BCB8><EFBFBD>**嚗?- **<EFBFBD><EFBFBD>IP**嚗䫤8.140.53.236`
### 2.6 CLB负载均衡器
**公网访问地址**
- **公网IP**`8.140.53.236`
- **访问地址**`http://8.140.53.236/`
- **<EFBFBD><EFBFBD>蝏穃<EFBFBD>**嚗䫤https://iit.xunzhengyixue.com/`嚗<>歇憭<E6AD87><E686AD>嚗?- **<2A>𡒊垢<F0A1928A>滚𦛚<E6BB9A>?*嚗䫤172.17.173.80:80`<EFBFBD><EFBFBD>蝡烤ginx嚗?- **<EFBFBD>穃𨯬蝡臬藁**嚗?0嚗𠃍TTP嚗?
- **域名绑定**`https://iit.xunzhengyixue.com/`(已备案)
- **后端服务器**`172.17.173.80:80`前端Nginx
- **监听端口**80HTTP
---
## 📦 三、已部署服务详情
### 3.1 PostgreSQL<EFBFBD>唳旿摨?
- **<2A>函蔡<E587BD>園𡢿**嚗?025-12-24
- **<EFBFBD>函蔡<EFBFBD><EFBFBD>**嚗䫤pg_dump` <20><EFBFBD>撖澆枂 <20>?RDS撖澆<E69296>
- **<EFBFBD>唳旿餈<EFBFBD><EFBFBD>園鵭**嚗𡁶漲12蝘𡜐<E89D98>90MB SQL<51><4C>辣嚗?- **撉諹<E69289><E8ABB9><EFBFBD>?*嚗尠<E59A97> Schema摰峕㟲<E5B395><E39FB2><EFBFBD><EFBFBD><E6A190><EFBFBD><E6B0AC><EFBFBD>蝟餅迤蝖?- **憭<><EFBFBD><E981A2>辣**嚗䫤AIclinicalresearch/rds_init_20251224_154529.sql`嚗?0MB嚗?- **RDS<44>芸𢆡憭<F0A286A1>遢**嚗𡁏<E59A97><F0A1818F><EFBFBD><E4BA99>?<3F><EFBFBD>靽萘<E99DBD>7憭抬<E686AD>
### 3.1 PostgreSQL数据库
- **部署时间**2025-12-24
- **部署方式**`pg_dump` 全量导出 → RDS导入
- **数据迁移时长**约12秒90MB SQL文件
- **验证状态**:✅ Schema完整、数据一致、关系正确
- **备份文件**`AIclinicalresearch/rds_init_20251224_154529.sql`90MB
- **RDS自动备份**每日凌晨2点保留7天
---
@@ -196,21 +234,33 @@ TEMP_DIR=/tmp/extraction_service
**当前部署版本**v1.2
**<EFBFBD>𨅯<EFBFBD>靽⊥<EFBFBD>**嚗?- **隞枏<E99A9E><E69E8F>滨妍**嚗䫤ai-clinical_frontend-nginx`
- **<2A>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦**嚗䫤v1.2` <20><><EFBFBD>敶枏<E695B6><E69E8F>函蔡<E587BD><E894A1>𧋦嚗?- **<EFBFBD>𨅯<EFBFBD>憭批<EFBFBD>**嚗𡁶漲50MB
**镜像信息**
- **仓库名称**`ai-clinical_frontend-nginx`
- **镜像版本**`v1.2` ✅(当前部署版本)
- **镜像大小**约50MB
- **基础镜像**`nginx:alpine`
- **<EFBFBD><EFBFBD><EFBFBD>園𡢿**嚗?026-01-01
- **构建时间**2026-01-01
- **镜像摘要**sha256:1b444d3d04e0e0e62a50009f165991b7d0192d7e21804aa9a3b3558e5aec7961
**<EFBFBD>函蔡<EFBFBD><EFBFBD>?*嚗?- <20>?撌脫<E6928C><E884AB><EFBFBD>蝵脣<E89DB5>SAE嚗?026-01-01嚗?- <20>?<3F>滚𦛚餈鞱<E9A488><EFBFBD>虜嚗<E8999C><E59A97>蝵穃𧑐<E7A983><F0A79190>嚗冴ttp://172.17.173.80:80嚗?- <20>?隡<><E99AA1>敺桐縑<E6A190><EFBFBD>撉諹<E69289><E8ABB9><EFBFBD>辣撌脤<E6928C>蝵莎<E89DB5>WW_verify_YnhsQBwI0ARnNoG0.txt嚗?
**v1.2<EFBFBD><EFBFBD>𧋦<EFBFBD>湔鰵<EFBFBD><EFBFBD>捆**嚗?- <20>?靽桀<E99DBD>Windows<77><EFBFBD>蝚阡䔮憸矋<E686B8>docker-entrypoint.sh CRLF<4C>䓴F嚗?- <20>?瘛餃<E7989B><EFBFBD><E99AA1>敺桐縑<E6A190><EFBFBD>撉諹<E69289><E8ABB9><EFBFBD>
- <EFBFBD>𩤃<EFBFBD> <20>函蔡<E587BD>𤾸<EFBFBD>蝵穃𧑐<E7A983><F0A79190>撌脣<E6928C><E884A3><EFBFBD>172.17.173.72 <20>?172.17.173.80
**部署状态**
- ✅ 已成功部署到SAE2026-01-01
- ✅ 服务运行正常内网地址http://172.17.173.80:80
- ✅ 企业微信域名验证文件已部署WW_verify_YnhsQBwI0ARnNoG0.txt
**Git<EFBFBD><EFBFBD>辣蝏𤘪<EFBFBD>**嚗?```
**v1.2版本更新内容**
- ✅ 修复Windows换行符问题docker-entrypoint.sh CRLF→LF
- ✅ 添加企业微信域名验证文件
- ⚠️ 部署后内网地址已变更172.17.173.72 → 172.17.173.80
**Git文件结构**
```
AIclinicalresearch/frontend-v2/
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Dockerfile <EFBFBD>?撌脫<E6928C>鈭二it嚗<74><E59A97><EFBFBD>嗆挾<E59786><E68CBE>遣嚗?<3F><EFBFBD><E98EBF><EFBFBD> .dockerignore <20>?撌脫<E6928C>鈭二it嚗<74><E59A97><EFBFBD>𡝗<EFBFBD>撱箔<E692B1>銝𧢲<E98A9D>嚗?<3F><EFBFBD><E98EBF><EFBFBD> nginx.conf <20>?撌脫<E6928C>鈭二it嚗𠃊ginx<6E>滨蔭嚗?<3F><EFBFBD><E98EBF><EFBFBD> docker-entrypoint.sh <20>?撌脫<E6928C>鈭二it嚗<74><EFBFBD><EFBFBD><E588BB>穿<EFBFBD>Unix<69><EFBFBD>蝚佗<E89D9A>
├── Dockerfile ✅ 已提交Git多阶段构建
├── .dockerignore ✅ 已提交Git优化构建上下文
├── nginx.conf ✅ 已提交GitNginx配置
├── docker-entrypoint.sh ✅ 已提交Git启动脚本Unix换行符
└── public/
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> WW_verify_YnhsQBwI0ARnNoG0.txt <EFBFBD>?隡<><E99AA1>敺桐縑<E6A190><EFBFBD>撉諹<E69289><E8ABB9><EFBFBD>
└── WW_verify_YnhsQBwI0ARnNoG0.txt ✅ 企业微信域名验证文件
```
---
@@ -219,118 +269,178 @@ AIclinicalresearch/frontend-v2/
**当前部署版本**v1.3
**<2A>𨅯<EFBFBD>靽⊥<E99DBD>**嚗?- **隞枏<E99A9E><E69E8F>滨妍**嚗䫤backend-service`
**镜像信息**
- **仓库名称**`backend-service`
- **镜像版本**`v1.3` ✅(已部署)
- **<EFBFBD>𨅯<EFBFBD>憭批<EFBFBD>**嚗?38MB (<EFBFBD>讠憬<EFBFBD>?~186MB)
- **镜像大小**838MB (压缩后 ~186MB)
- **基础镜像**`node:22-alpine`
- **<EFBFBD><EFBFBD><EFBFBD>園𡢿**嚗?025-12-25 18:43
- **<EFBFBD><EFBFBD>遣蝑𣇉裦**嚗𡁏㺿餈𤤿<E9A488><F0A4A4BF><EFBFBD>B嚗<42>𧋦<EFBFBD><EFBFBD>霂?Docker<65><EFBFBD>嚗?- **<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>**嚗窃ha256:a4ffb61c15af1cd1ed9de187b4464a1aab773918e5b41b4df5b8ad96514f9941
- **构建时间**2025-12-25 18:43
- **构建策略**改进版方案B本地编译+Docker打包
- **镜像摘要**sha256:a4ffb61c15af1cd1ed9de187b4464a1aab773918e5b41b4df5b8ad96514f9941
**<EFBFBD><EFBFBD><EFBFBD>舀沲<EFBFBD>?*嚗?- **Node.js<6A><73>𧋦**嚗?2.x
- **Prisma<EFBFBD><EFBFBD>𧋦**嚗?.17.0
- **ORM**嚗䥪risma嚗<61>𣈲<EFBFBD><F0A388B2><EFBFBD>Schema嚗?- **Web獢<62>沲**嚗鎄astify
- **<EFBFBD><EFBFBD>蝟餌<EFBFBD>**嚗䮝g-boss嚗㇊ostgres-Only<6C><EFBFBD>嚗?- **蝻枏<E89DBB>蝟餌<E89D9F>**嚗䥪ostgreSQL嚗<4C>𤜯隞Οedis嚗?
**<2A>函蔡<E587BD><EFBFBD>?*嚗?- <20>?撌脫<E6928C><E884AB><EFBFBD>蝵脣<E89DB5>SAE嚗?025-12-25 18:55嚗?- <20>?<3F>滚𦛚餈鞱<E9A488><EFBFBD>虜嚗<E8999C><E59A97>蝵穃𧑐<E7A983><F0A79190>嚗冴ttp://172.17.173.73:3001嚗?- <20>?<3F>亙熒璉<E78692><E79289>仿<EFBFBD><EFBFBD>
**技术架构**
- **Node.js版本**22.x
- **Prisma版本**6.17.0
- **ORM**Prisma支持多Schema
- **Web框架**Fastify
- **队列系统**pg-bossPostgres-Only架构
- **缓存系统**PostgreSQL替代Redis
**Git<EFBFBD><EFBFBD>辣蝏𤘪<EFBFBD>**嚗?```
**部署状态**
- ✅ 已成功部署到SAE2025-12-25 18:55
- ✅ 服务运行正常内网地址http://172.17.173.73:3001
- ✅ 健康检查通过
**Git文件结构**
```
AIclinicalresearch/backend/
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Dockerfile <EFBFBD>?撌脫<E6928C>鈭二it嚗<74>㺿餈𤤿<E9A488><F0A4A4BF><EFBFBD>B嚗𡁏𧋦<F0A1818F><EFBFBD>霂?Docker<65><EFBFBD>嚗?<3F><EFBFBD><E98EBF><EFBFBD> .dockerignore <20>?撌脫<E6928C>鈭二it嚗<74><E59A97><EFBFBD>𡝗<EFBFBD>撱箔<E692B1>銝𧢲<E98A9D>嚗?<3F><EFBFBD><E98EBF><EFBFBD> prisma/schema.prisma <20>?撌脣<E6928C>甇充DS嚗?2銝芣芋<E88AA3>?30+<2B>喟頂摮埈挾嚗?<3F><EFBFBD><E5A999><EFBFBD> tsconfig.json <20>?撌脖<E6928C><E88496><EFBFBD><E59094>㘾膄瘚贝<E7989A><E8B49D><EFBFBD>辣嚗?```
├── Dockerfile ✅ 已提交Git改进版方案B本地编译+Docker打包
├── .dockerignore ✅ 已提交Git优化构建上下文
├── prisma/schema.prisma ✅ 已同步RDS32个模型+30+关系字段)
└── tsconfig.json ✅ 已优化(排除测试文件)
```
---
### 3.4 Python敺格<EFBFBD><EFBFBD>?
### 3.4 Python微服务
**当前部署版本**v1.0
**<EFBFBD>𨅯<EFBFBD>靽⊥<EFBFBD>**嚗?- **隞枏<E99A9E><E69E8F>滨妍**嚗䫤python-extraction`
**镜像信息**
- **仓库名称**`python-extraction`
- **镜像版本**`v1.0`
- **<EFBFBD>𨅯<EFBFBD>憭批<EFBFBD>**嚗?.12GB
- **镜像大小**1.12GB
- **基础镜像**`python:3-slim`
- **<EFBFBD><EFBFBD><EFBFBD>園𡢿**嚗?025-12-24
- **构建时间**2025-12-24
**<EFBFBD><EFBFBD><EFBFBD>**嚗?- <20>?**PDF<44><46>𧋦<EFBFBD>𣂼<EFBFBD>**嚗䥪yMuPDF 1.26.7
- <EFBFBD>?**Docx<63><78><EFBFBD>𣂼<EFBFBD>**嚗鐝ammoth + python-docx
- <EFBFBD>?**<2A>唳旿皜<E697BF><E79A9C>嚗㇄C撌亙<E6928C>嚗?*嚗䮝andas 2.0+ / numpy 1.24+ / polars 0.19+
- <EFBFBD>?**霂剛<E99C82><EFBFBD>瘚?*嚗饝angdetect
- <EFBFBD>?**Nougat OCR**嚗𡁜歇蝘駁膄嚗<E88684><E59A97>撠誯<E692A0><E8AAAF>?.5GB嚗?
**<2A>函蔡<E587BD><EFBFBD>?*嚗?- <20>?撌脤<E6928C>蝵脣<E89DB5>SAE嚗?025-12-24嚗?- <20>?摨𠉛鍂餈鞱<E9A488><EFBFBD>虜嚗?銝泡orker餈𤤿<E9A488>嚗?- <20>?<3F><><EFBFBD>霈輸䔮<E8BCB8><EFBFBD>嚗䫤http://172.17.173.66:8000`
- <20>?<3F>亙熒璉<E78692><E79289>仿<EFBFBD><EFBFBD>
**功能模块**
- **PDF文本提取**PyMuPDF 1.26.7
- **Docx文档提取**Mammoth + python-docx
- **数据清洗DC工具**pandas 2.0+ / numpy 1.24+ / polars 0.19+
- **语言检测**langdetect
-**Nougat OCR**已移除减小镜像1.5GB
**Git<EFBFBD><EFBFBD>辣蝏𤘪<EFBFBD>**嚗?```
**部署状态**
- ✅ 已部署到SAE2025-12-24
- ✅ 应用运行正常2个worker进程
- ✅ 内网访问地址:`http://172.17.173.66:8000`
- ✅ 健康检查通过
**Git文件结构**
```
AIclinicalresearch/extraction_service/
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Dockerfile <EFBFBD>?撌脫<E6928C>鈭二it嚗<74><E59A97><EFBFBD>嗆挾<E59786><E68CBE>遣 + <20><EFBFBD>鈭烐<E988AD>嚗?<3F><EFBFBD><E98EBF><EFBFBD> .dockerignore <20>?撌脫<E6928C>鈭二it嚗<74><E59A97><EFBFBD>𡝗<EFBFBD>撱箔<E692B1>銝𧢲<E98A9D>嚗?<3F><EFBFBD><E5A999><EFBFBD> requirements-prod.txt <20>?撌脫<E6928C>鈭二it嚗<74>移蝞<E7A7BB>靘肽<E99D98><E882BD>𡑒”嚗?```
├── Dockerfile ✅ 已提交Git多阶段构建 + 阿里云源)
├── .dockerignore ✅ 已提交Git优化构建上下文
└── requirements-prod.txt ✅ 已提交Git精简依赖列表
```
---
## <EFBFBD><EFBFBD> <20><EFBFBD><E49C98><EFBFBD>蝵脣<E89DB5><E884A3>脰扇敶?
## 🔄 四、部署历史记录
### 2026-01-01前端v1.2部署 - 企业微信域名验证)✅
#### 部署背景
- **<2A><EFBFBD>**嚗帋蛹隡<E89BB9><E99AA1>敺桐縑<E6A190><EFBFBD><E4BA99>滨蔭<E6BBA8>臭縑<E887AD><EFBFBD>嚗屸<E59A97><EFBFBD><EFBFBD>滨垢<E6BBA8>寧𤌍敶閖<E695B6>蝵脣<E89DB5><E884A3><EFBFBD><EFBFBD><E99C82>隞?- **<2A><EFBFBD>**嚗冴ttps://iit.xunzhengyixue.com/
- **目的**:为企业微信接入配置可信域名,需要在前端根目录部署域名验证文件
- **域名**https://iit.xunzhengyixue.com/
- **验证文件**WW_verify_YnhsQBwI0ARnNoG0.txt
#### <EFBFBD>函蔡餈<EFBFBD><EFBFBD>銝𡡞䔮憸䀝耨憭?1. **<2A><EFBFBD><E6A185>𤑳緵**嚗𡁜<E59A97>蝡眠1.1<EFBFBD>函蔡憭梯揖嚗<EFBFBD><EFBFBD>典鍳<EFBFBD><EFBFBD>蝡见朖<EFBFBD><EFBFBD><EFBFBD>? - <20>?<3F>啗情嚗锭AE<41><EFBFBD>銝箇征嚗<E5BE81><EFBFBD>函𠶖<E587BD><F0A0B696>遬蝷?撏拇<E6928F><E68B87><EFBFBD><E39A9A><EFBFBD>?
- <20>?<3F>躰秤嚗䫤exec /docker-entrypoint.sh: no such file or directory`
#### 部署过程与问题修复
1. **问题发现**前端v1.1部署失败,容器启动后立即退出
- ❌ 现象SAE日志为空容器状态显示"崩溃或退出"
- ❌ 错误:`exec /docker-entrypoint.sh: no such file or directory`
2. **<EFBFBD>寞𧋦<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗? - <20><> `docker-entrypoint.sh` 雿輻鍂鈭<E98D82>indows<77><EFBFBD>蝚佗<E89D9A>CRLF `\r\n`嚗? - <20><> Linux摰孵膥<E5ADB5><E886A5>ash閫<68><E996AB><EFBFBD><EFBFBD>瘜閗<E7989C><E99697>青RLF<4C><EFBFBD><E6BE86><EFBFBD><EFBFBD><EFBFBD>? - <20><> 餈蹱糓銝<E7B393>銝芸<E98A9D><E88AB8><EFBFBD>頝典像<E585B8><EFBFBD><E595A3>煾䔮憸?
3. **閫<><E996AB><EFBFBD><EFBFBD>**嚗? - <20>?撠?`docker-entrypoint.sh` 頧祆揢銝摻nix<EFBFBD><EFBFBD>蝚佗<EFBFBD>LF `\n`嚗? - <20>?雿輻鍂PowerShell<6C>賭誘<E8B3AD><EFBFBD>頧祆揢
- <EFBFBD>?<3F>砍𧑐Docker瘚贝<E7989A>撉諹<E69289><E8ABB9><EFBFBD>
2. **根本原因分析**
- 🔍 `docker-entrypoint.sh` 使用了Windows换行符CRLF `\r\n`
- 🔍 Linux容器的bash解释器无法识别CRLF格式的脚本
- 🔍 这是一个典型的跨平台开发问题
4. **<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>遣銝擧綫<EFBFBD>?*嚗? - <20>?<3F>齿鰵<E9BDBF><E9B0B5><EFBFBD>𨅯<EFBFBD><F0A885AF><EFBFBD>扇銝漓1.2嚗?3.7蝘𡜐<EFBFBD>
- <EFBFBD>?<3F><EFBFBD><E588B8><EFBFBD>ACR<43>𣂼<EFBFBD>嚗Ê̌igest: 1b444d3d...嚗? - <20>?<3F>𨅯<EFBFBD><F0A885AF><EFBFBD>鉄隡<E98984><E99AA1>敺桐縑撉諹<E69289><E8ABB9><EFBFBD>
3. **解决方案**
- ✅ 将 `docker-entrypoint.sh` 转换为Unix换行符LF `\n`
- ✅ 使用PowerShell命令批量转换
- ✅ 本地Docker测试验证通过
5. **SAE<EFBFBD>函蔡<EFBFBD>𣂼<EFBFBD>**嚗? - <20>?<3F>函蔡<E587BD>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦嚗鯝1.2
- <EFBFBD>?<3F><EFBFBD><E887AC><EFBFBD><E3979B>滨蔭嚗䫤BACKEND_SERVICE_HOST=172.17.173.73`, `BACKEND_SERVICE_PORT=3001`
- <EFBFBD>?摰孵膥<E5ADB5>臬𢆡甇<F0A286A1>虜嚗<E8999C><E59A97>摨瑟<E691A8><E7919F>仿<EFBFBD><EFBFBD>
- <EFBFBD>?<3F><EFBFBD>蝵穃𧑐<E7A983><F0A79190>嚗䫤http://172.17.173.80:80`
- <20>𩤃<EFBFBD> IP<49><EFBFBD><E595A3><EFBFBD>嚗?72.17.173.72 <20>?172.17.173.80
4. **镜像构建与推送**
- ✅ 重新构建镜像标记为v1.223.7秒)
- ✅ 推送到ACR成功digest: 1b444d3d...
- ✅ 镜像包含企业微信验证文件
5. **SAE部署成功**
- ✅ 部署镜像版本v1.2
- ✅ 环境变量配置:`BACKEND_SERVICE_HOST=172.17.173.73`, `BACKEND_SERVICE_PORT=3001`
- ✅ 容器启动正常,健康检查通过
- ✅ 新内网地址:`http://172.17.173.80:80`
- ⚠️ IP地址变化172.17.173.72 → 172.17.173.80
#### 技术要点总结
1. **Windows<EFBFBD><EFBFBD>蝚阡䔮憸?*嚗? - <20><EFBFBD>嚗鎭it<69>汾indows銝𢠃<E98A9D>霈方蓮<E696B9>蛹CRLF
- <EFBFBD><EFBFBD>嚗帋蝙<EFBFBD>?`.gitattributes` <20>𡝗<EFBFBD><F0A19D97>刻蓮<E588BB>? - 撉諹<E69289>嚗䫤(Get-Content file -Raw) -match "\`r\`n"`
1. **Windows换行符问题**
- 原因Git在Windows上默认转换为CRLF
- 解决:使用 `.gitattributes` 或手动转换
- 验证:`(Get-Content file -Raw) -match "\`r\`n"`
2. **摰孵膥靚<EFBFBD><EFBFBD><EFBFBD><EFBFBD>撌?*嚗? - <20>砍𧑐瘚贝<E7989A>嚗䫤docker run --rm -e KEY=VALUE image:tag`
2. **容器调试技巧**
- 本地测试:`docker run --rm -e KEY=VALUE image:tag`
- 查看日志:`docker logs container_name`
- 进入容器:`docker exec -it container sh`
3. **SAE<EFBFBD>函蔡<EFBFBD><EFBFBD>雿喳<EFBFBD>頝?*嚗? - <20><EFBFBD><E887AC><EFBFBD><EFBFBD><EFBFBD>滨蔭摰峕㟲
3. **SAE部署最佳实践**
- 环境变量必须配置完整
- 本地先验证镜像可正常运行
- 部署后IP可能变化需要更新依赖服务的配置
#### 部署结果
- <EFBFBD>?<3F>滨垢<E6BBA8>滚𦛚v1.2<EFBFBD>函蔡<EFBFBD>𣂼<EFBFBD>
- <EFBFBD>?隡<><E99AA1>敺桐縑撉諹<E69289><E8ABB9><EFBFBD><EFBFBD>航挪<E888AA>?- <20>?蝟餌<E89D9F><E9A48C><EFBFBD>餈鞱<E9A488><EFBFBD>
- <EFBFBD>𩤃<EFBFBD> <20><><EFBFBD><EFBFBD>𧶏<EFBFBD><F0A7B68F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撌脫凒<E884AB><EFBFBD>靘肽<E99D98><E882BD>滨垢<E6BBA8><E59EA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E996AC><EFBFBD><EFBFBD>蝵?
- ✅ 前端服务v1.2部署成功
- ✅ 企业微信验证文件可访问
- ✅ 系统整体运行正常
- ⚠️ 需要注意:内网地址已更新,依赖前端的服务需要调整配置
---
### 2025-12-25<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵脫<EFBFBD><EFBFBD><EFBFBD>𠯫嚗咓<EFBFBD>?
### 2025-12-25(完整部署成功日)🎉
#### 上午Node.js后端部署
- <EFBFBD>?Node.js<EFBFBD>𡒊垢<EFBFBD>𣂼<EFBFBD><EFBFBD>函蔡<EFBFBD>訕AE嚗ǒ1.3嚗?- <20>?靽桀<E99DBD>Alpine Linux bash頝臬<E9A09D><E887AC><EFBFBD>嚗?bin/bash <20>?/bin/sh嚗?- <20>?靽桀<E99DBD>config<69><EFBFBD>蝻箏仃<E7AE8F><EFBFBD>嚗㇄ockerfile銵亙<E98AB5>COPY config嚗?- <20>?靽桀<E99DBD>pino-pretty<74>煺漣<E785BA><EFBFBD><E887AC><EFBFBD><EFBFBD>辺隞嗅鍳<E59785><EFBFBD>
- <EFBFBD>?靽桀<E99DBD>healthCheck ES Module<6C>澆捆<E6BE86><EFBFBD>require <20>?import嚗?- <20>?<3F><><EFBFBD>撘撇WT撖<54>𤨎嚗?4雿滚<E99BBF><E6BB9A><EFBFBD><E5899B><EFBFBD>
- Node.js后端成功部署到SAEv1.3
- ✅ 修复Alpine Linux bash路径问题/bin/bash → /bin/sh
- ✅ 修复config目录缺失问题Dockerfile补充COPY config
- ✅ 修复pino-pretty生产环境问题条件启用
- ✅ 修复healthCheck ES Module兼容性require → import
- ✅ 生成强JWT密钥64位十六进制
#### 中午前端Nginx部署
- <EFBFBD>?<3F>滨垢Nginx<6E>𣂼<EFBFBD><F0A382BC>函蔡<E587BD>訕AE嚗ǒ1.0嚗?- <20>?<3F>滨垢<E6BBA8>滚𦛚餈鞱<E9A488><EFBFBD>虜嚗<E8999C><E59A97>蝵穃𧑐<E7A983><F0A79190>嚗冴ttp://172.17.173.72:80嚗?- <20>?<3F>滨垢<E6BBA8><EFBFBD>蝡臭誨<E887AD><E8AAA8><EFBFBD><EFBFBD><E99C82><EFBFBD>
- <EFBFBD>?摰峕㟲<E5B395>曇楝瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD><E59A97>蝡胼<E89DA1><E883BC>𡒊垢<F0A1928A>埝㺭<E59F9D><EFBFBD>嚗?
- ✅ 前端Nginx成功部署到SAEv1.0
- ✅ 前端服务运行正常内网地址http://172.17.173.72:80
- ✅ 前端到后端代理验证通过
- ✅ 完整链路测试通过(前端→后端→数据库)
#### 下午环境变量修复与CLB配置
- <EFBFBD>?<3F>𤑳緵撌亙<E6928C>C<EFBFBD>?憭批<E686AD><E689B9>賣𥁒<E8B3A3><EFBFBD>connect ECONNREFUSED 127.0.0.1:8000嚗?- <20>?<3F>埝䰻撟嗡耨憭滚<E686AD><E6BB9A>桅䔮憸矋<E686B8><E79F8B><EFBFBD><E887AC><EFBFBD><E3979B><EFBFBD>霂? - 隞<><E99A9E>雿輻鍂嚗䫤EXTRACTION_SERVICE_URL`
- ✅ 发现工具C的7大功能报错connect ECONNREFUSED 127.0.0.1:8000
- ✅ 排查并修复关键问题:环境变量名错误
- 代码使用:`EXTRACTION_SERVICE_URL`
- 错误配置:`PYTHON_SERVICE_URL`
- 正确配置:`EXTRACTION_SERVICE_URL=http://172.17.173.66:8000`
- <EFBFBD>?Node.js<EFBFBD>𡒊垢<EFBFBD>齿鰵<EFBFBD>函蔡嚗䬠P<EFBFBD><EFBFBD><EFBFBD>湔鰵銝綽<EFBFBD>http://172.17.173.73:3001
- <EFBFBD>?<3F>湔鰵<E6B994>滨垢Nginx<6E><EFBFBD><E887AC><EFBFBD>嚗鋳ACKEND_SERVICE_HOST=172.17.173.73
- <EFBFBD>?<3F>滨蔭CLB韐蠘蝸<E8A098><E89DB8><EFBFBD><EFBFBD><E58981><EFBFBD><E79195><EFBFBD>霈輸䔮<E8BCB8><EFBFBD>嚗冴ttp://8.140.53.236/
- <EFBFBD>?撌亙<E6928C>C<EFBFBD>?憭批<E686AD><E689B9><EFBFBD><E8B3A2><EFBFBD>霂閖<E99C82><EFBFBD>
- <EFBFBD>?<3F><>讃蝑𥟇䰻璅<E79285>瘚贝<E7989A><E8B49D><EFBFBD>
- <EFBFBD>?摰峕㟲蝟餌<E89D9F><E9A48C>函蔡<E587BD>𣂼<EFBFBD>撉諹<E69289> <20><>
- Node.js后端重新部署IP地址更新为http://172.17.173.73:3001
- ✅ 更新前端Nginx环境变量BACKEND_SERVICE_HOST=172.17.173.73
- ✅ 配置CLB负载均衡器获得公网访问地址http://8.140.53.236/
- ✅ 工具C的7大功能全部测试通过
- ✅ 文献筛查模块测试通过
- ✅ 完整系统部署成功验证 🎉
---
### 2025-12-24初始部署
- <EFBFBD>?PostgreSQL<EFBFBD>唳旿摨㯄<EFBFBD>蝵脣<EFBFBD><EFBFBD>?- <20>?<3F>滨垢Nginx Docker<65>𨅯<EFBFBD><F0A885AF><EFBFBD>遣撟嗆綫<E59786><E7B6AB>秐ACR
- <EFBFBD>?Python敺格<E695BA><E6A0BC>ocker<65>𨅯<EFBFBD><F0A885AF><EFBFBD>遣撟嗆綫<E59786><E7B6AB>ACR
- <EFBFBD>?Python敺格<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵脣<EFBFBD>SAE嚗<EFBFBD><EFBFBD>蝵穃𧑐<EFBFBD><EFBFBD>嚗?72.17.173.66:8000嚗?- <20>?閫<><E996AB>ACR<43>𨅯<EFBFBD><F0A885AF><EFBFBD><E58CA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59A97>蝵桅<E89DB5><E6A185><EFBFBD>摨栞恕霂<E68195><E99C82>
- <EFBFBD>?Node.js<6A>𡒊垢Prisma<6D><EFBFBD><E6BB9A>峕郊摰峕<E691B0>嚗?2銝芣芋<E88AA3><EFBFBD><E9A1B5>见𢆡銵亙<E98AB5>30+<2B>喟頂摮埈挾嚗?- <20>?Node.js<6A>𡒊垢TypeScript蝻𤥁<E89DBB>靽桀<E99DBD>摰峕<E691B0><EFBFBD>耨憭?00+<2B>躰秤<E8BAB0>?<3F>躰秤嚗?- <20>?Node.js<6A>𡒊垢Docker<65>𨅯<EFBFBD><F0A885AF><EFBFBD><EFBFBD>𣂼<EFBFBD>嚗?38MB嚗峕㺿餈𤤿<E9A488><F0A4A4BF><EFBFBD>B嚗?- <20>?Node.js<6A>𡒊垢<F0A1928A>𨅯<EFBFBD><F0A885AF><EFBFBD><E588B8>秐ACR嚗ǒ1.0嚗?
- PostgreSQL数据库部署完成
- ✅ 前端Nginx Docker镜像构建并推送至ACR
- Python微服务Docker镜像构建并推送至ACR
- ✅ Python微服务成功部署到SAE内网地址172.17.173.66:8000
- ✅ 解决ACR镜像拉取权限问题配置镜像仓库认证
- ✅ Node.js后端Prisma反向同步完成32个模型手动补全30+关系字段)
- ✅ Node.js后端TypeScript编译修复完成修复200+错误→0错误
- ✅ Node.js后端Docker镜像构建成功838MB改进版方案B
- ✅ Node.js后端镜像推送至ACRv1.0
---
> **提示**本文档记录SAE服务器的最新真实状态每次部署后必须更新
> **<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>?*嚗?026-01-01 14:00
> **最后更新**2026-01-01 14:00
> **当前版本**前端v1.2 | 后端v1.3 | Python v1.0 | PostgreSQL 15