feat(aia): Complete AIA V2.0 with universal streaming capabilities

Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
This commit is contained in:
2026-01-14 19:15:01 +08:00
parent 3d35e9c58b
commit 1b53ab9d52
386 changed files with 52096 additions and 65238 deletions

View File

@@ -1,36 +1,34 @@
# Python 微服务 SAE 部署操作手册
# Python 敺格<EFBFBD><EFBFBD>?SAE <20>函蔡<E587BD><EFBFBD><E6BBA2><EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦**: v1.0
**<EFBFBD>𥕦遣<EFBFBD>園𡢿**: 2024-12-24
**适用范围**: AI临床研究平台 - Python微服务(extraction_service
**环境类型**: 测试环境(轻量版SAE
**目标读者**: 运维工程师、开发工程师
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**: AI銝游<EFBFBD><EFBFBD>𠉛弦撟喳蝱 - Python敺格<EFBFBD><EFBFBD><EFBFBD>extraction_service嚗?
**<EFBFBD><EFBFBD>蝐餃<EFBFBD>**: 瘚贝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SAE嚗?
**<EFBFBD><EFBFBD>霂餉<EFBFBD>?*: 餈鞟輕撌亦<E6928C><EFBFBD><E692A3><EFBFBD><EFBFBD><EFBFBD>穃極蝔见<E89D94>
---
## <20><> <20><EFBFBD>
1. [前置检查清单](#前置检查清单)
2. [创建SAE应用Web控制台](#创建sae应用web控制台)
3. [部署后验证](#部署后验证)
1. [<EFBFBD>滨蔭璉<EFBFBD><EFBFBD><EFBFBD><EFBFBD>騟(#<23>滨蔭璉<E894AD><E79289><EFBFBD><E4BAA4>?
2. [<EFBFBD>𥕦遣SAE摨𠉛鍂嚗Áeb<EFBFBD><EFBFBD><EFBFBD><EFBFBD>](#<23>𥕦遣sae摨𠉛鍂web<65><EFBFBD><E689B9>?
3. [<EFBFBD>函蔡<EFBFBD>𡡞<EFBFBD><EFBFBD>(#<23>函蔡<E587BD>𡡞<EFBFBD>霂?
4. [<EFBFBD><EFBFBD><EFBFBD><EFBFBD>滨蔭](#<23><><EFBFBD><EFBFBD>滨蔭)
5. [撣貉<EFBFBD><EFBFBD><EFBFBD><EFBFBD>埝䰻](#撣貉<E692A3><E8B289><EFBFBD><E6A185>埝䰻)
---
## 前置检查清单
## <EFBFBD>滨蔭璉<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
### <20>?敹<><E695B9><EFBFBD><E99F8F>蝖株恕
### ✅ 必需资源确认
在开始创建SAE应用前请确认以下资源已准备就绪
| 资源类型 | 确认项 | 获取位置 |
<EFBFBD><EFBFBD>憪见<EFBFBD>撱搴AE摨𠉛鍂<EFBFBD><EFBFBD>霂瑞霈支誑銝贝<EFBFBD>皞𣂼歇<EFBFBD><EFBFBD><EFBFBD>撠梁貌嚗?
| 韏<><E99F8F>蝐餃<E89D90> | 蝖株恕憿?| <20><EFBFBD>雿滨蔭 |
|---------|-------|---------|
| **Docker镜像** | ✅ 已推送至ACR | [部署进度总览.md - 2.1 ACR容器镜像仓库](./00-部署进度总览.md#21-acr容器镜像仓库) |
| **VPC网络** | VPC ID、vSwitch ID | [部署进度总览.md - 2.2 VPC网络](./00-部署进度总览.md#22-vpc网络与nat网关) |
| **安全组** | ✅ 安全组ID | [部署进度总览.md - 2.2 VPC网络](./00-部署进度总览.md#22-vpc网络与nat网关) |
| **OSS存储** | AccessKey、Bucket名称 | [部署进度总览.md - 2.5 OSS对象存储](./00-部署进度总览.md#25-oss对象存储) |
| **SAE命名空间** | ✅ 命名空间ID | [部署进度总览.md - 2.4 SAE应用](./00-部署进度总览.md#24-sae-serverless应用) |
| **Docker<EFBFBD>𨅯<EFBFBD>** | <EFBFBD>?撌脫綫<E884AB><E7B6AB>秐ACR | [<EFBFBD>函蔡餈𥕦漲<EFBFBD><EFBFBD>.md - 2.1 ACR摰孵膥<E5ADB5>𨅯<EFBFBD>隞枏<E99A9E>](./00-<2D>函蔡餈𥕦漲<F0A595A6><EFBFBD>.md#21-acr摰孵膥<EFBFBD>𨅯<EFBFBD>隞枏<EFBFBD>) |
| **VPC蝵𤑳<EFBFBD>** | <EFBFBD>?VPC ID<EFBFBD><EFBFBD>Switch ID | [<EFBFBD>函蔡餈𥕦漲<EFBFBD><EFBFBD>.md - 2.2 VPC蝵𤑳<EFBFBD>](./00-<EFBFBD>函蔡餈𥕦漲<EFBFBD><EFBFBD>.md#22-vpc蝵𤑳<EFBFBD>銝篺at蝵穃<EFBFBD>) |
| **摰匧<EFBFBD>蝏?* | <20>?摰匧<E691B0><EFBFBD>D | [<EFBFBD>函蔡餈𥕦漲<EFBFBD><EFBFBD>.md - 2.2 VPC蝵𤑳<EFBFBD>](./00-<EFBFBD>函蔡餈𥕦漲<EFBFBD><EFBFBD>.md#22-vpc蝵𤑳<EFBFBD>銝篺at蝵穃<EFBFBD>) |
| **OSS摮睃<EFBFBD>** | <EFBFBD>?AccessKey<EFBFBD><EFBFBD>ucket<EFBFBD>滨妍 | [<EFBFBD>函蔡餈𥕦漲<EFBFBD><EFBFBD>.md - 2.5 OSS撖寡情摮睃<EFBFBD>](./00-<EFBFBD>函蔡餈𥕦漲<EFBFBD><EFBFBD>.md#25-oss撖寡情摮睃<EFBFBD>) |
| **SAE<EFBFBD><EFBFBD>蝛粹𡢿** | <EFBFBD>?<3F><EFBFBD>蝛粹𡢿ID | [<EFBFBD>函蔡餈𥕦漲<EFBFBD><EFBFBD>.md - 2.4 SAE摨𠉛鍂](./00-<EFBFBD>函蔡餈𥕦漲<EFBFBD><EFBFBD>.md#24-sae-serverless摨𠉛鍂) |
### <20>𣑐 <20>𨅯<EFBFBD>靽⊥<E99DBD>
@@ -39,56 +37,51 @@
crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0
<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>𧋦嚗鯝1.0
镜像大小1.12GB
功能说明PDF/Docx提取 + 数据清洗pandas/polars
```
<EFBFBD>𨅯<EFBFBD>憭批<EFBFBD>嚗?.12GB
<EFBFBD><EFBFBD>霂湔<EFBFBD>嚗䥪DF/Docx<63>𣂼<EFBFBD> + <20>唳旿皜<E697BF><E79A9C>嚗īandas/polars嚗?```
### <20><> 蝵𤑳<E89DB5><F0A491B3>滨蔭靽⊥<E99DBD>
```
VPC ID嚗鯝pc-2ze055cptkew9c38w4r06
vSwitch IDvsw-2zevacop039bxrmj6yc0c可用区F
安全组IDsg-2zedk6fi8sgmmcwdu7tu
vSwitch ID嚗鯝sw-2zevacop039bxrmj6yc0c<EFBFBD><EFBFBD>典躹F嚗?摰匧<E691B0><EFBFBD>D嚗窃g-2zedk6fi8sgmmcwdu7tu
<EFBFBD><EFBFBD>蝛粹𡢿嚗䬙n-beijing:test-airesearch
```
### 🗄️ OSS配置信息
### <EFBFBD><EFBFBD>儭?OSS<53>滨蔭靽⊥<E99DBD>
```
OSS_ACCESS_KEY_ID嚗匁TAI5tB2Dt3NdvBL3G7nYGv7
OSS_ACCESS_KEY_SECRET1iSN9k39RkApP93QjUhC1DcPIeMG4V
OSS_ACCESS_KEY_SECRET嚗?iSN9k39RkApP93QjUhC1DcPIeMG4V
OSS_BUCKET嚗惨i-clinical-research
OSS_ENDPOINT嚗駅ss-cn-beijing-internal.aliyuncs.com
```
⚠️ **安全警告**AccessKey是敏感信息仅在SAE环境变量中配置不要提交到Git或打印到日志
<EFBFBD>𩤃<EFBFBD> **摰匧<E691B0>霅血<E99C85>**嚗鋫ccessKey<65><EFBFBD><E88880>煺縑<E785BA><EFBFBD><EFBFBD>銁SAE<41><EFBFBD><E887AC><EFBFBD>銝剝<E98A9D>蝵殷<E89DB5>銝滩<E98A9D><E6BBA9>𣂷漱<F0A382B7>蚣it<69>𡝗<EFBFBD><F0A19D97><EFBFBD><E595A3><EFBFBD>嚗?
---
## <20>𥕦遣SAE摨𠉛鍂嚗Áeb<65><EFBFBD><E689B9><EFBFBD>
### 步骤 1进入SAE控制台
### 甇仿炊 1嚗朞<E59A97><E69C9E>兄AE<41><EFBFBD><E689B9>?
1. <20><EFBFBD> [<5B><EFBFBD>鈭烐綉<E78390>嗅蝱](https://homenew.console.aliyun.com/)
2. 搜索并进入 **Serverless 应用引擎 SAE**
3. 确认地域为 **华北2北京**
2. <20>𦦵揣撟嗉<E6929F><E59789>?**Serverless 摨𠉛鍂撘閙<EFBFBD> SAE**
3. 蝖株恕<E6A0AA><EFBFBD>銝?**<2A>𤾸<EFBFBD>2嚗<32><E59A97>鈭穿<E988AD>**
4. <20>㗇𥋘<E39787><EFBFBD>蝛粹𡢿 **test-airesearch**
---
### 步骤 2创建应用
### 甇仿炊 2嚗𡁜<E59A97>撱箏<E692B1><E7AE8F>?
#### 2.1 <20>箸𧋦靽⊥<E99DBD><E28AA5>滨蔭
<EFBFBD>孵稬 **<2A>𥕦遣摨𠉛鍂** <20>厰僼嚗<E583BC><EFBFBD>嗘誑銝衤縑<E8A1A4><EFBFBD>
| 配置项 | 值 | 说明 |
| <EFBFBD>滨蔭憿?| <20>?| 霂湔<E99C82> |
|--------|---|------|
| **应用名称** | `python-extraction-test` | 建议加 `-test` 后缀区分测试环境 |
| **应用类型** | **轻量版应用** | 测试环境使用轻量版,节省成本 |
| **摨𠉛鍂<EFBFBD>滨妍** | `python-extraction-test` | 撱箄悅<EFBFBD>?`-test` <20>𡒊<EFBFBD><F0A1928A><EFBFBD>瘚贝<E7989A><E8B49D><EFBFBD> |
| **摨𠉛鍂蝐餃<EFBFBD>** | **頧駁<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?* | 瘚贝<E7989A><E8B49D><EFBFBD>雿輻鍂頧駁<E9A0A7><E9A781><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鞉𧋦 |
| **<2A>函蔡<E587BD><EFBFBD>** | **<2A>𨅯<EFBFBD>** | <20>㗇𥋘摰孵膥<E5ADB5>𨅯<EFBFBD><F0A885AF>函蔡 |
点击 **下一步**
<EFBFBD>孵稬 **銝衤<E98A9D>甇?*
---
@@ -96,47 +89,45 @@ OSS_ENDPOINToss-cn-beijing-internal.aliyuncs.com
##### <20>𨅯<EFBFBD><F0A885AF>滨蔭
| 配置项 | 值 | 说明 |
| <EFBFBD>滨蔭憿?| <20>?| 霂湔<E99C82> |
|--------|---|------|
| **镜像来源** | 容器镜像服务 ACR或选择"自定义镜像" | |
| **镜像地址** | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0` | ⚠️ 必须使用VPC内网地址<br>⚠️ 必须包含版本号 `:v1.0` |
| **镜像版本** | `v1.0` | 固定版本号,不要使用 `:latest`<br>⚠️ 如果不指定版本号SAE会默认使用 `:latest` 导致拉取失败 |
| **镜像仓库认证** | **需要配置** | ⚠️ **关键步骤**配置ACR访问凭证见下方 |
| **<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>** | 摰孵膥<EFBFBD>𨅯<EFBFBD><EFBFBD>滚𦛚 ACR嚗<52><E59A97><EFBFBD>㗇𥋘"<22><EFBFBD>銋厰<E98A8B><E58EB0>?嚗?| |
| **<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>** | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0` | <EFBFBD>𩤃<EFBFBD><>◆雿輻鍂VPC<50><43><EFBFBD><EFBFBD><EFBFBD><br><3E>𩤃<EFBFBD><><EFBFBD><E29786><EFBFBD><E98984>𧋦<EFBFBD>?`:v1.0` |
| **<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>𧋦** | `v1.0` | <EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦<EFBFBD><EFBFBD>銝滩<EFBFBD>雿輻鍂 `:latest`<br><EFBFBD>𩤃<EFBFBD><><E68692>銝齿<E98A9D>摰𡁶<E691B0><F0A181B6>砍噡嚗玺AE隡𡁻<E99AA1>霈支蝙<E694AF>?`:latest` 撖潸稲<E6BDB8><EFBFBD>憭梯揖 |
| **<EFBFBD>𨅯<EFBFBD>隞枏<EFBFBD>霈方<EFBFBD>** | **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵?* | <20>𩤃<EFBFBD> **<2A>喲睸甇仿炊**嚗𡁻<E59A97>蝵唧CR霈輸䔮<E8BCB8><EFBFBD><EFBFBD><E59A97>銝𧢲䲮嚗?|
##### <20><> <20>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88><E696B9>滨蔭嚗<E894AD><E59A97><EFBFBD>格郊撉歹<E69289>
**⚠️ 如果出现 `insufficient_scope: authorization failed` 错误,必须配置此项**
**<2A>𩤃<EFBFBD><><E68692><EFBFBD>箇緵 `insufficient_scope: authorization failed` <20>躰秤嚗<E7A7A4><E59A97>憿駁<E686BF>蝵格迨憿?*
找到 **"镜像仓库认证"** 或 **"私有镜像仓库"** 配置项:
<EFBFBD><EFBFBD> **"<22>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88>"** <20>?**"蝘<><E89D98><EFBFBD>𨅯<EFBFBD>隞枏<E99A9E>"** <20>滨蔭憿對<E686BF>
| 配置项 | 值 | 说明 |
| <EFBFBD>滨蔭憿?| <20>?| 霂湔<E99C82> |
|--------|---|------|
| **镜像仓库地址** | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com` | 只填写Registry域名,不包含命名空间/仓库名 |
| **用户名** | `gofeng117@163.com` | ACR登录用户名 |
| **<EFBFBD>𨅯<EFBFBD>隞枏<EFBFBD><EFBFBD><EFBFBD>** | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com` | <EFBFBD><EFBFBD>egistry<EFBFBD><EFBFBD>嚗䔶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝛粹𡢿/隞枏<E99A9E><E69E8F>?|
| **<EFBFBD><EFBFBD><EFBFBD>?* | `gofeng117@163.com` | ACR<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?|
| **撖<><E69296>** | `fengzhibo117` | ACR<43><EFBFBD><EFBFBD><E69296> |
💡 **说明**
- 这些凭证用于SAE拉取私有镜像
- 密码会被SAE加密存储不会泄露
- 凭证来源:[部署进度总览 - 2.1 ACR容器镜像仓库](./00-部署进度总览.md#21-acr容器镜像仓库)
<EFBFBD>働 **霂湔<E99C82>**嚗?- 餈嗘<E9A488><E59798><EFBFBD><E5899B><EFBFBD>SAE<41><EFBFBD><EFBFBD><E89D98><EFBFBD>𨅯<EFBFBD>
- 撖<><E69296>隡朞◤SAE<41><EFBFBD>摮睃<E691AE>嚗䔶<E59A97>隡𡁏<E99AA1><F0A1818F>?- <20><EFBFBD><E5899B><EFBFBD>嚗靀<E59A97>函蔡餈𥕦漲<F0A595A6><EFBFBD> - 2.1 ACR摰孵膥<E5ADB5>𨅯<EFBFBD>隞枏<E99A9E>](./00-<2D>函蔡餈𥕦漲<F0A595A6><EFBFBD>.md#21-acr摰孵膥<E5ADB5>𨅯<EFBFBD>隞枏<E99A9E>)
##### 摨𠉛鍂摰硺<E691B0><E7A1BA>滨蔭
| 配置项 | 值 | 说明 |
| <EFBFBD>滨蔭憿?| <20>?| 霂湔<E99C82> |
|--------|---|------|
| **CPU** | 1| `1000 millicores` |
| **CPU** | 1<EFBFBD>?| `1000 millicores` |
| **<2A><><EFBFBD>** | 2GB | `2048 MB` |
| **实例数** | 1 | ⚠️ 必须至少1个实例0个实例=服务停止 |
| **摰硺<EFBFBD><EFBFBD>?* | 1 | <20>𩤃<EFBFBD><><EFBFBD><EFBFBD>1銝芸<E98A9D>靘页<E99D98>0銝芸<E98A9D>靘?<3F>滚𦛚<E6BB9A>𨀣迫 |
##### 摨𠉛鍂霈輸䔮霈曄蔭
| 配置项 | 值 | 说明 |
| <EFBFBD>滨蔭憿?| <20>?| 霂湔<E99C82> |
|--------|---|------|
| **摰孵膥蝡臬藁** | `8000` | Python FastAPI<50>滚𦛚蝡臬藁 |
| **<2A>讛悅蝐餃<E89D90>** | HTTP | |
| **是否开启公网访问** | **** | 仅内网访问被Node.js后端调用 |
| **<EFBFBD>臬炏撘<EFBFBD><EFBFBD><EFBFBD>蝵𤏸挪<EFBFBD>?* | **<EFBFBD>?* | 隞<><E99A9E>蝵𤏸挪<F0A48FB8><EFBFBD>鋡俏ode.js<6A>𡒊垢靚<E59EA2> |
点击 **下一步**
<EFBFBD>孵稬 **銝衤<E98A9D>甇?*
---
@@ -144,9 +135,8 @@ OSS_ENDPOINToss-cn-beijing-internal.aliyuncs.com
##### <20><EFBFBD><E887AC><EFBFBD>
点击 **添加环境变量**,逐个添加以下配置:
| 变量名 | 变量值 | 说明 |
<EFBFBD>孵稬 **瘛餃<E7989B><E9A483><EFBFBD><E887AC><EFBFBD>**嚗屸<E59A97>𣂷葵瘛餃<E7989B>隞乩<E99A9E><E4B9A9>滨蔭嚗?
| <20><EFBFBD><E3979B>?| <20><EFBFBD><E3979B>?| 霂湔<E99C82> |
|--------|--------|------|
| `LOG_LEVEL` | `INFO` | <20><EFBFBD>蝥批<E89DA5> |
| `TEMP_DIR` | `/tmp/extraction_service` | 銝湔𧒄<E6B994><F0A79284><EFBFBD><EFBFBD> |
@@ -158,86 +148,72 @@ OSS_ENDPOINToss-cn-beijing-internal.aliyuncs.com
| `OSS_BUCKET` | `ai-clinical-research` | OSS Bucket<65>滨妍 |
| `OSS_ENDPOINT` | `oss-cn-beijing-internal.aliyuncs.com` | OSS<53><53><EFBFBD>Endpoint |
⚠️ **注意**
- 环境变量中的 `OSS_ACCESS_KEY_SECRET` 是敏感信息SAE会自动加密
- 所有环境变量都可以在应用部署后修改
<EFBFBD>𩤃<EFBFBD> **瘜冽<E7989C>**嚗?- <20><EFBFBD><E887AC><EFBFBD>銝剔<E98A9D> `OSS_ACCESS_KEY_SECRET` <20><EFBFBD><E88880>煺縑<E785BA><EFBFBD>SAE隡朞䌊<E69C9E><EFBFBD>撖?- <20><><EFBFBD>厩㴓憓<E3B493><E68693><EFBFBD><EFBFBD><E8AAAF>臭誑<E887AD><EFBFBD><E585B8><EFBFBD>蝵脣<E89DB5>靽格㺿
##### 健康检查
| 配置项 | 值 | 说明 |
##### <EFBFBD>亙熒璉<EFBFBD><EFBFBD>?
| <20>滨蔭憿?| <20>?| 霂湔<E99C82> |
|--------|---|------|
| **健康检查方式** | HTTP | |
| **健康检查路径** | `/api/health` | FastAPI健康检查端点 |
| **健康检查端口** | `8000` | |
| **初始延迟时间** | `40` 秒 | 给镜像拉取和服务启动留时间 |
| **检查间隔** | `30`| |
| **检查超时** | `10`| |
| **健康阈值** | `2` 次 | 连续2次成功视为健康 |
| **不健康阈值** | `3` 次 | 连续3次失败视为不健康 |
| **<EFBFBD>亙熒璉<EFBFBD><EFBFBD>交䲮撘?* | HTTP | |
| **<EFBFBD>亙熒璉<EFBFBD><EFBFBD>亥楝敺?* | `/api/health` | FastAPI<EFBFBD>亙熒璉<EFBFBD><EFBFBD>亦垢<EFBFBD>?|
| **<EFBFBD>亙熒璉<EFBFBD><EFBFBD>亦垢<EFBFBD>?* | `8000` | |
| **<EFBFBD><EFBFBD>撱嗉<EFBFBD><EFBFBD>園𡢿** | `40` 蝘?| 蝏䠷<E89D8F><E4A0B7>𤩺<EFBFBD><F0A4A9BA><EFBFBD><E7A18B>滚𦛚<E6BB9A>臬𢆡<E887AC>蹱𧒄<E8B9B1>?|
| **<EFBFBD><EFBFBD>仿𡢿<EFBFBD>?* | `30` 蝘?| |
| **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?* | `10` 蝘?| |
| **<EFBFBD>亙熒<EFBFBD><EFBFBD><EFBFBD>?* | `2` 甈?| 餈䂿賒2甈⊥<E79488><E28AA5><EFBFBD>銝箏<E98A9D>摨?|
| **銝滚<EFBFBD>摨琿<EFBFBD><EFBFBD>?* | `3` 甈?| 餈䂿賒3甈仃韐亥<E99F90>銝箔<E98A9D><E7AE94>亙熒 |
点击 **下一步**
<EFBFBD>孵稬 **銝衤<E98A9D>甇?*
---
#### 2.4 蝵𤑳<E89DB5><F0A491B3>滨蔭
| 配置项 | 值 | 说明 |
| <EFBFBD>滨蔭憿?| <20>?| 霂湔<E99C82> |
|--------|---|------|
| **銝𤘪<E98A9D>蝵𤑳<E89DB5>VPC** | `vpc-2ze055cptkew9c38w4r06` | ai-clinical-vpc |
| **<2A>𡁏<EFBFBD>鈭斗揢<E69697>漓Switch** | `vsw-2zevacop039bxrmj6yc0c` | <20>舐鍂<E88890>慚 |
| **安全组** | `sg-2zedk6fi8sgmmcwdu7tu` | |
| **SLB公网访问** | **不配置** | 仅内网访问 |
| **摰匧<EFBFBD>蝏?* | `sg-2zedk6fi8sgmmcwdu7tu` | |
| **SLB<EFBFBD><EFBFBD>霈輸䔮** | **銝漤<EFBFBD>蝵?* | 隞<><E99A9E>蝵𤏸挪<F0A48FB8>?|
点击 **下一步**
<EFBFBD>孵稬 **銝衤<E98A9D>甇?*
---
#### 2.5 应用生命周期配置(可选,使用默认即可)
| 配置项 | 默认值 | 说明 |
#### 2.5 摨𠉛鍂<EFBFBD>笔𦶢<EFBFBD><EFBFBD><EFBFBD>滨蔭嚗<EFBFBD><EFBFBD><EFBFBD>雿輻鍂暺䁅恕<EFBFBD>喳虾嚗?
| <20>滨蔭憿?| 暺䁅恕<E48185>?| 霂湔<E99C82> |
|--------|--------|------|
| **启动超时时间** | 300秒 | 镜像较大,需要较长启动时间 |
| **优雅停机超时** | 30秒 | 给应用处理完当前请求的时间 |
| **<EFBFBD>臬𢆡頞<EFBFBD>𧒄<EFBFBD>園𡢿** | 300蝘?| <20>𨅯<EFBFBD><EFBFBD>之嚗屸<E59A97><EFBFBD><E996AC><EFBFBD>踹鍳<E8B8B9>冽𧒄<E586BD>?|
| **隡㗛<EFBFBD><EFBFBD>𨀣㦤頞<EFBFBD>𧒄** | 30蝘?| 蝏坔<E89D8F><E59D94><EFBFBD><E585B8><EFBFBD><EFBFBD>敶枏<E695B6>霂瑟<E99C82><E7919F><EFBFBD>𧒄<EFBFBD>?|
点击 **下一步**
<EFBFBD>孵稬 **銝衤<E98A9D>甇?*
---
#### 2.6 蝖株恕<E6A0AA>滨蔭
1. 隞𠉛<E99A9E><EFBFBD><E79289><EFBFBD><E4BAA4><EFBFBD>蝵桅★<E6A185>臬炏甇<E7828F>
2. 特别确认:
- ✅ 镜像地址使用VPC内网地址
- ✅ 实例数 = 1不是0
- ✅ OSS环境变量已配置
- ✅ 健康检查路径为 `/api/health`
2. <20><EFBFBD>蝖株恕嚗? - <20>?<3F>𨅯<EFBFBD><F0A885AF><EFBFBD>雿輻鍂VPC<50><43><EFBFBD><EFBFBD><EFBFBD>
- <20>?摰硺<E691B0><E7A1BA>?= 1嚗<31><E59A97><EFBFBD>?嚗? - <20>?OSS<53><EFBFBD><E887AC><EFBFBD>撌脤<E6928C>蝵? - <20>?<3F>亙熒璉<E78692><E79289>亥楝敺<E6A59D>蛹 `/api/health`
3. <20>孵稬 **<2A>𥕦遣摨𠉛鍂**
---
### 步骤 3等待部署完成
部署过程大约需要 **3-5分钟**SAE会自动执行以下步骤
### 甇仿炊 3嚗𡁶<E59A97><EFBFBD><E695BA>蝵脣<E89DB5><E884A3>?
<EFBFBD>函蔡餈<EFBFBD><EFBFBD>憭抒漲<EFBFBD><EFBFBD>閬?**3-5<><35><EFBFBD>**嚗玺AE隡朞䌊<E69C9E><EFBFBD>銵䔶誑銝𧢲郊撉歹<E69289>
```
1. 拉取Docker镜像约2-3分钟镜像1.12GB
└─ 使用VPC内网速度较快
1. <20><EFBFBD>Docker<65>𨅯<EFBFBD><EFBFBD>漲2-3<><33><EFBFBD>嚗屸<E59A97><E5B1B8>?.12GB嚗? <20><EFBFBD> 雿輻鍂VPC<50><43><EFBFBD>嚗屸<E59A97>笔漲颲<E6BCB2>
2. <20>臬𢆡摰孵膥嚗<E886A5>漲30蝘𡜐<E89D98>
<20><EFBFBD> <20><EFBFBD>Dockerfile銝剔<E98A9D>CMD<4D>賭誘
3. 健康检查约1-2分钟
└─ 等待40秒后开始检查 /api/health
4. 应用运行中(部署成功)
└─ 实例状态变为"运行中"
3. <20>亙熒璉<E78692><E79289><EFBFBD>蝥?-2<><32><EFBFBD>嚗? <20><EFBFBD> 蝑匧<E89D91>40蝘鍦<E89D98><EFBFBD>憪𧢲<E686AA><F0A7A2B2>?/api/health
4. 摨𠉛鍂餈鞱<E9A488>銝哨<E98A9D><E593A8>函蔡<E587BD>𣂼<EFBFBD>嚗? <20><EFBFBD> 摰硺<E691B0><E7A1BA><EFBFBD><E59786><EFBFBD>銝?餈鞱<E9A488>銝?
```
**实时监控部署进度**
- SAE控制台 → 应用详情 → 变更记录 → 查看详情
**摰墧𧒄<EFBFBD>烐綉<EFBFBD>函蔡餈𥕦漲**嚗?- SAE<41><EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>䀹凒霈啣<E99C88> <20>?<3F><EFBFBD>霂行<E99C82>
**查看部署日志**
- SAE控制台 → 应用详情 → 日志查询 → 实时日志
**<EFBFBD><EFBFBD><EFBFBD>函蔡<EFBFBD><EFBFBD>**嚗?- SAE<41><EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F><EFBFBD><E4BA99>亥砭 <20>?摰墧𧒄<E5A2A7><EFBFBD>
**预期日志内容**
```log
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>捆**嚗?```log
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
@@ -246,73 +222,58 @@ INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
---
## 部署后验证
## <EFBFBD>函蔡<EFBFBD>𡡞<EFBFBD>霂?
### 甇仿炊 1嚗朞繮<E69C9E><EFBFBD>蝵𤏸挪<F0A48FB8>桀𧑐<E6A180><F0A79190>
**<EFBFBD>𩤃<EFBFBD> <20>喲睸甇仿炊嚗𡁜<E59A97>憿颱<E686BF>SAE<41><EFBFBD><E689B9>啗繮<E59597>𣇉<EFBFBD>摰𧼮<E691B0>蝵飡P**
#### 获取方法:
1. SAE控制台 → 应用列表 → 点击 `python-extraction-test`
2. 进入应用详情页
3. 找到 **实例列表****基本信息**
#### <EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?
1. SAE<41><EFBFBD><E689B9>?<3F>?摨𠉛鍂<F0A0899B>𡑒” <20>?<3F>孵稬 `python-extraction-test`
2. 餈𥕦<EFBFBD>摨𠉛鍂霂行<EFBFBD>憿?3. <20><EFBFBD> **摰硺<E691B0><E7A1BA>𡑒”** <20>?**<2A>箸𧋦靽⊥<E99DBD>**
4. <20><EFBFBD> **<EFBFBD><EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD>**
**预期格式**
```
内网IP172.17.x.x
端口8000
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗?```
<EFBFBD><EFBFBD><EFBFBD>IP嚗?72.17.x.x
蝡臬藁嚗?000
摰峕㟲<EFBFBD><EFBFBD>嚗冴ttp://172.17.x.x:8000
```
**⚠️ 重要**
- ❌ 不要猜测域名(如 `extraction-service.internal`
- ❌ 不要使用 `localhost:8000`
- ✅ 必须使用SAE控制台显示的真实IP地址
**<2A>𩤃<EFBFBD> <20><EFBFBD>**嚗?- <20>?銝滩<E98A9D><E6BBA9>𨀣<EFBFBD><F0A880A3><EFBFBD><EFBFBD><E59A97> `extraction-service.internal`嚗?- <20>?銝滩<E98A9D>雿輻鍂 `localhost:8000`
- <20>?敹<>◆雿輻鍂SAE<41><EFBFBD><E689B9>唳遬蝷箇<E89DB7><E7AE87><EFBFBD>IP<49><EFBFBD>
**记录内网地址**
```
# ✅ 已获取内网地址2024-12-24
**霈啣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗?```
# <20>?撌脰繮<E884B0><EFBFBD>蝵穃𧑐<E7A983><F0A79190>嚗?024-12-24嚗㚁<E59A97>
PYTHON_SERVICE_INTERNAL_IP=172.17.173.66:8000
PYTHON_SERVICE_URL=http://172.17.173.66:8000
```
⚠️ **重要提醒**
- 此地址仅在VPC内网可访问
- Node.js后端需要配置此地址作为环境变量
- 如果实例重启IP地址可能会变化需重新获取
<EFBFBD>𩤃<EFBFBD> **<2A><EFBFBD><E6BBA9><EFBFBD>**嚗?- 甇文𧑐<E69687><F0A79190><EFBFBD>銁VPC<50><43><EFBFBD><EFBFBD>航挪<E888AA>?- Node.js<6A>𡒊垢<F0A1928A><E59EA2><EFBFBD><E996AC>蝵格迨<E6A0BC><EFBFBD>雿靝蛹<E99D9D><EFBFBD><E887AC><EFBFBD>
- 憒<><E68692>摰硺<E691B0><E7A1BA>滚鍳嚗䬠P<E4ACA0><EFBFBD><E595A3><EFBFBD>隡𡁜<E99AA1><F0A1819C><EFBFBD><E59094><EFBFBD><EFBFBD>齿鰵<E9BDBF><EFBFBD>嚗?
---
### 步骤 2健康检查测试
#### 方法 1从SAE控制台测试推荐
1. SAE控制台 → 应用详情 → 实例列表
2. 点击实例的 **Webshell** 按钮(如果支持)
### 甇仿炊 2嚗𡁜<E59A97>摨瑟<E691A8><E7919F><EFBFBD>霂?
#### <20><EFBFBD> 1嚗帋<E59A97>SAE<41><EFBFBD><E689B9><EFBFBD>霂𤏪<E99C82><F0A48FAA><EFBFBD>嚗?
1. SAE<41><EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?摰硺<E691B0><E7A1BA>𡑒”
2. <20>孵稬摰硺<E691B0><E7A1BA>?**Webshell** <20>厰僼嚗<E583BC><E59A97><EFBFBD>𨀣𣈲<F0A880A3><F0A388B2><EFBFBD>
3. <20><EFBFBD><E689AF>賭誘嚗<E8AA98><EFBFBD>沌ython瘚贝<E7989A><EFBFBD><E59A97>銝箏捆<E7AE8F>其葉瘝⊥<E7989D>curl嚗㚁<E59A97>
```bash
python -c "import urllib.request; print(urllib.request.urlopen('http://localhost:8000/api/health').read().decode())"
```
⚠️ **注意**:如果遇到 `curl: command not found`说明容器中没有安装curl工具精简镜像请使用上面的Python命令。
<EFBFBD>𩤃<EFBFBD> **瘜冽<E7989C>**嚗𡁜<E59A97><F0A1819C>𣈯<EFBFBD><F0A388AF>?`curl: command not found`嚗諹秩<EFBFBD>𤾸捆<EFBFBD>其葉瘝⊥<EFBFBD>摰㕑<EFBFBD>curl撌亙<EFBFBD><EFBFBD>移蝞<EFBFBD><EFBFBD>𨅯<EFBFBD>嚗㚁<EFBFBD>霂瑚蝙<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Python<EFBFBD>賭誘<EFBFBD>?
#### <20><EFBFBD> 2嚗帋<E59A97><E5B88B>砍𧑐瘚贝<E7989A><EFBFBD><E59A97><EFBFBD><EFBFBD><EFBFBD>蝵殷<E89DB5>
⚠️ **注意**由于Python服务仅在VPC内网本地无法直接访问需要以下任一方法
<EFBFBD>𩤃<EFBFBD> **瘜冽<E7989C>**嚗𡁶眏鈭窰ython<6F>滚𦛚隞<F0A69B9A>銁VPC<50><43><EFBFBD>嚗峕𧋦<E5B395><EFBFBD>瘜閧凒<E996A7>亥挪<E4BAA5><EFBFBD><E6AEB7><EFBFBD><EFBFBD>誑銝衤遙銝<E98199><E98A9D><EFBFBD>嚗?
**<2A>厰★A嚗𡁻<E59A97><EFBFBD>Node.js<6A>𡒊垢頧砍<E9A0A7><EFBFBD><EFBFBD><EFBFBD>**
- 敺<>ode.js<6A>𡒊垢<F0A1928A>函蔡<E587BD>𠬍<EFBFBD><F0A0AC8D><EFBFBD><E69C9E>𡒊垢<F0A1928A>湔𦻖瘚贝<E7989A>
**选项B临时配置公网SLB测试完成后删除**
1. SAE控制台 → 应用详情 → 应用访问设置
**<EFBFBD>厰★B嚗帋葩<EFBFBD><EFBFBD>蝵桀<EFBFBD>蝵騌LB嚗<EFBFBD><EFBFBD>霂訫<EFBFBD><EFBFBD>𣂼<EFBFBD><EFBFBD>𣳇膄嚗?*
1. SAE<EFBFBD><EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?摨𠉛鍂霈輸䔮霈曄蔭
2. <20>孵稬 **蝏穃<E89D8F>SLB**
3. <20>𥕦遣<F0A595A6><EFBFBD>㗇𥋘<E39787><EFBFBD>SLB
4. 瘚贝<E7989A>摰峕<E691B0><E5B395>𡒊<EFBFBD><F0A1928A><EFBFBD><E596B3>又LB
**预期响应**
```json
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗?```json
{
"status": "healthy",
"checks": {
@@ -322,7 +283,7 @@ PYTHON_SERVICE_URL=http://172.17.173.66:8000
},
"nougat": {
"available": false,
"error": "Nougat未安装(已移除以减小镜像)"
"error": "Nougat<EFBFBD><EFBFBD><EFBFBD><EFBFBD>撌脩宏<EFBFBD>支誑<EFBFBD><EFBFBD><EFBFBD>𨅯<EFBFBD>嚗?
},
"temp_dir": {
"path": "/tmp/extraction_service",
@@ -335,40 +296,34 @@ PYTHON_SERVICE_URL=http://172.17.173.66:8000
---
### 步骤 3查看应用日志
1. SAE控制台 → 应用详情 → 日志查询
### 甇仿炊 3嚗𡁏䰻<F0A1818F><EFBFBD><E8A781>冽𠯫敹?
1. SAE<41><EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F><EFBFBD><E4BA99>亥砭
2. <20>㗇𥋘 **摰墧𧒄<E5A2A7><EFBFBD>**
3. 蝖株恕<E6A0AA><EFBFBD>銝剖<E98A9D><E58996><EFBFBD>
```log
✅ 正常启动标志:
INFO: Started server process [1]
<EFBFBD>?甇<><EFBFBD>臬𢆡<E887AC><F0A286A1><EFBFBD>嚗?INFO: Started server process [1]
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000
✅ 健康检查日志每30秒一次
INFO: 172.17.x.x:xxxx - "GET /api/health HTTP/1.1" 200 OK
<EFBFBD>?<3F>亙熒璉<E78692><E79289>交𠯫敹梹<E695B9>瘥?0蝘雴<E89D98>甈∴<E79488>嚗?INFO: 172.17.x.x:xxxx - "GET /api/health HTTP/1.1" 200 OK
❌ 如果出现错误:
ERROR: ImportError: libXXX.so: cannot open shared object file
→ 说明系统依赖缺失检查Dockerfile
<EFBFBD>?憒<><E68692><EFBFBD>箇緵<E7AE87>躰秤嚗?ERROR: ImportError: libXXX.so: cannot open shared object file
<20>?霂湔<E99C82>蝟餌<E89D9F>靘肽<E99D98>蝻箏仃嚗峕<E59A97><E5B395>主ockerfile
```
---
### 步骤 4监控应用状态
### 甇仿炊 4嚗𡁶<E59A97><F0A181B6><EFBFBD><E689B9>函𠶖<E587BD>?
SAE<EFBFBD><EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>箸𧋦靽⊥<E99DBD>
SAE控制台 → 应用详情 → 基本信息
**关键指标**
| 指标 | 正常值 | 说明 |
**<2A>喲睸<E596B2><E79DB8><EFBFBD>**嚗?| <20><><EFBFBD> | 甇<><EFBFBD>?| 霂湔<E99C82> |
|------|--------|------|
| **应用状态** | 运行中 | 绿色 |
| **实例数** | 1/1 | 1个实例运行中 |
| **健康实例数** | 1 | 健康检查通过 |
| **CPU使用率** | < 20% | 空闲状态 |
| **内存使用率** | < 50% | 约1GBPython基础+依赖) |
| **摨𠉛鍂<EFBFBD><EFBFBD>?* | 餈鞱<E9A488>銝?| 蝏輯𠧧 |
| **摰硺<EFBFBD><EFBFBD>?* | 1/1 | 1銝芸<EFBFBD>靘贝<EFBFBD>銵䔶葉 |
| **<EFBFBD>亙熒摰硺<EFBFBD><EFBFBD>?* | 1 | <20>亙熒璉<E78692><E79289>仿<EFBFBD><EFBFBD> |
| **CPU雿輻鍂<EFBFBD>?* | < 20% | 蝛粹𤦭<EFBFBD><EFBFBD>?|
| **<EFBFBD><EFBFBD><EFBFBD>雿輻鍂<EFBFBD>?* | < 50% | 蝥?GB嚗㇊ython<6F><EFBFBD>+靘肽<E99D98>嚗?|
---
@@ -376,22 +331,18 @@ SAE控制台 → 应用详情 → 基本信息
### 甇仿炊 1嚗𡁏凒<F0A1818F>衹ode.js<6A>𡒊垢<F0A1928A><EFBFBD><E887AC><EFBFBD>
在Node.js后端的SAE应用中添加以下环境变量
<EFBFBD>ode.js<EFBFBD>𡒊垢<EFBFBD><EFBFBD>AE摨𠉛鍂銝哨<EFBFBD>瘛餃<EFBFBD>隞乩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?
```bash
# Python敺格<E695BA><E6A0BC><EFBFBD>蝵穃𧑐<E7A983><F0A79190>
EXTRACTION_SERVICE_URL=http://172.17.x.x:8000
# 注意:
# 1. 替换为实际获取的内网IP
# 2. 不要加尾部斜杠 /
# 瘜冽<EFBFBD>嚗?# 1. <20>踵揢銝箏<E98A9D><E7AE8F><EFBFBD><EFBFBD>𣇉<EFBFBD><F0A38789><EFBFBD><EFBFBD>IP
# 2. 銝滩<EFBFBD><EFBFBD>惩偏<EFBFBD><EFBFBD><EFBFBD>?/
```
**配置位置**
- SAE控制台 → Node.js后端应用 → 应用配置 → 环境变量 → 添加
**<EFBFBD>滨蔭雿滨蔭**嚗?- SAE<41><EFBFBD><E689B9>?<3F>?Node.js<6A>𡒊垢摨𠉛鍂 <20>?摨𠉛鍂<F0A0899B>滨蔭 <20>?<3F><EFBFBD><E887AC><EFBFBD> <20>?瘛餃<E7989B>
**配置后操作**
- 重启Node.js后端应用SAE会自动重启
**<EFBFBD>滨蔭<EFBFBD><EFBFBD>雿?*嚗?- <20>滚鍳Node.js<6A>𡒊垢摨𠉛鍂嚗𠄎AE隡朞䌊<E69C9E><EFBFBD><E588B8><EFBFBD>
---
@@ -411,8 +362,7 @@ router.get('/test-python-service', async (req, res) => {
try {
const extractionServiceUrl = process.env.EXTRACTION_SERVICE_URL || 'http://localhost:8000';
// 1. 测试健康检查
const healthRes = await axios.get(`${extractionServiceUrl}/api/health`);
// 1. 瘚贝<EFBFBD><EFBFBD>亙熒璉<EFBFBD><EFBFBD>? const healthRes = await axios.get(`${extractionServiceUrl}/api/health`);
res.json({
success: true,
@@ -431,13 +381,11 @@ router.get('/test-python-service', async (req, res) => {
export default router;
```
**测试方法**
```bash
**瘚贝<EFBFBD><EFBFBD><EFBFBD>**嚗?```bash
# 隞𤾸<E99A9E>蝡舀<E89DA1>Postman霈輸䔮
GET https://your-backend-domain.com/api/test-python-service
# 预期响应:
{
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?{
"success": true,
"message": "Python service is healthy",
"data": { "status": "healthy", ... }
@@ -448,58 +396,45 @@ GET https://your-backend-domain.com/api/test-python-service
### 甇仿炊 3嚗𡁶垢<F0A181B6>啁垢<E59581><EFBFBD>瘚贝<E7989A>
测试完整业务流程:
瘚贝<EFBFBD>摰峕㟲銝𡁜𦛚瘚<EFBFBD><EFBFBD>嚗?
#### 瘚贝<E7989A><E8B49D>箸艶 1嚗䥪DF<44><46>𧋦<EFBFBD>𣂼<EFBFBD>
**流程**
```
**<EFBFBD><EFBFBD>**嚗?```
<EFBFBD>滨垢銝𠹺<EFBFBD>PDF
Node.js后端接收
HTTP POST 转发到 Python服务 (EXTRACTION_SERVICE_URL)
Python服务提取文本
→ 返回JSON结果
→ 后端处理并返回前端
```
<EFBFBD>?Node.js<EFBFBD>𡒊垢<EFBFBD>交𤣰
<EFBFBD>?HTTP POST 頧砍<EFBFBD><EFBFBD>?Python<EFBFBD>滚𦛚 (EXTRACTION_SERVICE_URL)
<EFBFBD>?Python<EFBFBD>滚𦛚<EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD>𧋦
<EFBFBD>?餈𥪜<E9A488>JSON蝏𤘪<EFBFBD>
<EFBFBD>?<3F>𡒊垢憭<E59EA2><E686AD>撟嗉<E6929F><E59789>𧼮<EFBFBD>蝡?```
**测试步骤**
1. 在前端上传一个小的PDF文件< 5MB
2. 查看Node.js后端日志
```log
**瘚贝<EFBFBD>甇仿炊**嚗?1. <20><EFBFBD>蝡臭<E89DA1>隡牐<E99AA1>銝芸<E98A9D><E88AB8><EFBFBD>DF<44><46>辣嚗? 5MB嚗?2. <20><EFBFBD>Node.js<6A>𡒊垢<F0A1928A><EFBFBD>嚗? ```log
INFO: Calling Python service: http://172.17.x.x:8000/api/extract/pdf
INFO: Python service responded in 2.3s
```
3. 查看Python服务日志:
```log
3. <EFBFBD><EFBFBD>Python<EFBFBD>滚𦛚<EFBFBD><EFBFBD>嚗? ```log
INFO: Request: POST /api/extract/pdf
INFO: File size: 1.2MB, filename: test.pdf
INFO: Using PyMuPDF extraction
INFO: Response: 200 (took 2.10s)
```
#### 测试场景 2数据清洗DC工具
**流程**
```
#### 瘚贝<EFBFBD><EFBFBD>箸艶 2嚗𡁏㺭<F0A1818F><EFBFBD>瘣梹<E798A3>DC撌亙<E6928C>嚗?
**瘚<><E7989A>**嚗?```
<EFBFBD>滨垢銝𠹺<EFBFBD>Excel
→ 后端调用 Python服务 /api/operations/fillna
Python使用pandas/polars处理
→ 返回清洗后的数据
<EFBFBD>?<3F>𡒊垢靚<E59EA2> Python<EFBFBD>滚𦛚 /api/operations/fillna
<EFBFBD>?Python雿輻鍂pandas/polars<EFBFBD><EFBFBD>
<EFBFBD>?餈𥪜<E9A488><EFBFBD><E79A9C><EFBFBD>𡒊<EFBFBD><F0A1928A>唳旿
```
**测试步骤**
1. 在DC模块上传Excel文件
2. 执行数据清洗操作如fillna
3. 验证返回结果是否正确
**瘚贝<EFBFBD>甇仿炊**嚗?1. <20>求C璅<E79285>銝𠹺<E98A9D>Excel<65><6C>
2. <EFBFBD><EFBFBD><EFBFBD>唳旿皜<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>fillna嚗?3. 撉諹<E69289>餈𥪜<E9A488>蝏𤘪<E89D8F><F0A498AA>臬炏甇<E7828F>
---
## 撣貉<E692A3><E8B289><EFBFBD><E6A185>埝䰻
### 问题 1镜像拉取失败insufficient_scope: authorization failed
**症状**
```
### <EFBFBD><EFBFBD> 1嚗𡁻<E59A97><F0A181BB>𤩺<EFBFBD><F0A4A9BA>硋仃韐伐<E99F90>insufficient_scope: authorization failed嚗?
**<2A><>𠶖**嚗?```
Error: ImagePullBackOff
Failed to pull image: insufficient_scope: authorization failed
pull access denied, repository does not exist or may require authorization
@@ -507,84 +442,71 @@ pull access denied, repository does not exist or may require authorization
**<2A>寞𧋦<E5AF9E><EFBFBD>**嚗锭AE瘝⊥<E7989D><E28AA5><EFBFBD><EFBFBD>霈輸䔮ACR蝘<52><E89D98><EFBFBD>𨅯<EFBFBD>隞枏<E99A9E>
**解决步骤**
**<EFBFBD><EFBFBD>甇仿炊**嚗?
**<2A><EFBFBD>1嚗𡁻<E59A97>蝵桅<E89DB5><E6A185><EFBFBD>摨栞恕霂<E68195><E99C82><EFBFBD><EFBFBD>嚗?*
**方法1配置镜像仓库认证推荐**
1. SAE控制台 → 应用详情 → 点击"部署应用"或"编辑应用"
2. 在 **"镜像配置"** 部分,找到 **"镜像仓库认证"** 或 **"私有镜像仓库"**
3. 配置以下信息:
```
1. SAE<41><EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>孵稬"<22>函蔡摨𠉛鍂"<22>?蝻𤥁<E89DBB>摨𠉛鍂"
2. <20>?**"<22>𨅯<EFBFBD><F0A885AF>滨蔭"** <20><EFBFBD>嚗峕𪄳<E5B395>?**"<22>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88>"** <20>?**"蝘<><E89D98><EFBFBD>𨅯<EFBFBD>隞枏<E99A9E>"**
3. <EFBFBD>滨蔭隞乩<EFBFBD>靽⊥<EFBFBD>嚗? ```
<20>𨅯<EFBFBD>隞枏<E99A9E><E69E8F><EFBFBD>嚗䬙rpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com
<20><EFBFBD><E586BD><EFBFBD>gofeng117@163.com
<><E69296>嚗餎engzhibo117
```
4. 保存配置并重新部署
4. 靽嘥<EFBFBD><EFBFBD>滨蔭撟園<EFBFBD><EFBFBD><EFBFBD>蝵?
**<2A><EFBFBD>2嚗帋蝙<E5B88B>沖AM閫坿𠧧<E59DBF><F0A0A7A7><EFBFBD><EFBFBD><E59A97>鈭抒㴓憓<E3B493><EFBFBD><EFBFBD>**
1. RAM控制台 → 创建角色 → 选择"阿里云服务" → 受信服务选"SAE"
1. RAM<EFBFBD><EFBFBD><EFBFBD>?<3F>?<3F>𥕦遣閫坿𠧧 <20>?<3F>㗇𥋘"<22><EFBFBD>鈭烐<E988AD><E78390>? <20>?<3F>𦯀縑<F0A6AF80>滚𦛚<E6BB9A>?SAE"
2. 銝箄<E98A9D><E7AE84>脫溶<E884AB><EFBFBD><E4ADBE><EFBFBD>`AliyunContainerRegistryReadOnlyAccess`
3. SAE应用配置 → 高级设置 → 绑定RAM角色
3. SAE摨𠉛鍂<EFBFBD>滨蔭 <20>?擃条漣霈曄蔭 <20>?蝏穃<E89D8F>RAM閫坿𠧧
**方法3设置ACR仓库为公开仅测试环境**
**<EFBFBD><EFBFBD>3嚗朞挽蝵唧CR隞枏<EFBFBD>銝箏<EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD><EFBFBD><EFBFBD>嚗?*
⚠️ 不推荐生产环境使用(安全风险)
1. ACR控制台 → 个人实例 → 仓库列表
<EFBFBD>𩤃<EFBFBD> 銝齿綫<E9BDBF><EFBFBD>鈭抒㴓憓<E3B493><EFBFBD><EFBFBD>摰匧<E691B0>憌𡡞埯嚗?
1. ACR<43><EFBFBD><E689B9>?<3F>?銝芯犖摰硺<E691B0> <20>?隞枏<E99A9E><E69E8F>𡑒”
2. <20><EFBFBD> `ai-clinical/python-extraction`
3. 仓库设置 → 访问控制 → 改为"公开"
3. 隞枏<EFBFBD>霈曄蔭 <20>?霈輸䔮<E8BCB8><EFBFBD> <20>?<3F>嫣蛹"<22><EFBFBD>"
---
### 问题 2应用启动失败其他原因
**症状**
```
### <EFBFBD><EFBFBD> 2嚗𡁜<E59A97><F0A1819C>典鍳<E585B8>典仃韐伐<E99F90><E4BC90><EFBFBD><E597A1><EFBFBD>嚗?
**<2A><>𠶖**嚗?```
SAE<EFBFBD><EFBFBD><EFBFBD>唳遬蝷綽<EFBFBD>摨𠉛鍂<EFBFBD>臬𢆡憭梯揖
摰硺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```
**排查步骤**
**<EFBFBD>埝䰻甇仿炊**嚗?
**1. <20><EFBFBD><E4BAA6>函蔡<E587BD><EFBFBD>**
```
SAE控制台 → 应用详情 → 变更记录 → 查看详情
SAE<EFBFBD><EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>䀹凒霈啣<E99C88> <20>?<3F><EFBFBD>霂行<E99C82>
```
**2. 常见错误及解决方法**
**2. 撣貉<EFBFBD><EFBFBD>躰秤<EFBFBD>𡃏圾<EFBFBD>單䲮瘜?*嚗?
| <20>躰秤靽⊥<E99DBD> | <20><EFBFBD> | 閫<><E996AB><EFBFBD><EFBFBD> |
|---------|------|---------|
| `ImagePullBackOff` + `failed to resolve reference "...:latest"` | **<2A>𨅯<EFBFBD><F0A885AF><EFBFBD><E595A3><EFBFBD>摰𡁶<E691B0><F0A181B6>砍噡** | **<2A><EFBFBD><E588B8>誩𧑐<E8AAA9><F0A79190><EFBFBD>怠偏瘛餃<E7989B> `:v1.0`**<br>摰峕㟲<E5B395><EFBFBD>嚗䫤...python-extraction:v1.0` |
| `ImagePullBackOff` + `insufficient_scope: authorization failed` | **ACR访问权限不足(最常见)** | **配置镜像仓库认证**<br>1. SAE应用配置 → 镜像配置<br>2. 配置镜像仓库认证<br>3. 用户名:`gofeng117@163.com`<br>4. 密码:`fengzhibo117` |
| `ImagePullBackOff` + `insufficient_scope: authorization failed` | **ACR霈輸䔮<EFBFBD><EFBFBD><EFBFBD>銝滩雲嚗<EFBFBD><EFBFBD>撣貉<EFBFBD>嚗?* | **<EFBFBD>滨蔭<EFBFBD>𨅯<EFBFBD>隞枏<EFBFBD>霈方<EFBFBD>**<br>1. SAE摨𠉛鍂<F0A0899B>滨蔭 <20>?<3F>𨅯<EFBFBD><F0A885AF>滨蔭<br>2. <20>滨蔭<E6BBA8>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88><br>3. <20><EFBFBD><E586BD><EFBFBD>`gofeng117@163.com`<br>4. <EFBFBD><EFBFBD>嚗䫤fengzhibo117` |
| `ImagePullBackOff` + `pull access denied` | <20>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88>憭梯揖 | 璉<><E79289>亦鍂<E4BAA6><EFBFBD>/撖<><E69296><EFBFBD>臬炏甇<E7828F> |
| `ImagePullBackOff` | 镜像地址错误 | 确认使用VPC内网地址带-vpc后缀 |
| `ImagePullBackOff` | <EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>躰秤 | 蝖株恕雿輻鍂VPC<50><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蒂-vpc<70>𡒊<EFBFBD>嚗?|
| `ImportError: libXXX.so` | 蝟餌<E89D9F>靘肽<E99D98>蝻箏仃 | 璉<><E79289>主ockerfile嚗𣬚靽嘥<E99DBD><EFBFBD><E98B86><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銵峕𧒄靘肽<E99D98> |
| `OOMKilled` | 内存不足 | 增加内存配置2GB 4GB |
| `Health check failed` | 健康检查未通过 | 检查 `/api/health` 端点是否正常 |
| `OOMKilled` | <EFBFBD><EFBFBD><EFBFBD>銝滩雲 | 憓𧼮<E68693><F0A7BCAE><EFBFBD><EFBFBD><EFBFBD>滨蔭嚗?GB <EFBFBD>?4GB嚗?|
| `Health check failed` | <EFBFBD>亙熒璉<EFBFBD><EFBFBD>交𧊋<EFBFBD><EFBFBD> | 璉<><E79289>?`/api/health` 蝡舐<EFBFBD><EFBFBD>臬炏甇<EFBFBD> |
**3. <20><EFBFBD>摰孵膥<E5ADB5><EFBFBD>**
```
SAE控制台 → 应用详情 → 日志查询 → 实时日志
SAE<EFBFBD><EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F><EFBFBD><E4BA99>亥砭 <20>?摰墧𧒄<E5A2A7><EFBFBD>
```
---
### 问题 3健康检查失败
**症状**
```
实例列表显示:健康检查失败
实例反复重启
### <EFBFBD><EFBFBD> 3嚗𡁜<E59A97>摨瑟<E691A8><E7919F>亙仃韐?
**<2A><>𠶖**嚗?```
摰硺<EFBFBD><EFBFBD>𡑒”<EFBFBD>曄內嚗𡁜<EFBFBD>摨瑟<EFBFBD><EFBFBD>亙仃韐?摰硺<E691B0><E7A1BA><EFBFBD><E6BB9A>滚鍳
```
**排查步骤**
**<EFBFBD>埝䰻甇仿炊**嚗?
**1. 蝖株恕<E6A0AA>滚𦛚<E6BB9A>臬炏甇<E7828F><EFBFBD>臬𢆡**
```bash
# 查看日志中是否有:
INFO: Uvicorn running on http://0.0.0.0:8000
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝剜糓<EFBFBD><EFBFBD>嚗?INFO: Uvicorn running on http://0.0.0.0:8000
```
**2. 蝖株恕蝡臬藁<E887AC>臬炏甇<E7828F>**
@@ -593,53 +515,45 @@ INFO: Uvicorn running on http://0.0.0.0:8000
# 璉<><E79289><EFBFBD>摨瑟<E691A8><E7919F>亦垢<E4BAA6><E59EA2><EFBFBD>蝵殷<E89DB5>8000
```
**3. 手动测试健康检查端点**
**3. <EFBFBD>见𢆡瘚贝<EFBFBD><EFBFBD>亙熒璉<EFBFBD><EFBFBD>亦垢<EFBFBD>?*
```bash
# <20>沒AE Webshell銝剜<E98A9D>銵䕘<E98AB5>
curl http://localhost:8000/api/health
```
**4. 调整健康检查参数**
```
初始延迟时间40秒 → 60秒如果镜像拉取慢
检查超时10秒 → 20秒
**4. <EFBFBD><EFBFBD>亙熒璉<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*
```
<EFBFBD><EFBFBD>撱嗉<EFBFBD><EFBFBD>園𡢿嚗?0蝘?<3F>?60蝘𡜐<E89D98><EFBFBD><E68692><EFBFBD>𨅯<EFBFBD><F0A885AF><EFBFBD><E58CA7><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10蝘?<3F>?20蝘?```
---
### <20><EFBFBD> 4嚗鐭ode.js<6A>𡒊垢<F0A1928A><EFBFBD>餈墧𦻖Python<6F>滚𦛚
**症状**
```
**<EFBFBD><EFBFBD>𠶖**嚗?```
<EFBFBD>𡒊垢<EFBFBD><EFBFBD>嚗鋴onnection refused
ECONNREFUSED: connect ECONNREFUSED 172.17.x.x:8000
<EFBFBD>?ECONNREFUSED: connect ECONNREFUSED 172.17.x.x:8000
```
**排查步骤**
**<EFBFBD>埝䰻甇仿炊**嚗?
**1. 蝖株恕<E6A0AA><E68195><EFBFBD><EFBFBD><EFBFBD><E595A3>臬炏甇<E7828F>**
```bash
# ❌ 错误配置(猜测的域名)
EXTRACTION_SERVICE_URL=http://python-extraction.internal:8000
# <EFBFBD>?<3F>躰秤<E8BAB0>滨蔭嚗<E894AD><E59A97>瘚讠<E7989A><E8AEA0><EFBFBD>嚗?EXTRACTION_SERVICE_URL=http://python-extraction.internal:8000
# ✅ 正确配置SAE控制台显示的真实IP
EXTRACTION_SERVICE_URL=http://172.17.10.5:8000
# <EFBFBD>?甇<><EFBFBD>滨蔭嚗𠄎AE<41><EFBFBD><E689B9>唳遬蝷箇<E89DB7><E7AE87><EFBFBD>IP嚗?EXTRACTION_SERVICE_URL=http://172.17.10.5:8000
```
**2. 蝖株恕Python<6F>滚𦛚<E6BB9A>臬炏餈鞱<E9A488>**
```
SAE控制台 → Python应用 → 实例列表
状态:运行中 ✅
SAE<EFBFBD><EFBFBD><EFBFBD>?<3F>?Python摨𠉛鍂 <20>?摰硺<E691B0><E7A1BA>𡑒”
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>餈鞱<EFBFBD>銝?<3F>?```
**3. 蝖株恕摰匧<E691B0><EFBFBD><E89D8F><EFBFBD>?*
```
SAE<EFBFBD><EFBFBD><EFBFBD>?<3F>?Python摨𠉛鍂 <20>?蝵𤑳<E89DB5><F0A491B3>滨蔭 <20>?摰匧<E691B0>蝏?<3F><EFBFBD><EFBFBD><E996AB>嚗𡁜<E59A97>霈禽PC<50><43><EFBFBD>?8000蝡臬藁
```
**3. 确认安全组规则**
```
SAE控制台 → Python应用 → 网络配置 → 安全组
入站规则允许VPC内访问 8000端口
```
**4. 测试内网连通性**
**4. 瘚贝<EFBFBD><EFBFBD><EFBFBD><EFBFBD>餈鮋<EFBFBD>𡁏<EFBFBD>?*
```bash
# <20>沐ode.js<6A>𡒊垢摰孵膥銝剜<E98A9D>銵䕘<E98AB5><E49598><EFBFBD>SAE Webshell嚗㚁<E59A97>
curl http://172.17.x.x:8000/api/health
@@ -649,18 +563,14 @@ curl http://172.17.x.x:8000/api/health
### <20><EFBFBD> 5嚗䥪DF<44>𣂼<EFBFBD><EFBFBD>𧒄
**症状**
```
**<EFBFBD><EFBFBD>𠶖**嚗?```
<EFBFBD>𡒊垢<EFBFBD><EFBFBD>嚗鑹equest timeout after 300s
Python<EFBFBD><EFBFBD>嚗䥪rocessing large PDF...
```
**原因**
- 文件过大(> 50MB
- PDF包含大量图片
**解决方法**
**<EFBFBD><EFBFBD>**嚗?- <20><>辣餈<E8BEA3>之嚗? 50MB嚗?- PDF<44><46>鉄憭折<E686AD><E68A98><EFBFBD>
**閫<><E996AB><EFBFBD><EFBFBD>**嚗?
**1. 憓𧼮<E68693><EFBFBD>𧒄<EFBFBD>園𡢿**
```bash
# Node.js<6A>𡒊垢<F0A1928A><EFBFBD><E887AC><EFBFBD>
@@ -685,21 +595,18 @@ async def extract_pdf(file: UploadFile):
---
### 问题 6内存溢出OOM
**症状**
```
### <EFBFBD><EFBFBD> 6嚗𡁜<E59A97>摮䀹滯<E480B9><EFBFBD>OOM嚗?
**<2A><>𠶖**嚗?```
摰孵膥<EFBFBD>芸𢆡<EFBFBD>滚鍳
<EFBFBD><EFBFBD><EFBFBD>曄內嚗鐗illed (signal 9)
摰硺<EFBFBD><EFBFBD>烐綉嚗𡁜<EFBFBD>摮䀝蝙<EFBFBD><EFBFBD> > 95%
```
**解决方法**
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗?
**1. 憓𧼮<E68693><F0A7BCAE><EFBFBD><EFBFBD><EFBFBD>滨蔭**
```
SAE控制台 → 应用配置 → 规格
内存2GB 4GB
SAE<EFBFBD><EFBFBD><EFBFBD>?<3F>?摨𠉛鍂<F0A0899B>滨蔭 <20>?閫<>
<EFBFBD><EFBFBD><EFBFBD>嚗?GB <EFBFBD>?4GB
```
**2. 隡睃<E99AA1><EFBFBD><E99A9E><EFBFBD><E59A97>撘誩<E69298><E8AAA9><EFBFBD><EFBFBD>**
@@ -717,74 +624,61 @@ from fastapi import FastAPI
from starlette.middleware.base import BaseHTTPMiddleware
app = FastAPI()
# 限制并发连接数
app.add_middleware(ConnectionLimitMiddleware, max_connections=10)
# <EFBFBD>𣂼<EFBFBD>撟嗅<EFBFBD>餈墧𦻖<EFBFBD>?app.add_middleware(ConnectionLimitMiddleware, max_connections=10)
```
---
## <20><><EFBFBD>
### A. 快速命令参考
**查看应用信息**
```bash
### A. 敹恍<EFBFBD>笔𦶢隞文<EFBFBD><EFBFBD>?
**<2A><EFBFBD>摨𠉛鍂靽⊥<E99DBD>**嚗?```bash
# <20><EFBFBD>鈭飈LI
aliyun sae DescribeApplicationStatus --AppId <app-id>
```
**查看实例列表**
```bash
**<EFBFBD><EFBFBD>摰硺<EFBFBD><EFBFBD>𡑒”**嚗?```bash
# <20><EFBFBD>鈭飈LI
aliyun sae DescribeApplicationInstances --AppId <app-id>
```
**重启应用**
```
SAE控制台 → 应用详情 → 重启应用
**<EFBFBD>滚鍳摨𠉛鍂**嚗?```
SAE<EFBFBD><EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>滚鍳摨𠉛鍂
```
**查看实时日志**
```
SAE控制台 → 应用详情 → 日志查询 → 实时日志
**<EFBFBD><EFBFBD>摰墧𧒄<EFBFBD><EFBFBD>**嚗?```
SAE<EFBFBD><EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F><EFBFBD><E4BA99>亥砭 <20>?摰墧𧒄<E5A2A7><EFBFBD>
```
---
### B. <20><EFBFBD><E887AC><EFBFBD><E3979B>滨蔭皜<E894AD><E79A9C>
| 变量名 | 必需 | 默认值 | 说明 |
| <EFBFBD><EFBFBD><EFBFBD>?| 敹<><E695B9> | 暺䁅恕<E48185>?| 霂湔<E99C82> |
|--------|-----|--------|------|
| `LOG_LEVEL` | | `INFO` | 日志级别DEBUG/INFO/WARNING/ERROR |
| `TEMP_DIR` | | `/tmp/extraction_service` | 临时文件目录 |
| `TZ` | | `UTC` | 时区(建议 `Asia/Shanghai` |
| `SERVICE_NAME` | | - | 服务名称(用于日志标识) |
| `SERVICE_VERSION` | | - | 服务版本(用于日志标识) |
| `OSS_ACCESS_KEY_ID` | | - | OSS访问密钥ID |
| `OSS_ACCESS_KEY_SECRET` | | - | OSS访问密钥Secret |
| `OSS_BUCKET` | | - | OSS Bucket名称 |
| `OSS_ENDPOINT` | | - | OSS Endpoint(建议内网) |
| `LOG_LEVEL` | <EFBFBD>?| `INFO` | <EFBFBD><EFBFBD>蝥批<EFBFBD>嚗㇄EBUG/INFO/WARNING/ERROR嚗?|
| `TEMP_DIR` | <EFBFBD>?| `/tmp/extraction_service` | 銝湔𧒄<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |
| `TZ` | <EFBFBD>?| `UTC` | <EFBFBD>嗅躹嚗<EFBFBD>遣霈?`Asia/Shanghai`嚗?|
| `SERVICE_NAME` | <EFBFBD>?| - | <EFBFBD>滚𦛚<EFBFBD>滨妍嚗<EFBFBD>鍂鈭擧𠯫敹埈<EFBFBD><EFBFBD><EFBFBD> |
| `SERVICE_VERSION` | <EFBFBD>?| - | <EFBFBD>滚𦛚<EFBFBD><EFBFBD>𧋦嚗<EFBFBD>鍂鈭擧𠯫敹埈<EFBFBD><EFBFBD><EFBFBD> |
| `OSS_ACCESS_KEY_ID` | <EFBFBD>?| - | OSS霈輸䔮撖<EFBFBD>𤨎ID |
| `OSS_ACCESS_KEY_SECRET` | <EFBFBD>?| - | OSS霈輸䔮撖<EFBFBD>𤨎Secret |
| `OSS_BUCKET` | <EFBFBD>?| - | OSS Bucket<EFBFBD>滨妍 |
| `OSS_ENDPOINT` | <EFBFBD>?| - | OSS Endpoint<EFBFBD>遣霈桀<EFBFBD>蝵𡢅<EFBFBD> |
---
### C. 部署检查清单
**部署前**
- [ ] 确认Docker镜像已推送至ACR
### C. <EFBFBD>函蔡璉<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
**<2A>函蔡<E587BD>?*嚗?- [ ] 蝖株恕Docker<65>𨅯<EFBFBD>撌脫綫<E884AB><E7B6AB>秐ACR
- [ ] 蝖株恕VPC<50><43>Switch<63><68><EFBFBD><EFBFBD><EFBFBD>ID
- [ ] 蝖株恕OSS AccessKey<65><EFBFBD>
- [ ] 确认SAE命名空间已创建
**部署中**
- [ ] 镜像地址使用VPC内网地址
- [ ] 实例数 = 1不是0
- [ ] 容器端口 = 8000
- [ ] 健康检查路径 = `/api/health`
- [ ] 蝖株恕SAE<EFBFBD><EFBFBD>蝛粹𡢿撌脣<EFBFBD>撱?
**<2A>函蔡銝?*嚗?- [ ] <20>𨅯<EFBFBD><F0A885AF><EFBFBD>雿輻鍂VPC<50><43><EFBFBD><EFBFBD><EFBFBD>
- [ ] 摰硺<E691B0><E7A1BA>?= 1嚗<31><E59A97><EFBFBD>?嚗?- [ ] 摰孵膥蝡臬藁 = 8000
- [ ] <EFBFBD>亙熒璉<EFBFBD><EFBFBD>亥楝敺?= `/api/health`
- [ ] <20><EFBFBD><E887AC><EFBFBD><E3979B>滨蔭摰峕㟲
**部署后**
- [ ] 应用状态 = 运行中
- [ ] 健康检查通过
**<EFBFBD>函蔡<EFBFBD>?*嚗?- [ ] 摨𠉛鍂<F0A0899B><EFBFBD>?= 餈鞱<E9A488>銝?- [ ] <20>亙熒璉<E78692><E79289>仿<EFBFBD><EFBFBD>
- [ ] <20><EFBFBD><E4BA99>曄內<E69B84>滚𦛚甇<F0A69B9A><EFBFBD>臬𢆡
- [ ] 霈啣<E99C88><E595A3><EFBFBD><EFBFBD>IP<49><EFBFBD>
- [ ] <20>湔鰵Node.js<6A>𡒊垢<F0A1928A><EFBFBD><E887AC><EFBFBD>
@@ -793,52 +687,40 @@ SAE控制台 → 应用详情 → 日志查询 → 实时日志
### D. <20>鞉𧋦憸<F0A78BA6>
**测试环境轻量版SAE**
```
规格1核2GB × 1实例
费用:约 ¥60/月
```
**瘚贝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SAE嚗?*嚗?```
<EFBFBD>聢嚗?<3F>?GB <20> 1摰硺<E691B0>
韐寧鍂嚗𡁶漲 瞼60/<2F>?```
**优化建议**
- 测试阶段可以手动停止应用(停止后不计费)
- 夜间或周末停止应用节省成本
- 生产环境建议使用包年包月优惠
**隡睃<EFBFBD>撱箄悅**嚗?- 瘚贝<E7989A><E8B49D>嗆挾<E59786>臭誑<E887AD>见𢆡<E8A781>𨀣迫摨𠉛鍂嚗<E98D82><E59A97><E79487>銝滩恣韐對<E99F90>
- 憭𣈯𡢿<EFBFBD>硋𪂹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?- <20>煺漣<E785BA><EFBFBD>撱箄悅雿輻鍂<E8BCBB><E98D82><EFBFBD><E58391><EFBFBD>隡䀹<E99AA1>
---
### E. <20><EFBFBD><E8A9A8><EFBFBD>
- [部署进度总览](./00-部署进度总览.md) - 所有资源速查表
- [Python微服务-SAE容器部署指南](./04-Python微服务-SAE容器部署指南.md) - 技术架构详解
- [快速部署SOP](./01-快速部署SOP-零基础版.md) - 完整部署流程
- [<EFBFBD>函蔡餈𥕦漲<EFBFBD><EFBFBD>](./00-<2D>函蔡餈𥕦漲<F0A595A6><EFBFBD>.md) - <20><><EFBFBD><EFBFBD>皞鞾<E79A9E><E99EBE>䰻銵?- [Python敺格<E695BA><E6A0BC>?SAE摰孵膥<E5ADB5>函蔡<E587BD><E894A1><EFBFBD>](./04-Python敺格<E695BA><E6A0BC>?SAE摰孵膥<E5ADB5>函蔡<E587BD><E894A1><EFBFBD>.md) - <20><><EFBFBD>舀沲<E88880><E6B2B2>祕閫?- [敹恍<E695B9><EFBFBD>蝵淞OP](./01-敹恍<E695B9><EFBFBD>蝵淞OP-<2D>嗅抅蝖<E68A85><E89D96>?md) - 摰峕㟲<E5B395>函蔡瘚<E894A1><E7989A>
---
**文档维护**
- 创建时间2024-12-24
**<EFBFBD><EFBFBD>﹝蝏湔擪**嚗?- <20>𥕦遣<F0A595A6>園𡢿嚗?024-12-24
- <20><><EFBFBD>擧凒<E693A7><EFBFBD>2024-12-24
- 下次审查2025-01-24
- 銝𧢲活摰⊥䰻嚗?025-01-24
---
**部署完成后,请记录以下信息**
**<EFBFBD>函蔡摰峕<EFBFBD><EFBFBD>𠬍<EFBFBD>霂瑁扇敶蓥誑銝衤縑<EFBFBD>?*嚗?
```
部署时间2024-12-24 19:43
<EFBFBD>函蔡<EFBFBD>園𡢿嚗?024-12-24 19:43
<EFBFBD><EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD>嚗冴ttp://172.17.173.66:8000
首次健康检查通过时间2024-12-24 19:44
擐𡝗活<EFBFBD>亙熒璉<EFBFBD><EFBFBD>仿<EFBFBD><EFBFBD><EFBFBD>園𡢿嚗?024-12-24 19:44
SAE摨𠉛鍂<EFBFBD>滨妍嚗䮝ython-extraction-test
摨𠉛鍂蝐餃<EFBFBD>嚗朞蝠<EFBFBD><EFBFBD>摨𠉛鍂
规格配置1核2GB × 1实例
部署状态:✅ 成功
备注:
- 解决了ACR镜像拉取权限问题配置了镜像仓库认证
- 解决了镜像标签问题(指定了:v1.0版本)
- 应用正常运行2个uvicorn worker进程
<EFBFBD><EFBFBD>滨蔭嚗?<3F>?GB <EFBFBD> 1摰硺<EFBFBD>
<EFBFBD>函蔡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>𣂼<EFBFBD>
<EFBFBD>釣嚗?- 閫<><E996AB><EFBFBD>CR<43>𨅯<EFBFBD><F0A885AF><EFBFBD><E58CA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59A97>蝵桐<E89DB5><E6A190>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88>嚗?- 閫<><E996AB><EFBFBD><E988AD><EFBFBD>𤩺<EFBFBD>蝑暸䔮憸矋<E686B8><E79F8B><EFBFBD><EFBFBD>鈭?v1.0<EFBFBD><EFBFBD>𧋦嚗?- 摨𠉛鍂甇<E98D82>虜餈鞱<E9A488>嚗?銝沿vicorn worker餈𤤿<E9A488>
- OpenBLAS霅血<E99C85><E8A180>臬蕭<E887AC><EFBFBD>銝滚蔣<E6BB9A><EFBFBD><E6BB9A><EFBFBD>
```
---
> **提示**:部署完成后,请及时更新 [部署进度总览.md](./00-部署进度总览.md) 中的内网地址!
> **<EFBFBD>鞟內**嚗𡁻<E59A97>蝵脣<E89DB5><E884A3>𣂼<EFBFBD>嚗諹窈<E8ABB9>𦠜𧒄<F0A6A09C>湔鰵 [<5B>函蔡餈𥕦漲<F0A595A6><EFBFBD>.md](./00-<2D>函蔡餈𥕦漲<F0A595A6><EFBFBD>.md) 銝剔<E98A9D><E58994><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?