Files
AIclinicalresearch/docs/05-部署文档/19-日常更新快速操作手册.md
HaHafeng 1b53ab9d52 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%)
2026-01-14 19:15:01 +08:00

698 lines
15 KiB
Markdown
Raw 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.
# AI銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱 - <20>亙虜<E4BA99>湔鰵敹恍<E695B9><E6818D><EFBFBD>雿𨀣<E99BBF><F0A880A3>?
> **<2A><><EFBFBD><EFBFBD>?*嚗𡁏𠯫撣詨<E692A3><E8A9A8>賣凒<E8B3A3><EFBFBD>敹恍<E695B9><E6818D><EFBFBD>雿𨀣<E99BBF><F0A880A3>?
> **<2A><EFBFBD><E6A0BC><EFBFBD>**嚗𡁜<E59A97><F0A1819C>穃𣪧<E7A983><EFBFBD><E9BA84><EFBFBD>蝏港犖<E6B8AF><EFBFBD><E5A1A9>I<EFBFBD><EFBFBD>
> **<2A>湔鰵<E6B994>園𡢿**嚗?025-12-25
> **<2A><EFBFBD>**嚗𡁶<E59A97>撠讐移<E8AE90><EFBFBD><E6BABB><EFBFBD><EFBFBD>桐縑<E6A190><EFBFBD><E887AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>湔𦻖憭滚<E686AD><E6BB9A><EFBFBD>
---
## <20>㴓 雿輻鍂霂湔<E99C82>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鍂鈭?*嚗?
- <20>?<3F>亙虜<E4BA99><EFBFBD><E8A098>湔鰵嚗<E9B0B5><EFBFBD>嫣誨<E5ABA3><E8AAA8><EFBFBD><EFBFBD>湔鰵<E6B994>函蔡嚗?
- <20>?敹恍<E695B9>蠘翮隞<E7BFAE><E99A9E>瘥誩予/瘥誩𪂹<E8AAA9>湔鰵嚗?
- <20>?<3F><EFBFBD><EFBD81><EFBFBD><EFBFBD><E59A97>隞碶犖<E7A2B6>䨝I敹恍<E695B9><EFBFBD><E785BA><EFBFBD>
**銝漤<E98A9D><E6BCA4>鍂鈭?*嚗?
- <20>?擐𡝗活摰峕㟲<E5B395>函蔡嚗<E894A1><EFBFBD>?`17-摰峕㟲<E5B395>函蔡摰墧<E691B0><E5A2A7><EFBFBD>-2025<32>?md`嚗?
- <20>?<3F><EFBFBD><E887AC><EFBFBD>靽格㺿嚗<E3BABF><EFBFBD>𧢲𧋦<F0A7A2B2><F0A78BA6>﹝蝚?<3F><><EFBFBD>
- <20>?<3F><EFBFBD><E6A185>埝䰻嚗<E4B0BB><EFBFBD>?`15-Node.js<6A>𡒊垢-<2D>函蔡<E587BD>𣂼<EFBFBD><F0A382BC><EFBFBD>.md`嚗?
---
## <20>𣑐 銝<><E98A9D><EFBFBD><EFBFBD>蝵桐縑<E6A190><EFBFBD><EFBFBD>粉5<E7B289><35><EFBFBD>嚗?
### 1.1 ACR<43>𨅯<EFBFBD>隞枏<E99A9E>靽⊥<E99DBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗?
```bash
Registry: crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
<EFBFBD><EFBFBD><EFBFBD>? gofeng117@163.com
<EFBFBD><EFBFBD>: fengzhibo117
```
**<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗?
```bash
# <20><EFBFBD><E7A589><EFBFBD><EFBFBD>𧋦<EFBFBD>唳綫<E594B3><E7B6AB>鍂嚗?
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/<隞枏<E99A9E><E69E8F>?:<<3C><>𧋦<EFBFBD>?
# VPC<50><EFBFBD>嚗𠄎AE<41><EFBFBD><E58CA7><EFBFBD>
crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/<隞枏<E99A9E><E69E8F>?:<<3C><>𧋦<EFBFBD>?
```
**3銝芷<E98A9D><E88AB7><EFBFBD>摨?*嚗?
- `python-extraction` - Python敺格<E695BA><E6A0BC>?
- `backend-service` - Node.js<6A>𡒊垢
- `ai-clinical_frontend-nginx` - <20>滨垢Nginx
---
### 1.2 SAE摨𠉛鍂靽⊥<E99DBD>
| 摨𠉛鍂<F0A0899B>滨妍 | <20>滚𦛚 | 敶枏<E695B6><E69E8F><EFBFBD>𧋦 | <20><><EFBFBD><EFBFBD><EFBFBD> |
|---------|------|---------|---------|
| `python-extraction-test` | Python敺格<E695BA><E6A0BC>?| v1.0 | 172.17.173.66:8000 |
| `nodejs-backend-test` | Node.js<6A>𡒊垢 | v1.3 | 172.17.173.73:3001 |
| `frontend-nginx-service` | <20>滨垢Nginx | v1.0 | 172.17.173.72:80 |
**SAE<41><EFBFBD><E689B9>?*嚗冴ttps://sae.console.aliyun.com/
---
### 1.3 <20><>𧋦<EFBFBD><EFBFBD><E79181>?
**霂凋<E99C82><E5878B>𣇉<EFBFBD><F0A38789>?*嚗䫤v銝餌<E98A9D><E9A48C>?甈∠<E79488><E288A0>?靽株恥<E6A0AA>
```bash
v1.0 <20>?擐𡝗活<F0A19D97>函蔡
v1.1 <20>?<3F><EFBFBD><E8A098>湔鰵
v1.2 <20>?<3F><EFBFBD><E8A098>湔鰵
v1.3 <20>?<3F><EFBFBD><E8A098>湔鰵
v2.0 <20>?<3F>滚之<E6BB9A>湔鰵
```
**撱箄悅**嚗𡁏<E59A97>甈⊥凒<E28AA5><EFBFBD><EFBFBD>甈∠<E79488><E288A0>砍噡嚗ǒ1.3 <20>?v1.4嚗?
---
## <20><> 鈭䎚<E988AD><E48E9A><EFBFBD>衹ode.js<6A>𡒊垢嚗<E59EA2><E59A97>撣貊鍂嚗争<E59A97>潃鐥<E6BD83>潃鐥<E6BD83>
### 甇仿炊1嚗𡁏𧋦<F0A1818F><EFBFBD>撱綽<E692B1>5<EFBFBD><35><EFBFBD>嚗?
```bash
# 餈𥕦<E9A488><F0A595A6>𡒊垢<F0A1928A><EFBFBD>
cd D:\MyCursor\AIclinicalresearch\backend
# 蝻𤥁<E89DBB>TypeScript
npm run build
# 撉諹<E69289>蝻𤥁<E89DBB>蝏𤘪<E89D8F>
dir dist
# 摨磰砲<E7A3B0><EFBFBD>嚗餜ndex.js, common/, modules/ 蝑?
# <20><>遣Docker<65>𨅯<EFBFBD><EFBFBD><E59A97><EFBFBD>砍噡<E7A08D><EFBFBD>嚗?
docker build -t backend-service:v1.4 .
```
**憸<><EFBFBD>園𡢿**嚗?<3F><><EFBFBD>
---
### 甇仿炊2嚗𡁏綫<F0A1818F><E7B6AB><EFBFBD><EFBFBD><EFBFBD>ACR嚗?0<><30><EFBFBD>嚗?
```bash
# 1. <20><EFBFBD>ACR嚗<52><E59A97>甈⊿<E79488><EFBFBD><E996AC>
docker login --username=gofeng117@163.com \
--password=fengzhibo117 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
# 2. <20>𤘪<EFBFBD>蝑?
docker tag backend-service:v1.4 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.4
# 3. <20><EFBFBD><E588B8><EFBFBD><EFBFBD>?
docker push \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.4
# 蝑匧<E89D91><E58CA7><EFBFBD><E588B8><EFBFBD><EFBFBD><EFBFBD>蝥?0<><30><EFBFBD>嚗屸<E59A97><E5B1B8>讐漲838MB嚗?
# <20><EFBFBD> "digest: sha256:..." 銵函內<E587BD>𣂼<EFBFBD>
```
**憸<><EFBFBD>園𡢿**嚗?0<><30><EFBFBD>
---
### 甇仿炊3嚗𡁜銁SAE<41>湔鰵摨𠉛鍂嚗?<3F><><EFBFBD>嚗?
**<EFBFBD><EFBFBD>1嚗阳eb<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?*
1. <20><EFBFBD>SAE嚗冴ttps://sae.console.aliyun.com/
2. 餈𥕦<E9A488>摨𠉛鍂嚗䫤nodejs-backend-test`
3. <20>孵稬<E5ADB5><EFBFBD>蝵脣<E89DB5><E884A3><EFBFBD><EFBFBD><E78390>?
4. <20>滨蔭<E6BBA8><E894AD>㺭嚗?
```yaml
<20>𨅯<EFBFBD><F0A885AF><EFBFBD>: <20>㗇𥋘 backend-service
<20>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦: <20>㗇𥋘 v1.4
```
5. <20>孵稬<E5ADB5>霈扎<E99C88>?
6. 蝑匧<E89D91><E58CA7>函蔡摰峕<E691B0><EFBFBD>漲5-8<><38><EFBFBD>嚗?
**<2A><EFBFBD>2嚗𡁜𦶢隞方<E99A9E><EFBFBD><E59A97>蝥改<E89DA5>**
```bash
# 雿輻鍂<E8BCBB><EFBFBD>鈭飈LI
aliyun sae DeployApplication \
--AppId <摨𠉛鍂ID> \
--ImageUrl crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.4
```
**憸<><EFBFBD>園𡢿**嚗?<3F><><EFBFBD><EFBFBD><EFBFBD> + 5-8<><38><EFBFBD>蝑匧<E89D91><E58CA7>函蔡
---
### 甇仿炊4嚗𡁻<E59A97><EFBFBD><E99C82>蝵莎<E89DB5>2<EFBFBD><32><EFBFBD>嚗?
```bash
# 1. <20><EFBFBD>摨𠉛鍂<F0A0899B><EFBFBD>?
# SAE<41><EFBFBD><E689B9>?<3F>?摰硺<E691B0><E7A1BA>函蔡 <20>?<3F><EFBFBD><E59786><EFBFBD>銝?"Running"
# 2. <20><EFBFBD><E4BAA6><EFBFBD><EFBFBD>霈文鍳<E69687><EFBFBD><E586BD><EFBFBD><EFBFBD>
# SAE<41><EFBFBD><E689B9>?<3F>?<3F><EFBFBD><E4BA99>亥砭 <20>?摨磰砲<E7A3B0><EFBFBD>嚗?
# "<22><> AI銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱 - <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A>典鍳<E585B8><EFBFBD><E586BD><EFBFBD><EFBFBD>"
# 3. <20>亙熒璉<E78692><E79289>?
curl http://172.17.173.73:3001/health
# <20><EFBFBD><EFBFBD><E69C9E><EFBFBD>
curl http://8.140.53.236/api/v1/health
# 4. <20><EFBFBD>瘚贝<E7989A>
# 霈輸䔮<E8BCB8>滨垢嚗冴ttp://8.140.53.236/
# 瘚贝<E7989A><E8B49D>湔鰵<E6B994><E9B0B5><EFBFBD><EFBFBD>?
```
**憸<><EFBFBD>園𡢿**嚗?<3F><><EFBFBD>
---
### 摰峕㟲瘚<E39FB2><E7989A><EFBFBD>園𡢿
| 甇仿炊 | <20><EFBFBD> | <20>園𡢿 |
|------|------|------|
| 1 | <20>砍𧑐<E7A08D><F0A79190>遣 | 5<><35><EFBFBD> |
| 2 | <20><EFBFBD><E588B8><EFBFBD><EFBFBD>?| 10<31><30><EFBFBD> |
| 3 | SAE<41>函蔡 | 3<><33><EFBFBD><EFBFBD><EFBFBD> + 5-8<><38><EFBFBD>蝑匧<E89D91> |
| 4 | 撉諹<E69289> | 2<><32><EFBFBD> |
| **<2A>餉恣** | - | **20-25<32><35><EFBFBD>** |
---
## <20>綫 銝剹<E98A9D><E589B9><EFBFBD><EFBFBD>蝡烤ginx嚗<78>活撣貊鍂嚗争<E59A97>潃鐥<E6BD83>潃?
### 甇仿炊1嚗𡁏𧋦<F0A1818F><EFBFBD>撱綽<E692B1>10<31><30><EFBFBD>嚗?
```bash
# 餈𥕦<E9A488><F0A595A6>滨垢<E6BBA8><EFBFBD>
cd D:\MyCursor\AIclinicalresearch\frontend-v2
# <20><>遣Docker<65>𨅯<EFBFBD><EFBFBD><E59A97><EFBFBD>砍噡<E7A08D><EFBFBD>嚗?
docker build -t ai-clinical_frontend-nginx:v1.1 .
# 瘜冽<E7989C>嚗鋽ockerfile隡朞䌊<E69C9E><EFBFBD>銵?npm run build
```
**憸<><EFBFBD>園𡢿**嚗?0<><30><EFBFBD><EFBFBD><E59A97><EFBFBD>俘eact<63><74>遣嚗?
---
### 甇仿炊2嚗𡁏綫<F0A1818F><E7B6AB><EFBFBD><EFBFBD><EFBFBD>ACR嚗?<3F><><EFBFBD>嚗?
```bash
# 1. <20>𤘪<EFBFBD>蝑?
docker tag ai-clinical_frontend-nginx:v1.1 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.1
# 2. <20><EFBFBD><E588B8><EFBFBD><EFBFBD>?
docker push \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.1
# 蝑匧<E89D91><E58CA7><EFBFBD><E588B8><EFBFBD><EFBFBD><EFBFBD>蝥?<3F><><EFBFBD>嚗屸<E59A97><E5B1B8>讐漲50MB嚗?
```
**憸<><EFBFBD>園𡢿**嚗?<3F><><EFBFBD>
---
### 甇仿炊3嚗𡁜銁SAE<41>湔鰵摨𠉛鍂嚗?<3F><><EFBFBD>嚗?
1. <20><EFBFBD>SAE嚗冴ttps://sae.console.aliyun.com/
2. 餈𥕦<E9A488>摨𠉛鍂嚗䫤frontend-nginx-service`
3. <20>孵稬<E5ADB5><EFBFBD>蝵脣<E89DB5><E884A3><EFBFBD>?
4. <20>㗇𥋘<E39787>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦嚗䫤v1.1`
5. 蝖株恕<E6A0AA>函蔡
**憸<><EFBFBD>園𡢿**嚗?<3F><><EFBFBD><EFBFBD><EFBFBD> + 3-5<><35><EFBFBD>蝑匧<E89D91>
---
### 甇仿炊4嚗𡁻<E59A97><EFBFBD><E99C82>蝵莎<E89DB5>1<EFBFBD><31><EFBFBD>嚗?
```bash
# 霈輸䔮<E8BCB8>滨垢
open http://8.140.53.236/
# <20>?
curl http://8.140.53.236/
```
**摰峕㟲<E5B395>園𡢿**嚗𡁶漲15-20<32><30><EFBFBD>
---
## <20><> <20><EFBFBD><E49C98><EFBFBD>訐ython敺格<E695BA><E6A0BC><EFBFBD><EFBFBD><E9A2B2><EFBFBD><EFBFBD>潃鐥<E6BD83>潃?
### 甇仿炊1嚗𡁏𧋦<F0A1818F><EFBFBD>撱綽<E692B1>15<31><35><EFBFBD>嚗?
```bash
# 餈𥕦<E9A488>Python<6F>滚𦛚<E6BB9A><EFBFBD>
cd D:\MyCursor\AIclinicalresearch\extraction_service
# <20><>遣Docker<65>𨅯<EFBFBD>
docker build -t python-extraction:v1.1 .
```
**憸<><EFBFBD>園𡢿**嚗?5<><35><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD>憭改<E686AD>
---
### 甇仿炊2嚗𡁏綫<F0A1818F><E7B6AB><EFBFBD><EFBFBD>𧶏<EFBFBD>10<31><30><EFBFBD>嚗?
```bash
# <20>𤘪<EFBFBD>蝑?
docker tag python-extraction:v1.1 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.1
# <20><EFBFBD>?
docker push \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.1
```
**憸<><EFBFBD>園𡢿**嚗?0<><30><EFBFBD><EFBFBD><E59A97><EFBFBD>讐漲1.1GB嚗?
---
### 甇仿炊3嚗锭AE<41>函蔡嚗?<3F><><EFBFBD>嚗?
1. 餈𥕦<E9A488>摨𠉛鍂嚗䫤python-extraction-test`
2. <20>函蔡<E587BD><EFBFBD><E59581>穿<EFBFBD>`v1.1`
**摰峕㟲<E5B395>園𡢿**嚗𡁶漲30<33><30><EFBFBD>
---
## <20><EFBFBD> 鈭𢛵<E988AD><F0A29BB5><EFBFBD>寧㴓憓<E3B493><E68693><EFBFBD>𧶏<EFBFBD>擃㗛<E69383><E3979B><EFBFBD>嚗争<E59A97>潃鐥<E6BD83>潃鐥<E6BD83>
### <20>喲睸閫<E79DB8><E996AB>
**<EFBFBD>𩤃<EFBFBD> <20><EFBFBD>**嚗帋耨<E5B88B>寧㴓憓<E3B493><E68693><EFBFBD>𤩺𧒄嚗䔶蝙<E494B6><EFBFBD><EFBFBD><E99EBE><EFBFBD><E887AC><EFBFBD>𡢅<EFBFBD>銝滩<E98A9D><E6BBA9><EFBFBD><EFBFBD>蝵脣<E89DB5><E884A3><EFBFBD>𡢅<EFBFBD>
| <20><EFBFBD> | <20><EFBFBD>?| IP<49>臬炏<E887AC>?|
|------|------|---------|
| **<EFBFBD>滚鍳摨𠉛鍂** <20>?| 靽格㺿<E6A0BC>滨蔭 | <20>?銝滢<E98A9D><E6BBA2>?|
| **<EFBFBD>函蔡摨𠉛鍂** <20>?| <20>湔鰵<E6B994>𨅯<EFBFBD> | <20>?隡𡁜<E99AA1><F0A1819C>?|
---
### <20><EFBFBD>甇仿炊嚗?<3F><><EFBFBD>嚗?
1. <20><EFBFBD>SAE嚗冴ttps://sae.console.aliyun.com/
2. 餈𥕦<E9A488>撖孵<E69296>摨𠉛鍂嚗<E98D82><E59A97> `nodejs-backend-test`嚗?
3. <20>孵稬<E5ADB5>𣂼<EFBFBD><F0A382BC><EFBFBD>蝵柴<E89DB5><EFBFBD><E78897>鞟㴓憓<E3B493><E68693><EFBFBD><EFBFBD>?
4. <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5AFA7><EFBFBD>嚗𣬚<E59A97><F0A3AC9A><EFBFBD><EFBFBD>颲㻫<E9A2B2>?
5. 靽格㺿<E6A0BC><EFBFBD><E3979B>?
6. <20>孵稬<E5ADB5>𣂷<EFBFBD>摮塩<E691AE>?
7. <20>孵稬<E5ADB5><EFBFBD><E99EBE><EFBFBD><E887AC><EFBFBD>𡢅<EFBFBD><F0A1A285>𩤃<EFBFBD> 銝齿糓"<22>函蔡摨𠉛鍂"嚗<><E59A97>
8. 蝑匧<E89D91><E58CA7>滚鍳摰峕<E691B0><EFBFBD>漲2-3<><33><EFBFBD>嚗?
---
### 撣貊鍂<E8B28A><EFBFBD><E887AC><EFBFBD><E3979B><EFBFBD>
**Node.js<6A>𡒊垢<F0A1928A>喲睸<E596B2><EFBFBD>**嚗?
```bash
# Python<6F>滚𦛚<E6BB9A><EFBFBD><EFBFBD><E59A97>儭?<3F><EFBFBD><E3979B><EFBFBD>憿餌移蝖殷<E89D96>嚗?
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
# <20>唳旿摨栞<E691A8><E6A09E>?
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research
# LLM API撖<49>𤨎
DEEPSEEK_API_KEY=sk-...
DASHSCOPE_API_KEY=sk-...
```
**<EFBFBD>滨垢Nginx<EFBFBD>喲睸<EFBFBD><EFBFBD>**嚗?
```bash
# <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A><EFBFBD>
BACKEND_SERVICE_HOST=172.17.173.73
BACKEND_SERVICE_PORT=3001
```
**摰峕㟲<E5B395><EFBFBD><E887AC><EFBFBD><EFBFBD><E79A9C>**嚗?
- <20><EFBFBD> `11-Node.js<6A>𡒊垢-SAE<41>函蔡<E587BD>滨蔭皜<E894AD><E79A9C>.md`
---
## <20><> <20><EFBFBD><E58786><EFBFBD>𧢲𠯫敹梹<E695B9><E6A2B9>亙虜餈鞟輕嚗争<E59A97>潃鐥<E6BD83>潃?
### SAE<41><EFBFBD><E689B9>唳䰻<E594B3>?
1. <20><EFBFBD>SAE嚗冴ttps://sae.console.aliyun.com/
2. 餈𥕦<E9A488>撖孵<E69296>摨𠉛鍂
3. <20>孵稬<E5ADB5>鞉𠯫敹埈䰻霂<E99C82>?
4. <20>㗇𥋘<E39787>園𡢿<E59C92><F0A1A2BF>
5. <20><EFBFBD>摰墧𧒄<E5A2A7><EFBFBD>
---
### 撣貊鍂<E8B28A><EFBFBD><E4BA99>喲睸摮?
**甇<><EFBFBD>臬𢆡**嚗?
```bash
# Node.js<6A>𡒊垢
"<22><> AI銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱 - <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A>典鍳<E585B8><EFBFBD><E586BD><EFBFBD><EFBFBD>"
"Server listening at http://172.17.173.73:3001"
# Python<6F>滚𦛚
"Uvicorn running on http://0.0.0.0:8000"
"Application startup complete"
# <20>滨垢Nginx
"Starting Frontend Nginx Service"
"Backend Service: 172.17.173.73:3001"
```
**撣貉<E692A3><E8B289>躰秤**嚗?
```bash
# <20><EFBFBD><E887AC><EFBFBD><E3979B><EFBFBD>
"EXTRACTION_SERVICE_URL"
"connect ECONNREFUSED"
# <20>唳旿摨栞<E691A8><E6A09E>仿䔮憸?
"Can't reach database server"
"Connection timeout"
# <20>𨅯<EFBFBD><F0A885AF><EFBFBD>
"ENOENT: no such file or directory"
"Error: unable to determine transport target"
```
---
## <20><><><E98A9D><EFBFBD><EFBFBD>皛𡁏<E79A9B>雿頣<E99BBF>蝝扳<E89D9D><EFBFBD><E4BAA4><EFBFBD>潃鐥<E6BD83>潃?
### 隞<><EFBFBD>𧒄<EFBFBD><EFBFBD><EFBFBD><E996AC>皛𡄯<E79A9B>
- <20>?<3F><EFBFBD><E59581><EFBFBD>銝仿<E98A9D>Bug
- <20>?<3F><EFBFBD>銝滨泵<E6BBA8><E6B3B5><EFBFBD><EFBFBD>?
- <20>?<3F><EFBFBD>銝钅<E98A9D><E99285>擧遬
---
### <20><EFBFBD>甇仿炊嚗?<3F><><EFBFBD>嚗?
1. <20><EFBFBD>SAE嚗冴ttps://sae.console.aliyun.com/
2. 餈𥕦<E9A488>撖孵<E69296>摨𠉛鍂
3. <20>孵稬<E5ADB5><EFBFBD>蝵脣<E89DB5><E884A3><EFBFBD>?
4. **<EFBFBD>㗇𥋘<EFBFBD><EFBFBD><EFBFBD>砍噡**嚗<><E59A97> v1.3嚗?
5. 蝖株恕<E6A0AA>函蔡
6. 蝑匧<E89D91><E58CA7><EFBFBD>摰峕<E691B0><EFBFBD>漲5<E6BCB2><35><EFBFBD>嚗?
---
### 撉諹<E69289><E8ABB9><EFBFBD>
```bash
# <20><EFBFBD><E4BAA6><EFBFBD>嚗𣬚霈斤<E99C88><E696A4>?
# <20>𤥁挪<F0A4A581><EFBFBD><E6A180><EFBFBD>瘚贝<E7989A><E8B49D><EFBFBD>
```
---
## <20><20><EFBFBD><E68092><EFBFBD><EFBFBD>格凒<E6A0BC><EFBFBD><E59597>穿<EFBFBD>擃条漣嚗?
### 銝摸ode.js<6A>𡒊垢<F0A1928A>𥕦遣<F0A595A6>湔鰵<E6B994>𡁏𧋦
**<EFBFBD>𥕦遣<EFBFBD><EFBFBD>辣**嚗䫤backend/update-and-deploy.ps1`
```powershell
# Node.js<6A>𡒊垢銝<E59EA2><E98A9D>格凒<E6A0BC><EFBFBD><E59597>?
# 雿輻鍂<E8BCBB><EFBFBD>: .\update-and-deploy.ps1 v1.5
param(
[Parameter(Mandatory=$true)]
[string]$Version
)
Write-Host "========================================" -ForegroundColor Green
Write-Host "撘<>憪𧢲凒<F0A7A2B2>衹ode.js<6A>𡒊垢<F0A1928A><EFBFBD><E59581>? $Version" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green
# 1. 蝻𤥁<E89DBB>TypeScript
Write-Host "`n[1/4] 蝻𤥁<E89DBB>TypeScript..." -ForegroundColor Cyan
npm run build
if ($LASTEXITCODE -ne 0) {
Write-Host "<22>?蝻𤥁<E89DBB>憭梯揖嚗? -ForegroundColor Red
exit 1
}
Write-Host "<22>?蝻𤥁<E89DBB><F0A4A581>𣂼<EFBFBD>嚗? -ForegroundColor Green
# 2. <20><>遣Docker<65>𨅯<EFBFBD>
Write-Host "`n[2/4] <20><>遣Docker<65>𨅯<EFBFBD>..." -ForegroundColor Cyan
docker build -t backend-service:$Version .
if ($LASTEXITCODE -ne 0) {
Write-Host "<22>?<3F><>遣憭梯揖嚗? -ForegroundColor Red
exit 1
}
Write-Host "<22>?<3F>𨅯<EFBFBD><F0A885AF><EFBFBD><EFBFBD>𣂼<EFBFBD>嚗? -ForegroundColor Green
# 3. <20>𤘪<EFBFBD>蝑?
Write-Host "`n[3/4] <20>𤘪<EFBFBD>蝑?.." -ForegroundColor Cyan
$ImageUrl = "crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:$Version"
docker tag backend-service:$Version $ImageUrl
Write-Host "<22>?<3F><>倌撌脫<E6928C>嚗? -ForegroundColor Green
# 4. <20><EFBFBD><E588B8><EFBFBD>ACR
Write-Host "`n[4/4] <20><EFBFBD><E588B8><EFBFBD>ACR..." -ForegroundColor Cyan
Write-Host "<22><EFBFBD><E588B8>𧑐<EFBFBD><F0A79190>: $ImageUrl" -ForegroundColor Yellow
docker push $ImageUrl
if ($LASTEXITCODE -ne 0) {
Write-Host "<22>?<3F><EFBFBD><E588B8>仃韐伐<E99F90>" -ForegroundColor Red
exit 1
}
Write-Host "`n========================================" -ForegroundColor Green
Write-Host "<22>?<3F>𨅯<EFBFBD>撌脫綫<E884AB><E7B6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green
Write-Host "`n銝衤<E98A9D>甇交<E79487>雿頣<E99BBF>" -ForegroundColor Yellow
Write-Host "1. <20><EFBFBD>SAE<41><EFBFBD><E689B9>? https://sae.console.aliyun.com/" -ForegroundColor Yellow
Write-Host "2. 餈𥕦<E9A488>摨𠉛鍂: nodejs-backend-test" -ForegroundColor Yellow
Write-Host "3. <20>孵稬<E5ADB5><EFBFBD>蝵脣<E89DB5><E884A3><EFBFBD>? -ForegroundColor Yellow
Write-Host "4. <20>㗇𥋘<E39787>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦: $Version" -ForegroundColor Yellow
Write-Host "5. 蝖株恕<E6A0AA>函蔡" -ForegroundColor Yellow
Write-Host "`n<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>嚗ĀPC嚗?" -ForegroundColor Cyan
Write-Host "crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:$Version" -ForegroundColor Cyan
```
**雿輻鍂<E8BCBB><EFBFBD>**嚗?
```powershell
cd D:\MyCursor\AIclinicalresearch\backend
.\update-and-deploy.ps1 v1.5
```
---
### 銝箏<E98A9D>蝡臬<E89DA1>撱箸凒<E7AEB8><EFBFBD><E59597>?
**<EFBFBD>𥕦遣<EFBFBD><EFBFBD>辣**嚗䫤frontend-v2/update-and-deploy.ps1`
```powershell
# <20>滨垢Nginx銝<78><E98A9D>格凒<E6A0BC><EFBFBD><E59597>?
param(
[Parameter(Mandatory=$true)]
[string]$Version
)
Write-Host "撘<>憪𧢲凒<F0A7A2B2><EFBFBD>蝡烤ginx<6E><EFBFBD><E59581>? $Version" -ForegroundColor Green
# 1. <20><><EFBFBD>𨅯<EFBFBD>
docker build -t ai-clinical_frontend-nginx:$Version .
# 2. <20>𤘪<EFBFBD>蝑曉僎<E69B89><EFBFBD>?
$ImageUrl = "crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:$Version"
docker tag ai-clinical_frontend-nginx:$Version $ImageUrl
docker push $ImageUrl
Write-Host "<22>?摰峕<E691B0><EFBFBD><EFBFBD>沒AE<41><EFBFBD><E689B9><EFBFBD>蝵脩<E89DB5><E884A9>? $Version" -ForegroundColor Green
```
---
## <20><> 銋腈<E98A8B><E88588><EFBFBD><EFBFBD>雿𨀣𧒄<F0A880A3>港摯蝞?
| <20><EFBFBD> | <20><EFBFBD><E6BBA2>園𡢿 | 蝑匧<E89D91><E58CA7>園𡢿 | <20>餉恣 |
|------|---------|---------|------|
| <20>湔鰵Node.js<6A>𡒊垢 | 5<><35><EFBFBD> | 15-20<32><30><EFBFBD> | 20-25<32><35><EFBFBD> |
| <20>湔鰵<E6B994>滨垢Nginx | 3<><33><EFBFBD> | 12-18<31><38><EFBFBD> | 15-20<32><30><EFBFBD> |
| <20>湔鰵Python<6F>滚𦛚 | 3<><33><EFBFBD> | 25-30<33><30><EFBFBD> | 30<33><30><EFBFBD> |
| 靽格㺿<E6A0BC><EFBFBD><E887AC><EFBFBD> | 2<><32><EFBFBD> | 2-3<><33><EFBFBD> | 5<><35><EFBFBD> |
| <20><EFBFBD><E4BAA6><EFBFBD> | 1<><31><EFBFBD> | 0 | 1<><31><EFBFBD> |
| <20><EFBFBD><E5A2A7><EFBFBD>𧋦 | 2<><32><EFBFBD> | 5<><35><EFBFBD> | 7<><37><EFBFBD> |
---
## <20>𩤃<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>格釣<E6A0BC><EFBFBD>憿?
### 1. <20><EFBFBD><E887AC><EFBFBD><E3979B><EFBFBD>憿餌移蝖?
```bash
# <20>?<3F>躰秤
PYTHON_SERVICE_URL=http://172.17.173.66:8000
# <20>?甇<>
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
```
**<2A>躰悌**嚗𡁶㴓憓<E3B493><E68693><EFBFBD><EFBFBD><EFBFBD>◆銝𦒘誨<F0A69298><E8AAA8><EFBFBD><EFBFBD><EFBFBD><E585B6><EFBFBD>
---
### 2. <20>滚鍳 vs <20>函蔡
```
靽格㺿<EFBFBD>滨蔭 <20>?<3F>滚鍳摨𠉛鍂嚗㇆P銝滚<E98A9D>嚗争<E59A97>
<EFBFBD>湔鰵隞<EFBFBD><EFBFBD> <20>?<3F>函蔡摨𠉛鍂嚗㇆P<E38786><EFBFBD><E888AA><EFBFBD><E79F8B>𩤃<EFBFBD>
```
**撱箄悅**嚗𡁜偷<F0A1819C>譍蝙<E8AD8D><EFBFBD><E586BD><EFBFBD><E288AA>唬誨<E594AC>蝻𣇉<E89DBB>IP
---
### 3. 雿輻鍂VPC<50><EFBFBD><E595A3><EFBFBD><E58CA7>𨅯<EFBFBD>
```bash
# SAE<41>函蔡<E587BD><EFBFBD>㗇𥋘VPC<50><EFBFBD><EFBFBD><E59A97><EFBFBD><E7989A>韐對<E99F90>
crpi-xxx-vpc.cn-beijing.personal.cr.aliyuncs.com/...
# <20>砍𧑐<E7A08D><EFBFBD><E588B8>𧒄雿輻鍂<E8BCBB><EFBFBD><E7A589><EFBFBD>
crpi-xxx.cn-beijing.personal.cr.aliyuncs.com/...
```
---
### 4. <20><>𧋦<EFBFBD>瑞恣<E7919E>?
**撱箄悅閫<E68285><E996AB>**嚗?
```bash
v1.0 - 擐𡝗活<F0A19D97>函蔡
v1.1 - 撠誩<E692A0><E8AAA9>賣凒<E8B3A3>?
v1.2 - 撠誩<E692A0><E8AAA9>賣凒<E8B3A3>?
v2.0 - <20>滚之<E6BB9A><E4B98B>𧋦<EFBFBD><F0A78BA6>
```
**霈啣<E99C88><E595A3><EFBFBD>𧋦**嚗𡁜銁 `00-<2D>函蔡餈𥕦漲<F0A595A6><EFBFBD>.md` 銝剜凒<E5899C><EFBFBD><E59581>砍噡
---
## <20><> <20><><EFBFBD><EFBFBD><EFBFBD>虜閫<E8999C>䔮憸?
### Q1嚗𡁏綫<F0A1818F><E7B6AB><EFBFBD><EFBFBD>誩仃韐伐<E99F90>
**<2A>啗情**嚗䫤denied: requested access to the resource is denied`
**閫<><E996AB>**嚗?
```bash
# <20>齿鰵<E9BDBF><EFBFBD>ACR
docker login --username=gofeng117@163.com \
--password=fengzhibo117 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
```
---
### Q2嚗锭AE<41>函蔡憭梯揖嚗?
**甇仿炊**嚗?
1. <20><EFBFBD>摰硺<E691B0><E7A1BA><EFBFBD>嚗峕𪄳<E5B395><EFBFBD>雿㯄<E99BBF>霂?
2. <20><><EFBFBD>?`15-Node.js<6A>𡒊垢-<2D>函蔡<E587BD>𣂼<EFBFBD><F0A382BC><EFBFBD>.md`
3.<><E79289>亦㴓憓<E3B493><E68693><EFBFBD><EFBFBD>蝵?
4. 撉諹<E69289><E8ABB9>𨅯<EFBFBD><F0A885AF>臬炏<E887AC><EFBFBD><E588B8><EFBFBD><EFBFBD>?
---
### Q3嚗𡁜<E59A97><F0A1819C>賣凒<E8B3A3><EFBFBD>銝滨<E98A9D><E6BBA8><EFBFBD><EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗?
- 瘚讛<E7989A><E8AE9B><EFBFBD>摮矋<E691AE>Ctrl+F5撘箏<E69298><E7AE8F>瑟鰵嚗?
- SAE<41>函蔡<E587BD><EFBFBD><E88AB8>?
- <20><>𧋦<EFBFBD><EFBFBD>㗇𥋘<E39787>躰秤
---
### Q4嚗䥑P<E4A591><EFBFBD><E595A3>䀹凒鈭<E58792><E988AD>𦒘<EFBFBD><F0A69298><EFBFBD>
**甇仿炊**嚗?
1. 霈啣<E99C88><E595A3><EFBFBD>IP<49><EFBFBD>
2. <20>湔鰵靘肽<E99D98>霂付P<E4BB98><50><EFBFBD><EFBFBD><EFBFBD><E288A0><EFBFBD><E887AC><EFBFBD>
3. <20>滚鍳<E6BB9A><EFBFBD><E8A9A8>滚𦛚
4. <20>湔鰵<E6B994><E9B0B5>`00-<2D>函蔡餈𥕦漲<F0A595A6><EFBFBD>.md`
---
## <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
### 霂衣<E99C82><E8A1A3><EFBFBD><EFBFBD><EFB99D><EFBFBD>?
- **摰峕㟲<E5B395>函蔡**嚗䫤17-摰峕㟲<E5B395>函蔡摰墧<E691B0><E5A2A7><EFBFBD>-2025<32>?md`
- **韏<><E99F8F><EFBFBD>亥砭**嚗䫤00-<2D>函蔡餈𥕦漲<F0A595A6><EFBFBD>.md`
- **<2A><EFBFBD><E6A185>埝䰻**嚗䫤15-Node.js<6A>𡒊垢-<2D>函蔡<E587BD>𣂼<EFBFBD><F0A382BC><EFBFBD>.md`
- **<2A><>﹝撖潸⏛**嚗䫤README.md` <20>?`18-<2D>函蔡<E587BD><E894A1>﹝雿輻鍂<E8BCBB><E98D82><EFBFBD>.md`
---
## <20><20><EFBFBD>
### <20>亙虜<E4BA99><E8999C>撣貊鍂<E8B28A>?銝芣<E98A9D>雿?
1. **<EFBFBD>湔鰵Node.js<6A>𡒊垢**嚗?0-25<32><35><EFBFBD>嚗?
2. **靽格㺿<E6A0BC><EFBFBD><E887AC><EFBFBD>**嚗?<3F><><EFBFBD>嚗?
3. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗?<3F><><EFBFBD>嚗?
### 霈唬<E99C88>3銝芸<E98A9D><E88AB8><EFBFBD>
1. <20>?**<2A><>𧋦<EFBFBD><EFBFBD><EFBFBD>**嚗鯝1.3 <20>?v1.4 <20>?v1.5
2. <20>?**靽格㺿<E6A0BC>滨蔭<E6BBA8><EFBFBD><E588B8><EFBFBD><E88D94>湔鰵隞<E9B0B5><E99A9E><EFBFBD><EFBFBD>蝵?*
3. <20>?**雿輻鍂VPC<50><EFBFBD><E595A3><EFBFBD><E58CA7>𨅯<EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD>**
### 銝<><E98A9D><EFBFBD><E4BAA5><EFBFBD>
**蝻𤥁<E89DBB> <20>?<3F><><20>?<3F><EFBFBD>?<3F>?<3F>函蔡 <20>?撉諹<E69289>嚗?0<><30><EFBFBD><EFBFBD>𧼮<EFBFBD><EFBFBD><E59A97>**
---
> **<2A><><EFBFBD>擧凒<E693A7>?*嚗?025-12-25
> **蝏湔擪鈭箏<E988AD>**嚗𡁜<E59A97><F0A1819C>穃𣪧<E7A983>?
> **雿輻鍂<E8BCBB><EFBFBD>**嚗朞窈<E69C9E>𦠜𧒄<F0A6A09C>湔鰵<E6B994><EFBFBD>獢?
**蟡脲<E89FA1><E884B2>湔鰵憿箏⏚嚗?* <20><>