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%)
1828 lines
40 KiB
Markdown
1828 lines
40 KiB
Markdown
# AI銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱 - 摰峕㟲<E5B395>函蔡摰墧<E691B0><E5A2A7>见<EFBFBD>嚗?025<32><35><EFBFBD>
|
||
|
||
> **<2A><>﹝<EFBFBD><EFB99D>𧋦**嚗鯝1.0嚗<EFBFBD><EFBFBD><EFBFBD>条<EFBFBD>嚗?
|
||
> **<2A>𥕦遣<F0A595A6>交<EFBFBD>**嚗?025-12-25
|
||
> **<2A>箔<EFBFBD>摰鮋<E691B0><E9AE8B>函蔡**嚗?025-12-24 ~ 2025-12-25 摰峕㟲<E5B395>函蔡蝏誩<E89D8F>
|
||
> **<2A>函蔡<E587BD>𣂼<EFBFBD><F0A382BC>園𡢿**嚗𡁶漲6撠𤩺𧒄嚗<F0A79284><E59A97><EFBFBD>恍䔮憸䀹<E686B8><E480B9>伐<EFBFBD>
|
||
> **<2A>函蔡鈭箏<E988AD>**嚗𡁜<E59A97><F0A1819C>穃𣪧<E7A983>?
|
||
> **<2A>函蔡蝏𤘪<E89D8F>**嚗尠<E59A97> 摰<><E691B0><EFBFBD>𣂼<EFBFBD>嚗峕<E59A97><E5B395>匧<EFBFBD><E58CA7>賣迤撣貉<E692A3>銵?
|
||
|
||
---
|
||
|
||
## <20><> <20><>﹝霂湔<E99C82>
|
||
|
||
### <20>祆<EFBFBD>獢<EFBFBD><E78DA2><EFBFBD>寧<EFBFBD>
|
||
|
||
- <20>?**<2A>箔<EFBFBD><E7AE94>笔<EFBFBD><E7AC94>函蔡蝏誩<E89D8F>**嚗朞扇敶蓥<E695B6>2025撟?2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵脩<E89DB5>摰峕㟲餈<E39FB2><E9A488>
|
||
- <20>?**<2A><>鉄<EFBFBD><E98984><EFBFBD>匧<EFBFBD><E58CA7>?*嚗𡁻<E59A97><F0A181BB>啁<EFBFBD>4銝芸<E98A9D><E88AB8>桅䔮憸睃<E686B8>閫<EFBFBD><E996AB><EFBFBD>寞<EFBFBD>
|
||
- <20>?**蝏誯<E89D8F><E8AAAF>餌<EFBFBD>**嚗𡁏<E59A97><F0A1818F>澆枂<E6BE86><E69E82><EFBFBD>雿喳<E99BBF>頝萄<E9A09D>瘜冽<E7989C>鈭钅★
|
||
- <20>?**<2A>舐凒<E88890>亙<EFBFBD><E4BA99>?*嚗𡁏<E59A97><F0A1818F>厰<EFBFBD>蝵桀<E89DB5><E6A180>賭誘<E8B3AD>賜<EFBFBD>餈<EFBFBD><E9A488>霂?
|
||
- <20>?**<2A><><EFBFBD>敹恍<E695B9>罸<EFBFBD>蝵?*嚗朞<E59A97><E69C9E><EFBFBD><EFBFBD>𡁜停<F0A1819C>賣<EFBFBD><E8B3A3>?
|
||
|
||
### 銝𤾸<E98A9D>隞𡝗<E99A9E>獢<EFBFBD><E78DA2><EFBFBD>喟頂
|
||
|
||
| <20><>﹝<EFBFBD>滨妍 | <20>券<EFBFBD>?| 雿閙𧒄雿輻鍂 |
|
||
|---------|------|---------|
|
||
| **<EFBFBD>祆<EFBFBD>獢?* | 摰墧<E691B0><E5A2A7>函蔡摰峕㟲瘚<E39FB2><E7989A> | 潃?<3F>圈<EFBFBD>蝵脫<E89DB5><E884AB>齿鰵<E9BDBF>函蔡<E587BD>?|
|
||
| `01-敹恍<E695B9>罸<EFBFBD>蝵淞OP-<2D>嗅抅蝖<E68A85><E89D96>?md` | <20>嗅抅蝖<E68A85>摰峕㟲<E5B395><E39FB2><EFBFBD> | 隞𡡞妟撘<E5A69F>憪见郎銋䭾𧒄 |
|
||
| `00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md` | 韏<><E99F8F><EFBFBD><EFBFBD>䰻蝝W<E89D9D> | <20>亥砭韏<E7A0AD><E99F8F>靽⊥<E99DBD><E28AA5>?|
|
||
| `12-Node.js<6A>𡒊垢-SAE<41>函蔡<E587BD>滢<EFBFBD><E6BBA2>见<EFBFBD>.md` | <20>閙<EFBFBD><E99699>⊿<EFBFBD>蝵?| <20>芷<EFBFBD>蝵脫<E89DB5>銝芣<E98A9D><E88AA3>⊥𧒄 |
|
||
|
||
---
|
||
|
||
## <20>㴓 <20>函蔡<E587BD>嗆<EFBFBD><E59786>餉<EFBFBD>
|
||
|
||
```
|
||
<EFBFBD>冽<EFBFBD>瘚讛<EFBFBD><EFBFBD>?
|
||
<20>?HTTPS (<28>祉<EFBFBD>)
|
||
CLB韐蠘蝸<EFBFBD><EFBFBD>﹛<EFBFBD>?(<28>祉<EFBFBD>IP: 8.140.53.236)
|
||
<20>?HTTP (<28><><EFBFBD>)
|
||
<EFBFBD>滨垢Nginx (SAE: 172.17.173.72:80)
|
||
<20>?HTTP (<28><><EFBFBD>, /api/v1/)
|
||
Node.js<6A>𡒊垢 (SAE: 172.17.173.73:3001)
|
||
<20>?HTTP (<28><><EFBFBD>, /api/dc/)
|
||
Python<EFBFBD>滚𦛚 (SAE: 172.17.173.66:8000)
|
||
<20>?SQL (<28><><EFBFBD>)
|
||
RDS PostgreSQL (<28><><EFBFBD>: pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432)
|
||
```
|
||
|
||
**<EFBFBD>喲睸靘肽<EFBFBD>**嚗?
|
||
- <20><><EFBFBD>㗇<EFBFBD><E39787>∪銁<E288AA>䔶<EFBFBD>銝杼PC<50><43><EFBFBD>嚗Ǒ172.17.0.0/16`嚗?
|
||
- 雿輻鍂NAT蝵穃<E89DB5>霈輸䔮憭𣇉<E686AD>嚗<EFBFBD><E59A97><EFBFBD>㚚<EFBFBD><E39A9A>譌<EFBFBD><E8AD8C><EFBFBD><EFBFBD>汪LM API嚗?
|
||
- CLB蝏穃<E89D8F><E7A983>滨垢嚗峕<E59A97>靘𥕦<E99D98>蝵𤏸挪<F0A48FB8>?
|
||
|
||
---
|
||
|
||
## <20><> <20>函蔡憿箏<E686BF>嚗<EFBFBD>艇<EFBFBD>潭<EFBFBD>憿箏<E686BF><E7AE8F>扯<EFBFBD>嚗?
|
||
|
||
| 甇仿炊 | <20>滚𦛚 | 憸<>恣<EFBFBD>園𡢿 | 靘肽<E99D98>憿?|
|
||
|------|------|---------|--------|
|
||
| 1儭謿<E584AD> | VPC蝵𤑳<E89DB5> + NAT蝵穃<E89DB5> | 15<31><35><EFBFBD> | <20>?|
|
||
| 2儭謿<E584AD> | RDS PostgreSQL | 30<33><30><EFBFBD> | VPC |
|
||
| 3儭謿<E584AD> | OSS撖寡情摮睃<E691AE> | 10<31><30><EFBFBD> | <20>?|
|
||
| 4儭謿<E584AD> | ACR摰孵膥<E5ADB5>𨅯<EFBFBD>隞枏<E99A9E> | 10<31><30><EFBFBD> | <20>?|
|
||
| 5儭謿<E584AD> | Python敺格<E695BA><E6A0BC>⊿<EFBFBD><E28ABF>𤩺<EFBFBD>撱?| 20<32><30><EFBFBD> | ACR |
|
||
| 6儭謿<E584AD> | Python敺格<E695BA><E6A0BC>⊿<EFBFBD>蝵脣<E89DB5>SAE | 15<31><35><EFBFBD> | VPC, ACR |
|
||
| 7儭謿<E584AD> | Node.js<6A>𡒊垢<F0A1928A>𨅯<EFBFBD><F0A885AF><EFBFBD>遣 | 30<33><30><EFBFBD> | ACR, RDS |
|
||
| 8儭謿<E584AD> | Node.js<6A>𡒊垢<F0A1928A>函蔡<E587BD>訕AE | 20<32><30><EFBFBD> | VPC, ACR, RDS, Python |
|
||
| 9儭謿<E584AD> | <20>滨垢Nginx<6E>𨅯<EFBFBD><F0A885AF><EFBFBD>遣 | 15<31><35><EFBFBD> | ACR |
|
||
| <20><> | <20>滨垢Nginx<6E>函蔡<E587BD>訕AE | 15<31><35><EFBFBD> | VPC, ACR, Node.js |
|
||
| 1儭謿<E584AD>1儭謿<E584AD> | CLB韐蠘蝸<E8A098><E89DB8>﹛<EFBFBD>?| 10<31><30><EFBFBD> | <20>滨垢Nginx |
|
||
| 1儭謿<E584AD>2儭謿<E584AD> | <20>券曎頝舀<E9A09D>霂閖<E99C82>霂?| 30<33><30><EFBFBD> | <20><><EFBFBD>㗇<EFBFBD><E39787>?|
|
||
|
||
**<EFBFBD>餉恣**嚗𡁶漲3.5撠𤩺𧒄嚗<EFBFBD><EFBFBD><EFBFBD>恍䔮憸䀹<EFBFBD><EFBFBD>伐<EFBFBD>
|
||
|
||
---
|
||
|
||
## <20><> 銝<><E98A9D><EFBFBD><EFBFBD>蝵桀<E89DB5>憭<EFBFBD><E686AD>30<33><30><EFBFBD>嚗?
|
||
|
||
### 1.1 <20>輸<EFBFBD>鈭𤏸揭<F0A48FB8>瑚<EFBFBD>韏<EFBFBD><E99F8F>
|
||
|
||
**璉<><E79289>交<EFBFBD><E4BAA4>?*嚗?
|
||
- [ ] <20>輸<EFBFBD>鈭𤏸揭<F0A48FB8>瑕歇摰𧼮<E691B0>霈方<E99C88>
|
||
- [ ] 韐行<E99F90>雿䠷<E99BBF> <20>?500<30><30><EFBFBD>撱箄悅1000<30><30><EFBFBD>
|
||
- [ ] <20>啣<EFBFBD><E595A3>㗇𥋘嚗𡁜<E59A97><F0A1819C>?嚗<><E59A97>鈭穿<E988AD>
|
||
- [ ] 撌脣<E6928C>撱摧AM霈輸䔮撖<E494AE>𤨎嚗<F0A4A88E>鍂鈭𥟠ocker<65>餃<EFBFBD>嚗?
|
||
|
||
### 1.2 <20>砍𧑐撘<F0A79190><E69298>𤑳㴓憓?
|
||
|
||
**敹<><E695B9>撌亙<E6928C>**嚗?
|
||
- [ ] Docker Desktop嚗Áindows/Mac嚗㗇<E59A97> Docker Engine嚗𡿨inux嚗?
|
||
- [ ] Git嚗<74>鍂鈭𦒘誨<F0A69298><E8AAA8>恣<EFBFBD><E681A3><EFBFBD>
|
||
- [ ] Node.js 22+嚗<>鍂鈭擧𧋦<E693A7>唳<EFBFBD>撱綽<E692B1>
|
||
- [ ] PowerShell <20>?Bash嚗<68><E59A97>銵諹<E98AB5><E8ABB9>穿<EFBFBD>
|
||
|
||
**撉諹<E69289><E8ABB9>賭誘**嚗?
|
||
```bash
|
||
docker --version # 摨娍遬蝷?Docker version 24.0+
|
||
git --version # 摨娍遬蝷?git version 2.x+
|
||
node --version # 摨娍遬蝷?v22.x.x
|
||
```
|
||
|
||
### 1.3 憿寧𤌍隞<F0A48C8D><E99A9E><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
```bash
|
||
# <20>钅<EFBFBD>憿寧𤌍嚗<F0A48C8D><E59A97><EFBFBD>𡏭<EFBFBD>瘝⊥<E7989D>嚗?
|
||
git clone <your-repo-url> AIclinicalresearch
|
||
cd AIclinicalresearch
|
||
|
||
# 蝖株恕憿寧𤌍蝏𤘪<E89D8F>
|
||
ls -la
|
||
# 摨磰砲<E7A3B0>见<EFBFBD>嚗颹ackend/, frontend-v2/, extraction_service/, docs/
|
||
```
|
||
|
||
---
|
||
|
||
## <20><> 鈭䎚<E988AD><E48E9A>抅蝖<E68A85>霈暹鴌<E69AB9>函蔡嚗?撠𤩺𧒄嚗?
|
||
|
||
### 2.1 VPC蝵𤑳<E89DB5>嚗?5<><35><EFBFBD>嚗?
|
||
|
||
**<EFBFBD>餃<EFBFBD>VPC<EFBFBD>批<EFBFBD><EFBFBD>?*嚗冴ttps://vpc.console.aliyun.com/
|
||
|
||
#### <20>𥕦遣VPC
|
||
|
||
1. <20>孵稬<E5ADB5>𣂼<EFBFBD>撱箔<E692B1><E7AE94>厩<EFBFBD>蝏栶<E89D8F>?
|
||
2. <20>滨蔭<E6BBA8><E894AD>㺭嚗?
|
||
```yaml
|
||
VPC<50>滨妍: ai-clinical-vpc
|
||
<20>啣<EFBFBD>: <20>𤾸<EFBFBD>2嚗<32><E59A97>鈭穿<E988AD>
|
||
IPv4蝵烐挾: 172.17.0.0/16
|
||
```
|
||
3. <20>孵稬<E5ADB5>鞟&摰𠾼<E691B0>?
|
||
|
||
#### <20>𥕦遣鈭斗揢<E69697>綽<EFBFBD>2銝迎<E98A9D><E8BF8E>鞾<EFBFBD><E99EBE>舐鍂<E88890>改<EFBFBD>
|
||
|
||
**鈭斗揢<E69697>?**嚗?
|
||
```yaml
|
||
<EFBFBD>滨妍: ai-clinical-vsw-f
|
||
<EFBFBD>舐鍂<EFBFBD>? <20>𤾸<EFBFBD>2 <20>舐鍂<E88890>慚
|
||
IPv4蝵烐挾: 172.17.160.0/20
|
||
```
|
||
|
||
**鈭斗揢<E69697>?**嚗?
|
||
```yaml
|
||
<EFBFBD>滨妍: ai-clinical-vsw-a
|
||
<EFBFBD>舐鍂<EFBFBD>? <20>𤾸<EFBFBD>2 <20>舐鍂<E88890>態
|
||
IPv4蝵烐挾: 172.17.192.0/20
|
||
```
|
||
|
||
#### <20>𥕦遣摰匧<E691B0>蝏?
|
||
|
||
1. 餈𥕦<E9A488><F0A595A6>𣂼<EFBFBD><F0A382BC>函<EFBFBD><E587BD>煾△<E785BE>?
|
||
2. <20>𥕦遣摰匧<E691B0>蝏<EFBFBD><E89D8F>
|
||
```yaml
|
||
<20>滨妍: ai-clinical-sg
|
||
蝵𤑳<E89DB5>: ai-clinical-vpc
|
||
```
|
||
3. <20>滨蔭<E6BBA8>交䲮<E4BAA4>𤏸<EFBFBD><F0A48FB8>辷<EFBFBD>
|
||
```yaml
|
||
# <20><>捂VPC<50><43><EFBFBD>鈭㘾<E988AD>?
|
||
<20>讛悅: <20>券<EFBFBD>
|
||
蝡臬藁: -1/-1
|
||
<20><><EFBFBD>撖寡情: 172.17.0.0/16
|
||
|
||
# <20><>捂HTTPS (443)
|
||
<20>讛悅: TCP
|
||
蝡臬藁: 443/443
|
||
<20><><EFBFBD>撖寡情: 0.0.0.0/0
|
||
|
||
# <20><>捂HTTP (80)
|
||
<20>讛悅: TCP
|
||
蝡臬藁: 80/80
|
||
<20><><EFBFBD>撖寡情: 0.0.0.0/0
|
||
```
|
||
|
||
---
|
||
|
||
### 2.2 NAT蝵穃<E89DB5>嚗?5<><35><EFBFBD>嚗?
|
||
|
||
**<2A>券<EFBFBD>?*嚗朞悟VPC<50><43><EFBFBD>SAE摨𠉛鍂<F0A0899B>質挪<E8B3AA>桀<EFBFBD>蝵𡢅<E89DB5><F0A1A285>匧<EFBFBD><E58CA7>𨅯<EFBFBD><F0A885AF><EFBFBD><EFBFBD><EFBFBD>汪LM API嚗?
|
||
|
||
#### <20>𥕦遣NAT蝵穃<E89DB5>
|
||
|
||
**<2A>餃<EFBFBD>NAT蝵穃<E89DB5><E7A983>批<EFBFBD><E689B9>?*嚗冴ttps://vpc.console.aliyun.com/nat/
|
||
|
||
1. <20>孵稬<E5ADB5>𣂼<EFBFBD>撱摸AT蝵穃<E89DB5><E7A983>?
|
||
2. <20>滨蔭<E6BBA8><E894AD>㺭嚗?
|
||
```yaml
|
||
<20>滨妍: NAT_airesearch
|
||
<20>啣<EFBFBD>: <20>𤾸<EFBFBD>2嚗<32><E59A97>鈭穿<E988AD>
|
||
VPC: ai-clinical-vpc
|
||
鈭斗揢<E69697>? ai-clinical-vsw-f
|
||
蝵穃<E89DB5>蝐餃<E89D90>: 憓𧼮撩<F0A7BCAE>?
|
||
隞䁅晶璅∪<E79285>: <20>厰<EFBFBD>隞䁅晶
|
||
```
|
||
3. <20>孵稬<E5ADB5>鞟<EFBFBD><E99E9F>唾揚銋啜<E98A8B>?
|
||
|
||
#### <20>𥕦遣撟嗥<E6929F>摰鍃IP
|
||
|
||
1. <20>沐AT蝵穃<E89DB5>霂行<E99C82>憿蛛<E686BF><E89B9B>孵稬<E5ADB5>鞟<EFBFBD>摰𡁜撕<F0A1819C>批<EFBFBD>蝵飡P<E9A3A1>?
|
||
2. <20>㗇𥋘<E39787>鞱揚銋唳鰵<E594B3><E9B0B5>IP<49>𡢅<EFBFBD>
|
||
```yaml
|
||
霈∟晶<E2889F>孵<EFBFBD>: <20>劐蝙<E58A90>冽<EFBFBD><E586BD>?
|
||
撣血捐撜啣<E6929C>? 5Mbps嚗<73><E59A97>霂閧㴓憓<E3B493><E68693><EFBFBD>剁<EFBFBD>
|
||
```
|
||
3. 韐凋僭撟嗥<E6929F>摰?
|
||
|
||
#### <20>滨蔭SNAT<41>∠𤌍嚗<F0A48C8D><E59A97><EFBFBD>殷<EFBFBD>嚗?
|
||
|
||
1. 餈𥕦<E9A488>NAT蝵穃<E89DB5>霂行<E99C82> <20>?<3F>𠩐NAT蝞∠<E89D9E><E288A0>?
|
||
2. 瘛餃<E7989B>SNAT<41>∠𤌍1嚗?
|
||
```yaml
|
||
鈭斗揢<E69697>? ai-clinical-vsw-f
|
||
<20>祉<EFBFBD>IP: <20>㗇𥋘<E39787>𡁏<EFBFBD><F0A1818F><EFBFBD>IP
|
||
```
|
||
3. 瘛餃<E7989B>SNAT<41>∠𤌍2嚗?
|
||
```yaml
|
||
鈭斗揢<E69697>? ai-clinical-vsw-a
|
||
<20>祉<EFBFBD>IP: <20>㗇𥋘<E39787>𡁏<EFBFBD><F0A1818F><EFBFBD>IP
|
||
```
|
||
|
||
**撉諹<E69289>**嚗?
|
||
- SNAT<41>∠𤌍<E288A0>嗆<EFBFBD><E59786>遬蝷箝<E89DB7>𣂼虾<F0A382BC>具<EFBFBD>爗<EFBFBD>
|
||
|
||
---
|
||
|
||
### 2.3 RDS PostgreSQL嚗?0<><30><EFBFBD>嚗?
|
||
|
||
**<2A>餃<EFBFBD>RDS<44>批<EFBFBD><E689B9>?*嚗冴ttps://rdsnext.console.aliyun.com/
|
||
|
||
#### <20>𥕦遣摰硺<E691B0>
|
||
|
||
1. <20>孵稬<E5ADB5>𣂼<EFBFBD>撱箏<E692B1>靘卝<E99D98>?
|
||
2. <20>滨蔭<E6BBA8><E894AD>㺭嚗?
|
||
```yaml
|
||
# <20>箇<EFBFBD><E7AE87>滨蔭
|
||
<20>啣<EFBFBD>: <20>𤾸<EFBFBD>2嚗<32><E59A97>鈭穿<E988AD>
|
||
<20>舐鍂<E88890>? <20>舐鍂<E88890>慚嚗<E6859A><E59A97>鈭斗揢<E69697>箏笆摨䈑<E691A8>
|
||
<20>唳旿摨枏<E691A8><E69E8F>? PostgreSQL
|
||
<20><>𧋦: 15
|
||
蝟餃<E89D9F>: 擃睃虾<E79D83>函<EFBFBD>
|
||
摮睃<E691AE>蝐餃<E89D90>: ESSD鈭𤑳<E988AD>
|
||
|
||
# 閫<>聢
|
||
閫<>聢蝐餃<E89D90>: <20>𡁶鍂<F0A181B6>?
|
||
閫<>聢: 2<>?GB (pg.n2.2c.1m)
|
||
摮睃<E691AE>蝛粹𡢿: 100GB
|
||
|
||
# 蝵𤑳<E89DB5>
|
||
蝵𤑳<E89DB5>蝐餃<E89D90>: 銝𤘪<E98A9D>蝵𤑳<E89DB5>
|
||
VPC: ai-clinical-vpc
|
||
鈭斗揢<E69697>? ai-clinical-vsw-f
|
||
|
||
# 隞䁅晶
|
||
隞䁅晶蝐餃<E89D90>: <20>厰<EFBFBD>隞䁅晶嚗<E699B6><E59A97>霂𤏪<E99C82><F0A48FAA>?<3F><>僑<EFBFBD><E58391><EFBFBD>嚗<EFBFBD><E59A97>鈭改<E988AD>
|
||
```
|
||
3. <20>孵稬<E5ADB5>鞟<EFBFBD><E99E9F>唾揚銋啜<E98A8B>?
|
||
|
||
#### <20>𥕦遣<F0A595A6>唳旿摨枏<E691A8>韐血噡
|
||
|
||
**蝑匧<E89D91>摰硺<E691B0><E7A1BA>𥕦遣摰峕<E691B0>嚗<EFBFBD>漲10<31><30><EFBFBD>嚗?*嚗𣬚<E59A97><F0A3AC9A>𠬍<EFBFBD>
|
||
|
||
1. 餈𥕦<E9A488>摰硺<E691B0>霂行<E99C82> <20>?<3F>鞱揭<E99EB1>瑞恣<E7919E><E681A3><EFBFBD>?
|
||
2. <20>𥕦遣擃䀹<E69383><E480B9>鞱揭<E99EB1>瘀<EFBFBD>
|
||
```yaml
|
||
韐血噡<E8A180>滨妍: airesearch
|
||
韐血噡撖<E599A1><E69296>: Xibahe@fengzhibo117 # <20>嫣蛹<E5ABA3>函<EFBFBD>撘箏<E69298><E7AE8F>?
|
||
韐血噡蝐餃<E89D90>: 擃䀹<E69383><E480B9>鞱揭<E99EB1>?
|
||
```
|
||
|
||
3. 餈𥕦<E9A488><F0A595A6>鞉㺭<E99E89>桀<EFBFBD>蝞∠<E89D9E><E288A0>?
|
||
4. <20>𥕦遣<F0A595A6>唳旿摨橒<E691A8>
|
||
```yaml
|
||
<20>唳旿摨枏<E691A8>蝘? ai_clinical_research
|
||
摮㛖泵<E39B96>? UTF8
|
||
<20>鍦<EFBFBD>閫<EFBFBD><E996AB>: en_US.utf8
|
||
<20><><EFBFBD>韐血噡: airesearch (霂餃<E99C82>)
|
||
```
|
||
|
||
#### <20>滨蔭<E6BBA8>賢<EFBFBD><E8B3A2>?
|
||
|
||
1. 餈𥕦<E9A488><F0A595A6>鞉㺭<E99E89>桀<EFBFBD><E6A180>冽<EFBFBD>扼<EFBFBD>爗<EFBFBD> <20>鞟蒾<E99E9F>滚<EFBFBD>霈曄蔭<E69B84>?
|
||
2. 靽格㺿暺䁅恕<E48185><E68195><EFBFBD>嚗?
|
||
```yaml
|
||
<20>賢<EFBFBD><E8B3A2>? 172.17.0.0/16 # VPC蝵烐挾
|
||
```
|
||
|
||
#### <20>滨蔭<E6BBA8>嗅躹嚗<E8BAB9><E59A97>閬<EFBFBD><E996AC>嚗?
|
||
|
||
1. 餈𥕦<E9A488><F0A595A6>𣂼<EFBFBD><F0A382BC>啗挽蝵柴<E89DB5>?
|
||
2. <20>𦦵揣 `timezone`
|
||
3. 靽格㺿銝綽<E98A9D>`Asia/Shanghai`
|
||
4. <20>孵稬<E5ADB5>鞉<EFBFBD>鈭文<E988AD><E69687>啜<EFBFBD>?
|
||
|
||
#### 撖澆<E69296><E6BE86>唳旿
|
||
|
||
**<2A>寞<EFBFBD>1嚗帋蝙<E5B88B>冽𧋦<E586BD>唳㺭<E594B3>桀<EFBFBD>撖澆枂**嚗<>綫<EFBFBD>琜<EFBFBD>
|
||
|
||
```bash
|
||
# 隞擧𧋦<E693A7>蚤ocker撖澆枂
|
||
docker exec ai-clinical-postgres pg_dump \
|
||
-U postgres \
|
||
-d ai_clinical_research \
|
||
--format=plain \
|
||
--no-owner \
|
||
--no-acl \
|
||
--encoding=UTF8 \
|
||
> rds_init.sql
|
||
|
||
# 銝湔𧒄撘<F0A79284><E69298>爹DS憭𣇉<E686AD><F0A38789>啣<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>其<EFBFBD>撖澆<E69296>嚗?
|
||
# <20>沖DS<44>批<EFBFBD><E689B9>?<3F>?<3F>唳旿摨栞<E691A8><E6A09E>?<3F>?<3F>唾窈憭𣇉<E686AD><F0A38789>啣<EFBFBD>
|
||
|
||
# 撖澆<E69296><E6BE86>訌DS嚗<53><E59A97>閬<EFBFBD>捆<EFBFBD>典<EFBFBD><E585B8>纺sql摰X<E691B0>蝡荔<E89DA1>
|
||
cat rds_init.sql | docker exec -i -e PGPASSWORD="Xibahe@fengzhibo117" \
|
||
ai-clinical-postgres psql \
|
||
-h pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com \
|
||
-p 5432 -U airesearch -d ai_clinical_research
|
||
|
||
# 撖澆<E69296>摰峕<E691B0><E5B395>𠬍<EFBFBD>蝡见朖<E8A781>喲𡡒憭𣇉<E686AD><F0A38789>啣<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>剁<EFBFBD>
|
||
```
|
||
|
||
**撉諹<E69289>**嚗?
|
||
```bash
|
||
# 餈墧𦻖<E5A2A7>訌DS璉<53><E79289>?
|
||
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" \
|
||
ai-clinical-postgres psql \
|
||
-h pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com \
|
||
-p 5432 -U airesearch -d ai_clinical_research \
|
||
-c "SELECT nspname FROM pg_namespace WHERE nspname LIKE '%_schema' ORDER BY nspname;"
|
||
|
||
# 摨磰砲<E7A3B0>见<EFBFBD>嚗惨sl_schema, dc_schema, platform_schema 蝑?
|
||
```
|
||
|
||
---
|
||
|
||
### 2.4 OSS撖寡情摮睃<E691AE>嚗?0<><30><EFBFBD>嚗?
|
||
|
||
**<2A>餃<EFBFBD>OSS<53>批<EFBFBD><E689B9>?*嚗冴ttps://oss.console.aliyun.com/
|
||
|
||
#### <20>𥕦遣Bucket
|
||
|
||
1. <20>孵稬<E5ADB5>𣂼<EFBFBD>撱慷ucket<65>?
|
||
2. <20>滨蔭<E6BBA8><E894AD>㺭嚗?
|
||
```yaml
|
||
Bucket<65>滨妍: ai-clinical-research
|
||
<20>啣<EFBFBD>: <20>𤾸<EFBFBD>2嚗<32><E59A97>鈭穿<E988AD>
|
||
摮睃<E691AE>蝐餃<E89D90>: <20><><EFBFBD>摮睃<E691AE>
|
||
霂餃<E99C82><E9A483><EFBFBD><EFBFBD>: 蝘<><E89D98>
|
||
摮睃<E691AE><E79D83>𦯀<EFBFBD>蝐餃<E89D90>: <20><><EFBFBD><EFBFBD>𦯀<EFBFBD>摮睃<E691AE>
|
||
<20><>𧋦<EFBFBD>批<EFBFBD>: <20>喲𡡒
|
||
```
|
||
3. <20>孵稬<E5ADB5>鞟&摰𠾼<E691B0>?
|
||
|
||
#### <20>𥕦遣RAM霈輸䔮撖<E494AE>𤨎
|
||
|
||
1. 餈𥕦<E9A488><F0A595A6>鞱挪<E99EB1>格綉<E6A0BC>買AM<41>𡢅<EFBFBD>https://ram.console.aliyun.com/
|
||
2. <20>𥕦遣<F0A595A6>冽<EFBFBD>嚗?
|
||
```yaml
|
||
<20>餃<EFBFBD><E9A483>滨妍: oss-bucket-writer
|
||
<20>曄內<E69B84>滨妍: OSS Bucket<65>坔<EFBFBD><E59D94>冽<EFBFBD>
|
||
霈輸䔮<E8BCB8>孵<EFBFBD>: <20>?OpenAPI靚<49>鍂霈輸䔮
|
||
```
|
||
3. 靽嘥<E99DBD>AccessKey嚗?
|
||
```yaml
|
||
AccessKeyId: LTAI5tB2Dt3NdvBL3G7nYGv7
|
||
AccessKeySecret: 1iSN9k39RkApP93QjUhC1DcPIeMG4V
|
||
```
|
||
**<2A>𩤃<EFBFBD> 蝡见朖憭滚<E686AD>靽嘥<E99DBD>嚗<EFBFBD><E59A97>蝏剜<E89D8F>瘜閙䰻<E99699>页<EFBFBD>**
|
||
|
||
4. 銝箇鍂<E7AE87>瑟<EFBFBD><E7919F><EFBFBD><EFBFBD>
|
||
- <20>㗇𥋘<E39787>冽<EFBFBD> <20>?<3F>鞉溶<E99E89>䭾<EFBFBD><E4ADBE>僐<EFBFBD>?
|
||
- <20>㗇𥋘<E39787><F0A58B98><EFBFBD>嚗䫤AliyunOSSFullAccess`嚗<EFBFBD><EFBFBD><EFBFBD>芸<EFBFBD>銋㗇<EFBFBD><EFBFBD>琜<EFBFBD>
|
||
|
||
---
|
||
|
||
### 2.5 ACR摰孵膥<E5ADB5>𨅯<EFBFBD>隞枏<E99A9E>嚗?0<><30><EFBFBD>嚗?
|
||
|
||
**<EFBFBD>餃<EFBFBD>摰孵膥<EFBFBD>𨅯<EFBFBD><EFBFBD>滚𦛚**嚗冴ttps://cr.console.aliyun.com/
|
||
|
||
#### <20>𥕦遣<F0A595A6>賢<EFBFBD>蝛粹𡢿
|
||
|
||
1. 餈𥕦<E9A488><F0A595A6>𣂷葵鈭箏<E988AD>靘卝<E99D98>爗<EFBFBD> <20>𣂼𦶢<F0A382BC>滨征<E6BBA8>氬<EFBFBD>?
|
||
2. <20>孵稬<E5ADB5>𣂼<EFBFBD>撱箏𦶢<E7AE8F>滨征<E6BBA8>氬<EFBFBD>𡢅<EFBFBD>
|
||
```yaml
|
||
<20>賢<EFBFBD>蝛粹𡢿<E7B2B9>滨妍: ai-clinical
|
||
```
|
||
|
||
#### <20>𥕦遣<F0A595A6>𨅯<EFBFBD>隞枏<E99A9E>嚗?銝迎<E98A9D>
|
||
|
||
**隞枏<E99A9E>1嚗䥪ython敺格<E695BA><E6A0BC>?*
|
||
```yaml
|
||
<EFBFBD>賢<EFBFBD>蝛粹𡢿: ai-clinical
|
||
隞枏<EFBFBD><EFBFBD>滨妍: python-extraction
|
||
隞枏<EFBFBD>蝐餃<EFBFBD>: 蝘<><E89D98>
|
||
<EFBFBD>䁅<EFBFBD>: Python<6F><6E>﹝<EFBFBD>𣂼<EFBFBD><F0A382BC>滚𦛚
|
||
```
|
||
|
||
**隞枏<E99A9E>2嚗鐭ode.js<6A>𡒊垢**
|
||
```yaml
|
||
<EFBFBD>賢<EFBFBD>蝛粹𡢿: ai-clinical
|
||
隞枏<EFBFBD><EFBFBD>滨妍: backend-service
|
||
隞枏<EFBFBD>蝐餃<EFBFBD>: 蝘<><E89D98>
|
||
<EFBFBD>䁅<EFBFBD>: Node.js<6A>𡒊垢API<50>滚𦛚
|
||
```
|
||
|
||
**隞枏<E99A9E>3嚗𡁜<E59A97>蝡烤ginx**
|
||
```yaml
|
||
<EFBFBD>賢<EFBFBD>蝛粹𡢿: ai-clinical
|
||
隞枏<EFBFBD><EFBFBD>滨妍: ai-clinical_frontend-nginx
|
||
隞枏<EFBFBD>蝐餃<EFBFBD>: 蝘<><E89D98>
|
||
<EFBFBD>䁅<EFBFBD>: React<63>滨垢Nginx<6E>滚𦛚
|
||
```
|
||
|
||
#### 霈曄蔭霈輸䔮<E8BCB8>剛<EFBFBD>
|
||
|
||
**<2A>冽𧋦<E586BD>蚤ocker<65>餃<EFBFBD>ACR**嚗?
|
||
```bash
|
||
# 銝芯犖<E88AAF>㇁CR<43>餃<EFBFBD>嚗<EFBFBD><E59A97>蝵穃𧑐<E7A983><F0A79190>嚗?
|
||
docker login \
|
||
--username=gofeng117@163.com \
|
||
--password=fengzhibo117 \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
|
||
|
||
# <20>餃<EFBFBD><E9A483>𣂼<EFBFBD><F0A382BC>鞟內
|
||
# Login Succeeded
|
||
```
|
||
|
||
**霈啣<E99C88><E595A3>𨅯<EFBFBD><F0A885AF>啣<EFBFBD><E595A3>澆<EFBFBD>**嚗?
|
||
```bash
|
||
# <20>祉<EFBFBD><E7A589>啣<EFBFBD>嚗<EFBFBD>𧋦<EFBFBD>唳綫<E594B3><E7B6AB>鍂嚗?
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/<隞枏<E99A9E><E69E8F>?:<<3C><>倌>
|
||
|
||
# VPC<50>啣<EFBFBD>嚗𠄎AE<41>匧<EFBFBD><E58CA7>剁<EFBFBD>
|
||
crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/<隞枏<E99A9E><E69E8F>?:<<3C><>倌>
|
||
```
|
||
|
||
---
|
||
|
||
## <20><> 銝剹<E98A9D><E589B9>ython敺格<E695BA><E6A0BC>⊿<EFBFBD>蝵莎<E89DB5>35<33><35><EFBFBD>嚗?
|
||
|
||
### 3.1 <20><>遣Docker<65>𨅯<EFBFBD>嚗?0<><30><EFBFBD>嚗?
|
||
|
||
#### 餈𥕦<E9A488><F0A595A6>桀<EFBFBD>
|
||
|
||
```bash
|
||
cd AIclinicalresearch/extraction_service
|
||
```
|
||
|
||
#### 璉<><E79289>主ockerfile
|
||
|
||
蝖株恕Dockerfile摮睃銁銝𥪜<EFBFBD>摰寞迤蝖殷<EFBFBD>
|
||
|
||
```dockerfile
|
||
# 摨磰砲<E7A3B0><E7A0B2>鉄嚗?
|
||
FROM python:3-slim
|
||
# ... 摰㕑<E691B0>靘肽<E99D98>
|
||
COPY requirements-prod.txt .
|
||
RUN pip install --no-cache-dir -r requirements-prod.txt
|
||
# ... 憭滚<E686AD>隞<EFBFBD><E99A9E>
|
||
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||
```
|
||
|
||
#### <20><>遣<EFBFBD>𨅯<EFBFBD>
|
||
|
||
```bash
|
||
# <20><>遣<EFBFBD>𨅯<EFBFBD>
|
||
docker build -t python-extraction:v1.0 .
|
||
|
||
# 蝑匧<E89D91><E58CA7><EFBFBD>遣摰峕<E691B0>嚗<EFBFBD>漲10-15<31><35><EFBFBD>嚗?
|
||
# Successfully built...
|
||
# Successfully tagged python-extraction:v1.0
|
||
```
|
||
|
||
#### <20>砍𧑐瘚贝<E7989A>嚗<EFBFBD>虾<EFBFBD>劐<EFBFBD><E58A90>刻<EFBFBD>嚗?
|
||
|
||
```bash
|
||
# 餈鞱<E9A488>摰孵膥
|
||
docker run -d -p 8000:8000 --name python-test python-extraction:v1.0
|
||
|
||
# 瘚贝<E7989A><E8B49D>亙熒璉<E78692><E79289>?
|
||
curl http://localhost:8000/api/health
|
||
|
||
# 摨磰砲餈𥪜<E9A488>嚗?
|
||
# {
|
||
# "status": "healthy",
|
||
# "checks": {...}
|
||
# }
|
||
|
||
# <20>𨀣迫摰孵膥
|
||
docker stop python-test
|
||
docker rm python-test
|
||
```
|
||
|
||
#### <20>券<EFBFBD><E588B8><EFBFBD>ACR
|
||
|
||
```bash
|
||
# <20>𤘪<EFBFBD>蝑?
|
||
docker tag python-extraction:v1.0 \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0
|
||
|
||
# <20>券<EFBFBD><E588B8><EFBFBD><EFBFBD>?
|
||
docker push \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0
|
||
|
||
# 蝑匧<E89D91><E58CA7>券<EFBFBD><E588B8><EFBFBD><EFBFBD>琜<EFBFBD>蝥?-10<31><30><EFBFBD>嚗屸<E59A97><E5B1B8>讐漲1.1GB嚗?
|
||
# The push refers to repository [...]
|
||
# v1.0: digest: sha256:... size: ...
|
||
```
|
||
|
||
---
|
||
|
||
### 3.2 <20>函蔡<E587BD>訕AE嚗?5<><35><EFBFBD>嚗?
|
||
|
||
**<2A>餃<EFBFBD>SAE<41>批<EFBFBD><E689B9>?*嚗冴ttps://sae.console.aliyun.com/
|
||
|
||
#### <20>𥕦遣<F0A595A6>賢<EFBFBD>蝛粹𡢿嚗<F0A1A2BF><E59A97>甈∴<E79488>
|
||
|
||
1. 餈𥕦<E9A488><F0A595A6>𣂼𦶢<F0A382BC>滨征<E6BBA8>氬<EFBFBD>?
|
||
2. <20>孵稬<E5ADB5>𣂼<EFBFBD>撱箏𦶢<E7AE8F>滨征<E6BBA8>氬<EFBFBD>𡢅<EFBFBD>
|
||
```yaml
|
||
<20>賢<EFBFBD>蝛粹𡢿ID: cn-beijing:test-airesearch
|
||
<20>賢<EFBFBD>蝛粹𡢿<E7B2B9>滨妍: 瘚贝<E7989A><E8B49D>臬<EFBFBD>
|
||
```
|
||
|
||
#### <20>𥕦遣摨𠉛鍂
|
||
|
||
1. <20>孵稬<E5ADB5>𣂼<EFBFBD>撱箏<E692B1><E7AE8F>具<EFBFBD>?
|
||
2. 摨𠉛鍂<F0A0899B>箸𧋦靽⊥<E99DBD>嚗?
|
||
```yaml
|
||
摨𠉛鍂<F0A0899B>滨妍: python-extraction-test
|
||
<20>賢<EFBFBD>蝛粹𡢿: cn-beijing:test-airesearch
|
||
|
||
# 摰硺<E691B0>閫<EFBFBD>聢
|
||
CPU: 1<>?
|
||
<20><><EFBFBD>: 2GB
|
||
摰硺<E691B0><E7A1BA>? 1
|
||
|
||
# 摨𠉛鍂<F0A0899B>函蔡<E587BD>孵<EFBFBD>
|
||
<20>函蔡<E587BD>孵<EFBFBD>: <20>𨅯<EFBFBD>
|
||
<20>𨅯<EFBFBD>蝐餃<E89D90>: 摰孵膥<E5ADB5>𨅯<EFBFBD><F0A885AF>滚𦛚隡<F0A69B9A><E99AA1><EFBFBD>?銝芯犖<E88AAF>?
|
||
```
|
||
|
||
3. <20>㗇𥋘<E39787>𨅯<EFBFBD>嚗?
|
||
```yaml
|
||
<20>啣<EFBFBD>: <20>𤾸<EFBFBD>2嚗<32><E59A97>鈭穿<E988AD>
|
||
<20>賢<EFBFBD>蝛粹𡢿: ai-clinical
|
||
隞枏<E99A9E>: python-extraction
|
||
<20>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦: v1.0
|
||
|
||
# <20>𩤃<EFBFBD> 雿輻鍂VPC<50>啣<EFBFBD>嚗𠄎AE<41><45><EFBFBD><EFBFBD>匧<EFBFBD>嚗<EFBFBD><E59A97>瘚<EFBFBD><E7989A>韐對<E99F90>
|
||
<20>𨅯<EFBFBD><F0A885AF>啣<EFBFBD>隡朞䌊<E69C9E>刻蓮銝敲PC<50>啣<EFBFBD>嚗?
|
||
crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0
|
||
```
|
||
|
||
4. <20>滨蔭<E6BBA8>𨅯<EFBFBD>霈輸䔮<E8BCB8>剛<EFBFBD>嚗?
|
||
```yaml
|
||
<20>冽<EFBFBD><E586BD>? gofeng117@163.com
|
||
撖<><E69296>: fengzhibo117
|
||
```
|
||
|
||
5. 摨𠉛鍂<F0A0899B>滨蔭嚗?
|
||
```yaml
|
||
# <20>臬𢆡<E887AC>賭誘<E8B3AD>滨蔭
|
||
<20>臬𢆡<E887AC>賭誘: <20>嗵征嚗<E5BE81>蝙<EFBFBD>求ockerfile<6C><65>MD嚗?
|
||
|
||
# 蝡臬藁<E887AC>滨蔭
|
||
摰孵膥蝡臬藁: 8000
|
||
<20>讛悅: TCP
|
||
```
|
||
|
||
6. <20>臬<EFBFBD><E887AC>㗛<EFBFBD>嚗<EFBFBD>虾<EFBFBD>㚁<EFBFBD>嚗?
|
||
```bash
|
||
LOG_LEVEL=INFO
|
||
TEMP_DIR=/tmp/extraction_service
|
||
```
|
||
|
||
7. 蝵𤑳<E89DB5><F0A491B3>滨蔭嚗?
|
||
```yaml
|
||
VPC: ai-clinical-vpc
|
||
鈭斗揢<E69697>? ai-clinical-vsw-f
|
||
摰匧<E691B0>蝏? ai-clinical-sg
|
||
```
|
||
|
||
8. <20>亙熒璉<E78692><E79289>伐<EFBFBD>
|
||
```yaml
|
||
# 摮䀹暑璉<E69A91><E79289>伐<EFBFBD>Liveness嚗?
|
||
璉<><E79289>交䲮撘? HTTP
|
||
璉<><E79289>亥楝敺? /api/health
|
||
蝡臬藁: 8000
|
||
<20>嘥<EFBFBD>撱嗉<E692B1>: 30蝘?
|
||
璉<><E79289>仿𡢿<E4BBBF>? 10蝘?
|
||
璉<><E79289>亥<EFBFBD><E4BAA5>? 5蝘?
|
||
銝滚<E98A9D>摨琿<E691A8><E790BF>? 3甈?
|
||
|
||
# 撠梁貌璉<E8B28C><E79289>伐<EFBFBD>Readiness嚗?
|
||
璉<><E79289>交䲮撘? HTTP
|
||
璉<><E79289>亥楝敺? /api/health
|
||
蝡臬藁: 8000
|
||
<20>嘥<EFBFBD>撱嗉<E692B1>: 10蝘?
|
||
```
|
||
|
||
9. <20>孵稬<E5ADB5>鞟&霈文<E99C88>撱箝<E692B1>?
|
||
|
||
#### 蝑匧<E89D91><E58CA7>函蔡摰峕<E691B0>
|
||
|
||
- <20>亦<EFBFBD><E4BAA6>𣂼<EFBFBD>靘钅<E99D98>蝵脯<E89DB5>煾△<E785BE>?
|
||
- <20>嗆<EFBFBD><E59786><EFBFBD>銝箝<E98A9D>𪊟unning<6E>𡢅<EFBFBD>蝥?-10<31><30><EFBFBD>嚗?
|
||
- 霈啣<E99C88><E595A3><EFBFBD><EFBFBD><EFBFBD>啣<EFBFBD>嚗䫤http://172.17.173.66:8000`
|
||
|
||
#### 撉諹<E69289><E8ABB9>函蔡
|
||
|
||
```bash
|
||
# <20>寞<EFBFBD>1嚗𡁜銁SAE摨𠉛鍂<F0A0899B><E98D82>䰻<EFBFBD>𧢲𠯫敹?
|
||
# 摨磰砲<E7A3B0>见<EFBFBD>嚗?
|
||
# INFO: Uvicorn running on http://0.0.0.0:8000
|
||
# INFO: Application startup complete
|
||
|
||
# <20>寞<EFBFBD>2嚗帋<E59A97>Node.js摨𠉛鍂瘚贝<E7989A>嚗<EFBFBD><E59A97>蝵脣<E89DB5>嚗?
|
||
curl http://172.17.173.66:8000/api/health
|
||
```
|
||
|
||
---
|
||
|
||
## <20>叚 <20>䜘<EFBFBD><E49C98>ode.js<6A>𡒊垢<F0A1928A>函蔡嚗?0<><30><EFBFBD>嚗?
|
||
|
||
### 4.1 <20><><EFBFBD>撌乩<E6928C>嚗?0<><30><EFBFBD>嚗?
|
||
|
||
#### <20><><EFBFBD>撘撇WT撖<54>𤨎
|
||
|
||
```bash
|
||
# <20>沌owerShell<6C>𩂓ash銝剔<E98A9D><E58994>?
|
||
openssl rand -hex 32
|
||
# <20>?
|
||
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
|
||
|
||
# 蝷箔<E89DB7>颲枏枂嚗<E69E82>蝙<EFBFBD>冽<EFBFBD><E586BD>芸楛<E88AB8><E6A59B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?
|
||
# 8a3f9e7c2d1b5a4e6f8c9d0a3b5e7f1c2a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4
|
||
```
|
||
|
||
#### <20><><EFBFBD><EFBFBD>臬<EFBFBD><E887AC>㗛<EFBFBD>皜<EFBFBD><E79A9C>
|
||
|
||
<EFBFBD>𥕦遣<EFBFBD><EFBFBD>辣 `backend/.env.production`嚗<EFBFBD><EFBFBD><EFBFBD>𣂷漱<EFBFBD>蚣it嚗㚁<EFBFBD>
|
||
|
||
```bash
|
||
# ==================== <20>箇<EFBFBD><E7AE87>滨蔭 ====================
|
||
NODE_ENV=production
|
||
PORT=3001
|
||
LOG_LEVEL=info
|
||
|
||
# ==================== <20>唳旿摨栞<E691A8><E6A09E>?====================
|
||
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research?connection_limit=18&pool_timeout=10
|
||
|
||
# ==================== Python敺格<E695BA><E6A0BC>?<3F>𩤃<EFBFBD> <20>喲睸嚗?===================
|
||
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
|
||
|
||
# ==================== OSS撖寡情摮睃<E691AE> ====================
|
||
OSS_ACCESS_KEY_ID=LTAI5tB2Dt3NdvBL3G7nYGv7
|
||
OSS_ACCESS_KEY_SECRET=1iSN9k39RkApP93QjUhC1DcPIeMG4V
|
||
OSS_BUCKET=ai-clinical-research
|
||
OSS_ENDPOINT=oss-cn-beijing-internal.aliyuncs.com
|
||
OSS_REGION=cn-beijing
|
||
|
||
# ==================== JWT霈方<E99C88> ====================
|
||
JWT_SECRET=8a3f9e7c2d1b5a4e6f8c9d0a3b5e7f1c2a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4
|
||
JWT_EXPIRES_IN=7d
|
||
|
||
# ==================== LLM API撖<49>𤨎 ====================
|
||
DEEPSEEK_API_KEY=sk-7f8cc37a79fa4799860b38fc7ba2e150
|
||
DASHSCOPE_API_KEY=sk-75b4ff29a14a49e79667a331034f3298
|
||
|
||
# ==================== CloseAI<41>滨蔭 ====================
|
||
CLOSEAI_API_KEY=sk-cu0iepbXYGGx2jc7BqP6ogtSWmP6fk918qV3RUdtGC3Ed1po
|
||
CLOSEAI_OPENAI_BASE_URL=https://api.openai-proxy.org/v1
|
||
CLOSEAI_CLAUDE_BASE_URL=https://api.openai-proxy.org/anthropic
|
||
|
||
# ==================== Dify<66>滨蔭 ====================
|
||
DIFY_API_URL=http://localhost/v1
|
||
DIFY_API_KEY=dataset-mfvdiKvQ213NvxWm7RoYMN3c
|
||
|
||
# ==================== Postgres-Only<6C>嗆<EFBFBD> ====================
|
||
QUEUE_TYPE=pgboss
|
||
CACHE_TYPE=postgres
|
||
```
|
||
|
||
---
|
||
|
||
### 4.2 <20><>遣Docker<65>𨅯<EFBFBD>嚗?0<><30><EFBFBD>嚗?
|
||
|
||
#### <20>寞<EFBFBD><E5AF9E>㗇𥋘
|
||
|
||
<EFBFBD>睲賑雿輻鍂**<2A>寞<EFBFBD>B嚗𡁏𧋦<F0A1818F>啁<EFBFBD>霂?+ Docker<65>枏<EFBFBD>**嚗<><E59A97>蝔喳<E89D94>嚗?
|
||
|
||
#### 甇仿炊1嚗𡁏𧋦<F0A1818F>啁<EFBFBD>霂騻ypeScript
|
||
|
||
```bash
|
||
cd AIclinicalresearch/backend
|
||
|
||
# 摰㕑<E691B0>靘肽<E99D98>
|
||
npm install
|
||
|
||
# 蝻𤥁<E89DBB>TypeScript
|
||
npm run build
|
||
|
||
# 撉諹<E69289>蝻𤥁<E89DBB>蝏𤘪<E89D8F>
|
||
ls dist/
|
||
# 摨磰砲<E7A3B0>见<EFBFBD>嚗餜ndex.js, common/, modules/ 蝑?
|
||
```
|
||
|
||
#### 甇仿炊2嚗𡁏<E59A97><F0A1818F>主ockerfile
|
||
|
||
蝖株恕Dockerfile<EFBFBD><EFBFBD>捆甇<EFBFBD>&嚗?
|
||
|
||
```dockerfile
|
||
FROM node:22-alpine
|
||
|
||
WORKDIR /app
|
||
|
||
# 憭滚<E686AD>package.json<6F>俰ackage-lock.json
|
||
COPY package*.json ./
|
||
|
||
# <20>芸<EFBFBD>鋆<EFBFBD><E98B86>鈭找<E988AD>韏?
|
||
RUN npm ci --only=production --ignore-scripts
|
||
|
||
# 憭滚<E686AD>蝻𤥁<E89DBB><F0A4A581>𡒊<EFBFBD>隞<EFBFBD><E99A9E>
|
||
COPY dist ./dist
|
||
|
||
# 憭滚<E686AD>Prisma摰X<E691B0>蝡?
|
||
COPY node_modules/.prisma ./node_modules/.prisma
|
||
|
||
# 憭滚<E686AD>Prisma schema嚗<61>鍂鈭籄untime嚗?
|
||
COPY prisma ./prisma
|
||
|
||
# <20>𩤃<EFBFBD> 憭滚<E686AD>config<69>桀<EFBFBD>嚗<EFBFBD><E59A97>閬<EFBFBD><E996AC>嚗?
|
||
COPY config ./config
|
||
|
||
# <20>湧蠧蝡臬藁
|
||
EXPOSE 3001
|
||
|
||
# <20>臬𢆡<E887AC>賭誘
|
||
CMD ["node", "dist/index.js"]
|
||
```
|
||
|
||
**<EFBFBD>𩤃<EFBFBD> <20>喲睸靽桀<E99DBD>1**嚗𡁜<E59A97>憿餃<E686BF><E9A483>?`COPY config ./config`嚗<EFBFBD>炏<EFBFBD>嗘<EFBFBD><EFBFBD>仿<EFBFBD> `ENOENT: no such file or directory, open '/app/config/agents.yaml'`
|
||
|
||
#### 甇仿炊3嚗𡁏<E59A97>撱粹<E692B1><E7B2B9>?
|
||
|
||
```bash
|
||
# <20><>遣<EFBFBD>𨅯<EFBFBD>
|
||
docker build -t backend-service:v1.3 .
|
||
|
||
# 蝑匧<E89D91><E58CA7><EFBFBD>遣摰峕<E691B0>嚗<EFBFBD>漲5<E6BCB2><35><EFBFBD>嚗?
|
||
```
|
||
|
||
#### 甇仿炊4嚗𡁏𧋦<F0A1818F>唳<EFBFBD>霂𤏪<E99C82><F0A48FAA>刻<EFBFBD>嚗?
|
||
|
||
```bash
|
||
# 餈鞱<E9A488>摰孵膥嚗<E886A5><E59A97><EFBFBD>交𧋦<E4BAA4>唳㺭<E594B3>桀<EFBFBD>瘚贝<E7989A>嚗?
|
||
docker run -d -p 3001:3001 \
|
||
-e NODE_ENV=production \
|
||
-e DATABASE_URL="postgresql://postgres:postgres@host.docker.internal:5432/ai_clinical_research" \
|
||
-e EXTRACTION_SERVICE_URL=http://host.docker.internal:8000 \
|
||
--name backend-test \
|
||
backend-service:v1.3
|
||
|
||
# <20>亦<EFBFBD><E4BAA6>亙<EFBFBD>
|
||
docker logs -f backend-test
|
||
|
||
# 摨磰砲<E7A3B0>见<EFBFBD>嚗?
|
||
# <20>?Loaded 12 agent configurations
|
||
# <20>?<3F>唳旿摨栞<E691A8><E6A09E>交<EFBFBD><E4BAA4>?
|
||
# <20><> AI銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱 - <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A>典鍳<E585B8>冽<EFBFBD><E586BD><EFBFBD><EFBFBD>
|
||
# <20><> <20>滚𦛚<E6BB9A>啣<EFBFBD>: http://localhost:3001
|
||
|
||
# 瘚贝<E7989A><E8B49D>亙熒璉<E78692><E79289>?
|
||
curl http://localhost:3001/health
|
||
|
||
# <20>𨀣迫瘚贝<E7989A>摰孵膥
|
||
docker stop backend-test
|
||
docker rm backend-test
|
||
```
|
||
|
||
#### 甇仿炊5嚗𡁏綫<F0A1818F><E7B6AB><EFBFBD>ACR
|
||
|
||
```bash
|
||
# <20>𤘪<EFBFBD>蝑?
|
||
docker tag backend-service:v1.3 \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||
|
||
# <20>券<EFBFBD><E588B8><EFBFBD><EFBFBD>?
|
||
docker push \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||
|
||
# 蝑匧<E89D91><E58CA7>券<EFBFBD><E588B8><EFBFBD><EFBFBD>琜<EFBFBD>蝥?0<><30><EFBFBD>嚗屸<E59A97><E5B1B8>讐漲838MB嚗?
|
||
```
|
||
|
||
---
|
||
|
||
### 4.3 <20>函蔡<E587BD>訕AE嚗?0<><30><EFBFBD>嚗?
|
||
|
||
**<EFBFBD>餃<EFBFBD>SAE<EFBFBD>批<EFBFBD><EFBFBD>?*嚗冴ttps://sae.console.aliyun.com/
|
||
|
||
#### <20>𥕦遣摨𠉛鍂
|
||
|
||
1. <20>孵稬<E5ADB5>𣂼<EFBFBD>撱箏<E692B1><E7AE8F>具<EFBFBD>?
|
||
2. 摨𠉛鍂<F0A0899B>箸𧋦靽⊥<E99DBD>嚗?
|
||
```yaml
|
||
摨𠉛鍂<F0A0899B>滨妍: nodejs-backend-test
|
||
<20>賢<EFBFBD>蝛粹𡢿: cn-beijing:test-airesearch
|
||
|
||
# 摰硺<E691B0>閫<EFBFBD>聢
|
||
CPU: 1<>?
|
||
<20><><EFBFBD>: 2GB
|
||
摰硺<E691B0><E7A1BA>? 1
|
||
```
|
||
|
||
3. <20>㗇𥋘<E39787>𨅯<EFBFBD>嚗?
|
||
```yaml
|
||
<20>𨅯<EFBFBD>蝐餃<E89D90>: 摰孵膥<E5ADB5>𨅯<EFBFBD><F0A885AF>滚𦛚隡<F0A69B9A><E99AA1><EFBFBD>?銝芯犖<E88AAF>?
|
||
<20>啣<EFBFBD>: <20>𤾸<EFBFBD>2嚗<32><E59A97>鈭穿<E988AD>
|
||
<20>賢<EFBFBD>蝛粹𡢿: ai-clinical
|
||
隞枏<E99A9E>: backend-service
|
||
<20>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦: v1.3
|
||
|
||
# <20>𨅯<EFBFBD>霈輸䔮<E8BCB8>剛<EFBFBD>
|
||
<20>冽<EFBFBD><E586BD>? gofeng117@163.com
|
||
撖<><E69296>: fengzhibo117
|
||
```
|
||
|
||
4. 摨𠉛鍂<F0A0899B>滨蔭嚗?
|
||
```yaml
|
||
# <20>臬𢆡<E887AC>賭誘
|
||
<20>臬𢆡<E887AC>賭誘: <20>嗵征嚗<E5BE81>蝙<EFBFBD>求ockerfile<6C><65>MD嚗?
|
||
|
||
# <20>𩤃<EFBFBD> <20>喲睸嚗帋<E59A97>閬<EFBFBD><E996AC>蝵?/bin/bash嚗淾lpine Linux瘝⊥<E7989D>bash嚗?
|
||
|
||
# 蝡臬藁<E887AC>滨蔭
|
||
摰孵膥蝡臬藁: 3001
|
||
<20>讛悅: TCP
|
||
```
|
||
|
||
5. <20>臬<EFBFBD><E887AC>㗛<EFBFBD>嚗<EFBFBD><E59A97>儭?<3F>𧼮虜<F0A7BCAE>滩<EFBFBD>嚗<EFBFBD><E59A97>嚗?
|
||
|
||
**憭滚<E686AD>銝𢠃𢒰<F0A2A083><F0A292B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>渡㴓憓<E3B493><E68693><EFBFBD>𤩺<EFBFBD><F0A4A9BA>?*嚗𣬚鸌<F0A3AC9A>急釣<E680A5>𧶏<EFBFBD>
|
||
|
||
```bash
|
||
# <20>𩤃<EFBFBD> <20><>摰寞<E691B0><E5AF9E>粹<EFBFBD><E7B2B9><EFBFBD>㴓憓<E3B493><E68693><EFBFBD>?
|
||
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
|
||
# 銝齿糓 PYTHON_SERVICE_URL嚗<4C><E59A97>摮堒<E691AE>憿餅迤蝖殷<E89D96>
|
||
|
||
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research?connection_limit=18&pool_timeout=10
|
||
# 瘜冽<E7989C>嚗鋣 閬<><E996AC><EFBFBD>?%40
|
||
```
|
||
|
||
6. 蝵𤑳<E89DB5><F0A491B3>滨蔭嚗?
|
||
```yaml
|
||
VPC: ai-clinical-vpc
|
||
鈭斗揢<E69697>? ai-clinical-vsw-f
|
||
摰匧<E691B0>蝏? ai-clinical-sg
|
||
```
|
||
|
||
7. <20>亙熒璉<E78692><E79289>伐<EFBFBD>
|
||
```yaml
|
||
# 摮䀹暑璉<E69A91><E79289>伐<EFBFBD>Liveness嚗?
|
||
璉<><E79289>交䲮撘? HTTP
|
||
璉<><E79289>亥楝敺? /health
|
||
蝡臬藁: 3001
|
||
<20>嘥<EFBFBD>撱嗉<E692B1>: 60蝘? # Node.js<6A>臬𢆡颲<F0A286A1><E9A2B2>
|
||
璉<><E79289>仿𡢿<E4BBBF>? 10蝘?
|
||
|
||
# 撠梁貌璉<E8B28C><E79289>伐<EFBFBD>Readiness嚗?
|
||
璉<><E79289>交䲮撘? HTTP
|
||
璉<><E79289>亥楝敺? /health
|
||
蝡臬藁: 3001
|
||
<20>嘥<EFBFBD>撱嗉<E692B1>: 30蝘?
|
||
```
|
||
|
||
8. <20>孵稬<E5ADB5>鞟&霈文<E99C88>撱箝<E692B1>?
|
||
|
||
#### 蝑匧<E89D91><E58CA7>函蔡摰峕<E691B0>
|
||
|
||
- <20>亦<EFBFBD><E4BAA6>𣂼<EFBFBD>靘钅<E99D98>蝵脯<E89DB5>煾△<E785BE>?
|
||
- <20>嗆<EFBFBD><E59786><EFBFBD>銝箝<E98A9D>𪊟unning<6E>𡢅<EFBFBD>蝥?0<><30><EFBFBD>嚗?
|
||
- 霈啣<E99C88><E595A3><EFBFBD><EFBFBD><EFBFBD>啣<EFBFBD>嚗䫤http://172.17.173.73:3001`
|
||
|
||
#### 撉諹<E69289><E8ABB9>函蔡
|
||
|
||
<EFBFBD>亦<EFBFBD><EFBFBD>亙<EFBFBD>嚗𣬚&霈支誑銝衤縑<EFBFBD>荔<EFBFBD>
|
||
|
||
```bash
|
||
# <20>?摨磰砲<E7A3B0>见<EFBFBD><E8A781><EFBFBD>𠯫敹梹<E695B9>
|
||
<EFBFBD>?Loaded 12 agent configurations
|
||
[PgBossQueue] Using PgBossQueue (Postgres-Only<6C>嗆<EFBFBD>)
|
||
[PostgresCacheAdapter] Cleanup task started
|
||
<EFBFBD>?<3F>唳旿摨栞<E691A8><E6A09E>交<EFBFBD><E4BAA4><EFBFBD><EFBFBD>
|
||
<EFBFBD><EFBFBD> <20>唳旿摨梶<E691A8><E6A2B6>? PostgreSQL 15.14
|
||
PythonExecutorService initialized: http://172.17.173.66:8000 # <20>𩤃<EFBFBD> 蝖株恕餈嗘葵嚗?
|
||
<EFBFBD><EFBFBD> AI銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱 - <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A>典鍳<E585B8>冽<EFBFBD><E586BD><EFBFBD><EFBFBD>
|
||
<EFBFBD><EFBFBD> <20>滚𦛚<E6BB9A>啣<EFBFBD>: http://localhost:3001
|
||
Server listening at http://172.17.173.73:3001
|
||
|
||
# <20>?憒<><E68692><EFBFBD>见<EFBFBD><E8A781>躰秤嚗?
|
||
ENOENT: no such file or directory, open '/app/config/agents.yaml'
|
||
<EFBFBD>?Dockerfile蝻箏<E89DBB> COPY config ./config
|
||
|
||
Error: unable to determine transport target for "pino-pretty"
|
||
<EFBFBD>?src/index.ts <20>亙<EFBFBD><E4BA99>滨蔭<E6BBA8>桅<EFBFBD>嚗屸<E59A97>閬<EFBFBD>辺隞嗅ế<E59785>剔㴓憓?
|
||
|
||
ReferenceError: require is not defined
|
||
<EFBFBD>?healthCheck.ts 雿輻鍂鈭<E98D82>equire嚗屸<E59A97><E5B1B8>嫣蛹import
|
||
```
|
||
|
||
---
|
||
|
||
### 4.4 撣貉<E692A3><E8B289>桅<EFBFBD>靽桀<E99DBD>
|
||
|
||
#### <20>桅<EFBFBD>1嚗䬙onfig<69>桀<EFBFBD>蝻箏仃
|
||
|
||
**<EFBFBD>躰秤**嚗?
|
||
```
|
||
ENOENT: no such file or directory, open '/app/config/agents.yaml'
|
||
```
|
||
|
||
**閫<><E996AB>**嚗?
|
||
```dockerfile
|
||
# <20>求ockerfile銝剜溶<E5899C>?
|
||
COPY config ./config
|
||
```
|
||
|
||
#### <20>桅<EFBFBD>2嚗䮝ino-pretty<74>煺漣<E785BA>臬<EFBFBD><E887AC>仿<EFBFBD>
|
||
|
||
**<EFBFBD>躰秤**嚗?
|
||
```
|
||
Error: unable to determine transport target for "pino-pretty"
|
||
```
|
||
|
||
**閫<><E996AB>**嚗帋耨<E5B88B>?`src/index.ts`
|
||
```typescript
|
||
const fastify = Fastify({
|
||
logger: config.nodeEnv === 'production'
|
||
? { level: config.logLevel } // <20>煺漣<E785BA>臬<EFBFBD>嚗𡁶<E59A97><F0A181B6>埄SON<4F>亙<EFBFBD>
|
||
: { // 撘<><E69298>𤑳㴓憓<E3B493><E68693>pino-pretty
|
||
level: config.logLevel,
|
||
transport: {
|
||
target: 'pino-pretty',
|
||
options: {
|
||
colorize: true,
|
||
translateTime: 'HH:MM:ss Z',
|
||
ignore: 'pid,hostname',
|
||
},
|
||
},
|
||
},
|
||
});
|
||
```
|
||
|
||
#### <20>桅<EFBFBD>3嚗冴ealthCheck require<72>仿<EFBFBD>
|
||
|
||
**<EFBFBD>躰秤**嚗?
|
||
```
|
||
ReferenceError: require is not defined in ES module
|
||
```
|
||
|
||
**閫<><E996AB>**嚗帋耨<E5B88B>?`src/common/health/healthCheck.ts`
|
||
```typescript
|
||
import os from 'os'; // 瘛餃<E7989B>撖澆<E69296>
|
||
|
||
// 靽格㺿雿輻鍂<E8BCBB>孵<EFBFBD>
|
||
checks.cpu = {
|
||
usage: process.cpuUsage(),
|
||
loadAverage: process.platform !== 'win32' ? os.loadavg() : 'N/A' // 雿輻鍂import<72><74>s
|
||
}
|
||
```
|
||
|
||
#### <20>桅<EFBFBD>4嚗颹ash頝臬<E9A09D><E887AC>躰秤
|
||
|
||
**<EFBFBD>躰秤**嚗?
|
||
```
|
||
executable '/bin/bash' not found in $PATH
|
||
```
|
||
|
||
**閫<><E996AB>**嚗?
|
||
- SAE<41>臬𢆡<E887AC>賭誘<E8B3AD>嗵征嚗䔶蝙<E494B6>求ockerfile<6C><65>MD
|
||
- <20>碶蝙<E7A2B6>?`/bin/sh` 隞<>𤜯 `/bin/bash`
|
||
|
||
---
|
||
|
||
## <20>綫 鈭𢛵<E988AD><F0A29BB5><EFBFBD>蝡烤ginx<6E>函蔡嚗?0<><30><EFBFBD>嚗?
|
||
|
||
### 5.1 <20><>遣Docker<65>𨅯<EFBFBD>嚗?5<><35><EFBFBD>嚗?
|
||
|
||
#### 餈𥕦<E9A488><F0A595A6>桀<EFBFBD>
|
||
|
||
```bash
|
||
cd AIclinicalresearch/frontend-v2
|
||
```
|
||
|
||
#### 璉<><E79289>亙<EFBFBD><E4BA99>格<EFBFBD>隞?
|
||
|
||
**1. Dockerfile**嚗<><E59A97><EFBFBD>嗆挾<E59786><E68CBE>遣嚗㚁<E59A97>
|
||
```dockerfile
|
||
# 蝚砌<E89D9A><E7A08C>嗆挾嚗𡁏<E59A97>撱摧eact摨𠉛鍂
|
||
FROM node:22-alpine AS builder
|
||
WORKDIR /app
|
||
COPY package*.json ./
|
||
RUN npm ci
|
||
COPY . .
|
||
RUN npm run build
|
||
|
||
# 蝚砌<E89D9A><E7A08C>嗆挾嚗鐭ginx<6E>条恣
|
||
FROM nginx:alpine
|
||
COPY --from=builder /app/dist /usr/share/nginx/html
|
||
COPY nginx.conf /etc/nginx/templates/nginx.conf.template
|
||
COPY docker-entrypoint.sh /docker-entrypoint.sh
|
||
RUN chmod +x /docker-entrypoint.sh
|
||
EXPOSE 80
|
||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||
```
|
||
|
||
**2. docker-entrypoint.sh**嚗<>𢆡<EFBFBD><F0A286A1><EFBFBD>蝵殷<E89DB5>嚗?
|
||
```bash
|
||
#!/bin/bash
|
||
set -e
|
||
|
||
# <20>𩤃<EFBFBD> 璉<><E79289>亙<EFBFBD><E4BA99><EFBFBD><EFBFBD><EFBFBD>㴓憓<E3B493><E68693><EFBFBD>?
|
||
if [ -z "$BACKEND_SERVICE_HOST" ]; then
|
||
echo "<22>?ERROR: BACKEND_SERVICE_HOST environment variable is required!"
|
||
exit 1
|
||
fi
|
||
|
||
if [ -z "$BACKEND_SERVICE_PORT" ]; then
|
||
export BACKEND_SERVICE_PORT=3001 # 暺䁅恕<E48185>?
|
||
fi
|
||
|
||
# 雿輻鍂envsubst<73>冽<EFBFBD><E586BD>𤜯<EFBFBD>a<EFBFBD>蝵?
|
||
envsubst '${BACKEND_SERVICE_HOST} ${BACKEND_SERVICE_PORT}' \
|
||
< /etc/nginx/templates/nginx.conf.template \
|
||
> /etc/nginx/nginx.conf
|
||
|
||
# <20>臬𢆡Nginx
|
||
exec nginx -g 'daemon off;'
|
||
```
|
||
|
||
**3. nginx.conf**嚗<>蝙<EFBFBD>典<EFBFBD><E585B8>誩<EFBFBD>雿滨泵嚗㚁<E59A97>
|
||
```nginx
|
||
upstream backend {
|
||
server ${BACKEND_SERVICE_HOST}:${BACKEND_SERVICE_PORT} fail_timeout=30s max_fails=3;
|
||
keepalive 32;
|
||
}
|
||
|
||
server {
|
||
listen 80;
|
||
root /usr/share/nginx/html;
|
||
|
||
# API<50>滚<EFBFBD>隞<EFBFBD><E99A9E>
|
||
location /api/ {
|
||
proxy_pass http://backend;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
# ...
|
||
}
|
||
|
||
# SPA頝舐眏<E88890>舀<EFBFBD>
|
||
location / {
|
||
try_files $uri $uri/ /index.html;
|
||
}
|
||
}
|
||
```
|
||
|
||
#### <20><>遣<EFBFBD>𨅯<EFBFBD>
|
||
|
||
```bash
|
||
# <20><>遣<EFBFBD>𨅯<EFBFBD>
|
||
docker build -t ai-clinical_frontend-nginx:v1.0 .
|
||
|
||
# 蝑匧<E89D91><E58CA7><EFBFBD>遣摰峕<E691B0>嚗<EFBFBD>漲10<31><30><EFBFBD>嚗?
|
||
# 蝚砌<E89D9A><E7A08C>嗆挾隡𡁏<E99AA1>撱摧eact摨𠉛鍂嚗𣬚洵鈭屸𧫴畾菜<E795BE><E88F9C><EFBFBD><EFBFBD>Nginx
|
||
```
|
||
|
||
#### <20>砍𧑐瘚贝<E7989A>
|
||
|
||
```bash
|
||
# 餈鞱<E9A488>摰孵膥
|
||
docker run -d -p 3000:80 \
|
||
-e BACKEND_SERVICE_HOST=host.docker.internal \
|
||
-e BACKEND_SERVICE_PORT=3001 \
|
||
--name frontend-test \
|
||
ai-clinical_frontend-nginx:v1.0
|
||
|
||
# 霈輸䔮<E8BCB8>滨垢
|
||
open http://localhost:3000
|
||
# <20>?
|
||
curl http://localhost:3000
|
||
|
||
# <20>𨀣迫摰孵膥
|
||
docker stop frontend-test
|
||
docker rm frontend-test
|
||
```
|
||
|
||
#### <20>券<EFBFBD><E588B8><EFBFBD>ACR
|
||
|
||
```bash
|
||
# <20>𤘪<EFBFBD>蝑?
|
||
docker tag ai-clinical_frontend-nginx:v1.0 \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0
|
||
|
||
# <20>券<EFBFBD><E588B8><EFBFBD><EFBFBD>?
|
||
docker push \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0
|
||
|
||
# 蝑匧<E89D91><E58CA7>券<EFBFBD><E588B8><EFBFBD><EFBFBD>琜<EFBFBD>蝥?<3F><><EFBFBD>嚗屸<E59A97><E5B1B8>讐漲50MB嚗?
|
||
```
|
||
|
||
---
|
||
|
||
### 5.2 <20>函蔡<E587BD>訕AE嚗?5<><35><EFBFBD>嚗?
|
||
|
||
**<EFBFBD>餃<EFBFBD>SAE<EFBFBD>批<EFBFBD><EFBFBD>?*嚗冴ttps://sae.console.aliyun.com/
|
||
|
||
#### <20>𥕦遣摨𠉛鍂
|
||
|
||
1. <20>孵稬<E5ADB5>𣂼<EFBFBD>撱箏<E692B1><E7AE8F>具<EFBFBD>?
|
||
2. 摨𠉛鍂<F0A0899B>箸𧋦靽⊥<E99DBD>嚗?
|
||
```yaml
|
||
摨𠉛鍂<F0A0899B>滨妍: frontend-nginx-service
|
||
<20>賢<EFBFBD>蝛粹𡢿: cn-beijing:test-airesearch
|
||
|
||
# 摰硺<E691B0>閫<EFBFBD>聢
|
||
CPU: 0.5<EFBFBD>?
|
||
<20><><EFBFBD>: 1GB
|
||
摰硺<E691B0><E7A1BA>? 1
|
||
```
|
||
|
||
3. <20>㗇𥋘<E39787>𨅯<EFBFBD>嚗?
|
||
```yaml
|
||
<20>𨅯<EFBFBD>蝐餃<E89D90>: 摰孵膥<E5ADB5>𨅯<EFBFBD><F0A885AF>滚𦛚隡<F0A69B9A><E99AA1><EFBFBD>?銝芯犖<E88AAF>?
|
||
<20>啣<EFBFBD>: <20>𤾸<EFBFBD>2嚗<32><E59A97>鈭穿<E988AD>
|
||
<20>賢<EFBFBD>蝛粹𡢿: ai-clinical
|
||
隞枏<E99A9E>: ai-clinical_frontend-nginx
|
||
<20>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦: v1.0
|
||
|
||
# <20>𨅯<EFBFBD>霈輸䔮<E8BCB8>剛<EFBFBD>
|
||
<20>冽<EFBFBD><E586BD>? gofeng117@163.com
|
||
撖<><E69296>: fengzhibo117
|
||
```
|
||
|
||
4. 摨𠉛鍂<F0A0899B>滨蔭嚗?
|
||
```yaml
|
||
# <20>臬𢆡<E887AC>賭誘
|
||
<20>臬𢆡<E887AC>賭誘: <20>嗵征嚗<E5BE81>蝙<EFBFBD>汞NTRYPOINT嚗?
|
||
|
||
# 蝡臬藁<E887AC>滨蔭
|
||
摰孵膥蝡臬藁: 80
|
||
<20>讛悅: TCP
|
||
```
|
||
|
||
5. <20>臬<EFBFBD><E887AC>㗛<EFBFBD>嚗<EFBFBD><E59A97>儭?<3F>喲睸<E596B2>滨蔭嚗㚁<E59A97>
|
||
```bash
|
||
BACKEND_SERVICE_HOST=172.17.173.73 # Node.js<6A>𡒊垢<F0A1928A><E59EA2><EFBFBD>IP
|
||
BACKEND_SERVICE_PORT=3001
|
||
```
|
||
|
||
6. 蝵𤑳<E89DB5><F0A491B3>滨蔭嚗?
|
||
```yaml
|
||
VPC: ai-clinical-vpc
|
||
鈭斗揢<E69697>? ai-clinical-vsw-f
|
||
摰匧<E691B0>蝏? ai-clinical-sg
|
||
```
|
||
|
||
7. <20>亙熒璉<E78692><E79289>伐<EFBFBD>
|
||
```yaml
|
||
# 摮䀹暑璉<E69A91><E79289>?
|
||
璉<><E79289>交䲮撘? HTTP
|
||
璉<><E79289>亥楝敺? /health
|
||
蝡臬藁: 80
|
||
<20>嘥<EFBFBD>撱嗉<E692B1>: 10蝘?
|
||
璉<><E79289>仿𡢿<E4BBBF>? 10蝘?
|
||
|
||
# 撠梁貌璉<E8B28C><E79289>?
|
||
璉<><E79289>交䲮撘? HTTP
|
||
璉<><E79289>亥楝敺? /health
|
||
蝡臬藁: 80
|
||
<20>嘥<EFBFBD>撱嗉<E692B1>: 5蝘?
|
||
```
|
||
|
||
8. <20>孵稬<E5ADB5>鞟&霈文<E99C88>撱箝<E692B1>?
|
||
|
||
#### 蝑匧<E89D91><E58CA7>函蔡摰峕<E691B0>
|
||
|
||
- <20>亦<EFBFBD><E4BAA6>𣂼<EFBFBD>靘钅<E99D98>蝵脯<E89DB5>煾△<E785BE>?
|
||
- <20>嗆<EFBFBD><E59786><EFBFBD>銝箝<E98A9D>𪊟unning<6E>𡢅<EFBFBD>蝥?<3F><><EFBFBD>嚗?
|
||
- 霈啣<E99C88><E595A3><EFBFBD><EFBFBD><EFBFBD>啣<EFBFBD>嚗䫤http://172.17.173.72:80`
|
||
|
||
#### 撉諹<E69289><E8ABB9>函蔡
|
||
|
||
<EFBFBD>亦<EFBFBD><EFBFBD>亙<EFBFBD>嚗?
|
||
|
||
```bash
|
||
# <20>?摨磰砲<E7A3B0>见<EFBFBD>嚗?
|
||
============================================
|
||
Starting Frontend Nginx Service
|
||
Backend Service: 172.17.173.73:3001
|
||
============================================
|
||
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
|
||
nginx: configuration file /etc/nginx/nginx.conf test is successful
|
||
```
|
||
|
||
---
|
||
|
||
## <20><> <20>准<EFBFBD><E58786>LB韐蠘蝸<E8A098><E89DB8>﹛<EFBFBD>滨蔭嚗?0<><30><EFBFBD>嚗?
|
||
|
||
### 6.1 <20>滨蔭<E6BBA8>祉<EFBFBD>霈輸䔮
|
||
|
||
**<EFBFBD>孵<EFBFBD>1嚗锭AE<EFBFBD>芸𢆡<EFBFBD>𥕦遣CLB嚗<EFBFBD>綫<EFBFBD>琜<EFBFBD>**
|
||
|
||
1. 餈𥕦<E9A488>SAE摨𠉛鍂嚗䫤frontend-nginx-service`
|
||
2. <20>孵稬<E5ADB5>𣂼<EFBFBD>蝵𤏸挪<F0A48FB8>柴<EFBFBD>烐<EFBFBD><E78390>鞱挪<E99EB1>桅<EFBFBD>蝵柴<E89DB5>騻ab
|
||
3. <20>孵稬<E5ADB5>鞉溶<E99E89>惩<EFBFBD>蝵𤏸挪<F0A48FB8>柴<EFBFBD>?
|
||
4. <20>滨蔭<E6BBA8><E894AD>㺭嚗?
|
||
```yaml
|
||
韐蠘蝸<E8A098><E89DB8>﹛蝐餃<E89D90>: <20>祉<EFBFBD>
|
||
韐蠘蝸<E8A098><E89DB8>﹛鈭批<E988AD>: CLB (隡删<E99AA1><E588A0>贝<EFBFBD>頧賢<E9A0A7>銵?
|
||
隞䁅晶璅∪<E79285>: <20>厰<EFBFBD>隞䁅晶
|
||
|
||
# <20>穃𨯬<E7A983>滨蔭
|
||
<20>讛悅: HTTP
|
||
蝡臬藁: 80
|
||
<20>𡒊垢蝡臬藁: 80
|
||
|
||
# <20>亙熒璉<E78692><E79289>?
|
||
<20>亙熒璉<E78692><E79289>? <20>舐鍂
|
||
璉<><E79289>亥楝敺? /health
|
||
```
|
||
5. <20>孵稬<E5ADB5>鞟&摰𠾼<E691B0>?
|
||
6. 蝑匧<E89D91>2-3<><33><EFBFBD>嚗諹䌊<E8ABB9>典<EFBFBD><E585B8>滚<EFBFBD>蝵飡P
|
||
|
||
**<2A>孵<EFBFBD>2嚗𡁏<E59A97><F0A1818F>典<EFBFBD>撱慢LB**
|
||
|
||
1. <20>餃<EFBFBD>CLB<4C>批<EFBFBD><E689B9>堆<EFBFBD>https://slb.console.aliyun.com/
|
||
2. <20>𥕦遣韐蠘蝸<E8A098><E89DB8>﹛摰硺<E691B0>
|
||
3. <20>滨蔭<E6BBA8>穃𨯬<E7A983>剁<EFBFBD>HTTP:80嚗?
|
||
4. 瘛餃<E7989B><E9A483>𡒊垢<F0A1928A>滚𦛚<E6BB9A>剁<EFBFBD><E58981>滨垢Nginx<6E><78><EFBFBD>蝵飡P嚗?
|
||
5. <20>滨蔭<E6BBA8>亙熒璉<E78692><E79289>?
|
||
|
||
### 6.2 <20>瑕<EFBFBD><E79195>祉<EFBFBD><E7A589>啣<EFBFBD>
|
||
|
||
- <20>沒AE摨𠉛鍂霂行<E99C82>憿菜䰻<E88F9C>卝<EFBFBD>𣂼<EFBFBD>蝵𤏸挪<F0A48FB8>桀𧑐<E6A180><F0A79190><EFBFBD>?
|
||
- 蝷箔<E89DB7>嚗䫤http://8.140.53.236/`
|
||
- 憭滚<E686AD>甇文𧑐<E69687><F0A79190><EFBFBD>其<EFBFBD>瘚贝<E7989A>
|
||
|
||
---
|
||
|
||
## <20>?銝<><E98A9D><EFBFBD><EFBFBD><EFBFBD>湧曎頝舀<E9A09D>霂𤏪<E99C82>30<33><30><EFBFBD>嚗?
|
||
|
||
### 7.1 <20>箇<EFBFBD><E7AE87>蠘<EFBFBD>瘚贝<E7989A>
|
||
|
||
#### 瘚贝<E7989A>1嚗𡁜<E59A97>蝡舫△<E888AB>Z挪<EFBCBA>?
|
||
|
||
```bash
|
||
# 瘚讛<E7989A><E8AE9B>刻挪<E588BB>?
|
||
http://8.140.53.236/
|
||
|
||
# 摨磰砲<E7A3B0>见<EFBFBD>嚗?
|
||
<EFBFBD>?React摨𠉛鍂甇<E98D82>虜<EFBFBD>㰘蝸
|
||
<EFBFBD>?憿菟𢒰<E88F9F>瑕<EFBFBD>甇<EFBFBD>虜
|
||
<EFBFBD>?瘝⊥<E7989D>CORS<52>躰秤
|
||
```
|
||
|
||
#### 瘚贝<E7989A>2嚗𡁜<E59A97>摨瑟<E691A8><E7919F>?
|
||
|
||
```bash
|
||
# <20>𡒊垢<F0A1928A>亙熒璉<E78692><E79289>伐<EFBFBD><E4BC90>朞<EFBFBD><E69C9E>滨垢隞<E59EA2><E99A9E>嚗?
|
||
curl http://8.140.53.236/api/v1/health
|
||
# <20>?
|
||
curl http://172.17.173.73:3001/health
|
||
|
||
# 摨磰砲餈𥪜<E9A488>嚗?
|
||
{
|
||
"status": "ok",
|
||
"timestamp": "...",
|
||
"services": {
|
||
"database": "connected",
|
||
"cache": "available",
|
||
"queue": "running"
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 瘚贝<E7989A>3嚗䥪ython<6F>滚𦛚餈墧𦻖
|
||
|
||
```bash
|
||
# <20>湔𦻖瘚贝<E7989A>Python<6F>滚𦛚
|
||
curl http://172.17.173.66:8000/api/health
|
||
|
||
# 摨磰砲餈𥪜<E9A488>嚗?
|
||
{
|
||
"status": "healthy",
|
||
"checks": {
|
||
"pymupdf": {"available": true, "version": "1.26.7"},
|
||
...
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 7.2 銝𡁜𦛚<F0A1819C>蠘<EFBFBD>瘚贝<E7989A>
|
||
|
||
#### 瘚贝<E7989A>1嚗𡁶鍂<F0A181B6>瑞蒈敶?
|
||
|
||
1. 霈輸䔮 http://8.140.53.236/
|
||
2. 颲枏<E9A2B2><E69E8F>冽<EFBFBD><E586BD>滚<EFBFBD><E6BB9A>?
|
||
3. <20>孵稬<E5ADB5>餃<EFBFBD>
|
||
4. <20>亦<EFBFBD>瘚讛<E7989A><E8AE9B>沐etwork<72>X踎嚗?
|
||
```
|
||
Request URL: http://8.140.53.236/api/v1/auth/login
|
||
Status: 200 OK <20>?
|
||
Response: { "token": "...", "user": {...} }
|
||
```
|
||
|
||
#### 瘚贝<E7989A>2嚗𡁏㺭<F0A1818F>格<EFBFBD>瘣埈芋<E59F88>梹<EFBFBD>撌亙<E6928C>C嚗?
|
||
|
||
1. 餈𥕦<E9A488><F0A595A6>鞉㺭<E99E89>格<EFBFBD>瘣𨰜<E798A3>爗<EFBFBD> <20>𣂼極<F0A382BC>嵩<EFBFBD>?
|
||
2. 銝𠹺<E98A9D>Excel<65><6C>辣
|
||
3. 撉諹<E69289>銝𠹺<E98A9D><F0A0B9BA>𣂼<EFBFBD>
|
||
4. 瘚贝<E7989A>7憭批<E686AD><E689B9>賭<EFBFBD>銝<EFBFBD>嚗<EFBFBD><E59A97>嚗𡁏㺭<F0A1818F>潭<EFBFBD>撠<EFBFBD><E692A0>嚗?
|
||
- <20>㗇𥋘<E39787>?
|
||
- <20>滨蔭<E6BBA8>惩<EFBFBD>閫<EFBFBD><E996AB>
|
||
- <20>孵稬<E5ADB5>鞉<EFBFBD>銵峕<E98AB5>撠<EFBFBD><E692A0>?
|
||
- <20>亦<EFBFBD>蝏𤘪<E89D8F>
|
||
|
||
**<2A>喲睸撉諹<E69289>**嚗?
|
||
```
|
||
瘚讛<EFBFBD><EFBFBD>沐etwork<EFBFBD>X踎嚗?
|
||
POST http://8.140.53.236/api/v1/dc/tool-c/quick-action
|
||
Status: 200 OK <20>?
|
||
|
||
<EFBFBD>𡒊垢<EFBFBD>亙<EFBFBD>嚗?
|
||
[QuickActionService] 靚<>鍂<EFBFBD>滨<EFBFBD><E6BBA8><EFBFBD>PI: <20>批<EFBFBD>
|
||
PythonExecutorService initialized: http://172.17.173.66:8000 <20>?
|
||
[QuickActionService] <20>滨<EFBFBD><E6BBA8><EFBFBD><EFBFBD><EFBFBD>?<3F>?
|
||
```
|
||
|
||
#### 瘚贝<E7989A>3嚗𡁏<E59A97><F0A1818F>桃<EFBFBD><E6A183>交芋<E4BAA4>梹<EFBFBD>ASL嚗?
|
||
|
||
1. 餈𥕦<E9A488><F0A595A6>鞉<EFBFBD><E99E89>桃<EFBFBD><E6A183>乓<EFBFBD>烐芋<E78390>?
|
||
2. <20>𥕦遣憿寧𤌍
|
||
3. 銝𠹺<E98A9D><F0A0B9BA><EFBFBD>讃
|
||
4. <20>扯<EFBFBD><E689AF>箄<EFBFBD>蝑𥟇䰻
|
||
5. 撉諹<E69289>蝏𤘪<E89D8F>
|
||
|
||
---
|
||
|
||
### 7.3 <20>扯<EFBFBD>瘚贝<E7989A>
|
||
|
||
#### <20>滚<EFBFBD><E6BB9A>園𡢿璉<F0A1A2BF><E79289>?
|
||
|
||
```bash
|
||
# 雿輻鍂curl瘚贝<E7989A><E8B49D>滚<EFBFBD><E6BB9A>園𡢿
|
||
curl -w "@-" -o /dev/null -s http://8.140.53.236/ <<'EOF'
|
||
time_namelookup: %{time_namelookup}\n
|
||
time_connect: %{time_connect}\n
|
||
time_appconnect: %{time_appconnect}\n
|
||
time_pretransfer: %{time_pretransfer}\n
|
||
time_redirect: %{time_redirect}\n
|
||
time_starttransfer: %{time_starttransfer}\n
|
||
----------\n
|
||
time_total: %{time_total}\n
|
||
EOF
|
||
|
||
# <20><><EFBFBD>蝏𤘪<E89D8F>嚗?
|
||
# time_total < 1蝘𡜐<E89D98>擐𡝗活霈輸䔮嚗?
|
||
# time_total < 0.3蝘𡜐<EFBFBD><EFBFBD>𡒊賒霈輸䔮嚗?
|
||
```
|
||
|
||
---
|
||
|
||
## <20><> <20>怒<EFBFBD><E68092><EFBFBD>蝵脫<E89DB5><E884AB>𨀣<EFBFBD>餌<EFBFBD>
|
||
|
||
### 8.1 撌脤<E6928C>蝵脫<E89DB5><E884AB>⊥<EFBFBD><E28AA5>?
|
||
|
||
| <20>滚𦛚 | <20>嗆<EFBFBD>?| <20><><EFBFBD><EFBFBD>啣<EFBFBD> | <20>祉<EFBFBD>霈輸䔮 |
|
||
|------|------|---------|---------|
|
||
| RDS PostgreSQL | <20>?| pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432 | <20>?|
|
||
| Python敺格<E695BA><E6A0BC>?| <20>?| 172.17.173.66:8000 | <20>?|
|
||
| Node.js<6A>𡒊垢 | <20>?| 172.17.173.73:3001 | <20>?|
|
||
| <20>滨垢Nginx | <20>?| 172.17.173.72:80 | <20>?|
|
||
| CLB韐蠘蝸<E8A098><E89DB8>﹛ | <20>?| - | http://8.140.53.236/ |
|
||
|
||
### 8.2 <20>喲睸<E596B2>滨蔭<E6BBA8><E894AD>䰻
|
||
|
||
#### Python敺格<E695BA><E6A0BC>∠㴓憓<E3B493><E68693><EFBFBD>?
|
||
```bash
|
||
LOG_LEVEL=INFO
|
||
TEMP_DIR=/tmp/extraction_service
|
||
```
|
||
|
||
#### Node.js<6A>𡒊垢<F0A1928A>喲睸<E596B2>臬<EFBFBD><E887AC>㗛<EFBFBD>
|
||
```bash
|
||
NODE_ENV=production
|
||
PORT=3001
|
||
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research
|
||
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000 # <20>𩤃<EFBFBD> <20>喲睸嚗<E79DB8><E59A97><EFBFBD>烈YTHON_SERVICE_URL
|
||
```
|
||
|
||
#### <20>滨垢Nginx<6E>喲睸<E596B2>臬<EFBFBD><E887AC>㗛<EFBFBD>
|
||
```bash
|
||
BACKEND_SERVICE_HOST=172.17.173.73 # Node.js<6A>𡒊垢<F0A1928A><E59EA2><EFBFBD>IP
|
||
BACKEND_SERVICE_PORT=3001
|
||
```
|
||
|
||
---
|
||
|
||
## <20>𩤃<EFBFBD> 銋腈<E98A8B><E88588><EFBFBD><EFBFBD>桃<EFBFBD>撉䔶<E69289>瘜冽<E7989C>鈭钅★
|
||
|
||
### 9.1 <20>臬<EFBFBD><E887AC>㗛<EFBFBD><E3979B>滚<EFBFBD>憿餌移蝖?
|
||
|
||
**<2A>桅<EFBFBD>**嚗𡁜極<F0A1819C>嵩<EFBFBD>?憭批<E686AD><E689B9>賢<EFBFBD><E8B3A2>冽𥁒<E586BD>?
|
||
```
|
||
connect ECONNREFUSED 127.0.0.1:8000
|
||
```
|
||
|
||
**<2A>笔<EFBFBD>**嚗鐭ode.js隞<73><E99A9E>雿輻鍂 `EXTRACTION_SERVICE_URL`嚗䔶<E59A97>SAE<41>滨蔭鈭?`PYTHON_SERVICE_URL`
|
||
|
||
**閫<><E996AB>**嚗?
|
||
```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>銝<EFBFBD>銝芸<E98A9D>瘥漤<E798A5>銝滩<E98A9D><E6BBA9>辷<EFBFBD>
|
||
|
||
---
|
||
|
||
### 9.2 "<22>滚鍳摨𠉛鍂" vs "<22>函蔡摨𠉛鍂"
|
||
|
||
**<2A>桅<EFBFBD>**嚗𡁶<E59A97><F0A181B6>?<3F>函蔡摨𠉛鍂"撖潸稲IP<49>啣<EFBFBD><E595A3>䀹凒
|
||
|
||
| <20>滢<EFBFBD> | <20>券<EFBFBD>?| IP<49>臬炏<E887AC>?| 雿閙𧒄雿輻鍂 |
|
||
|------|------|---------|---------|
|
||
| **<2A>滚鍳摨𠉛鍂** | <20>滚鍳摰孵膥 | <20>?銝滢<E98A9D> | 靽格㺿<E6A0BC>臬<EFBFBD><E887AC>㗛<EFBFBD><E3979B>?|
|
||
| **<2A>函蔡摨𠉛鍂** | <20>湔鰵<E6B994>𨅯<EFBFBD> | <20>?隡𡁜<E99AA1> | <20>湔鰵隞<E9B0B5><E99A9E>/<2F>𨅯<EFBFBD><F0A885AF>?|
|
||
|
||
**<2A>躰悌**嚗?
|
||
- <20>芯耨<E88AAF>寧㴓憓<E3B493><E68693><EFBFBD>?<3F>?<3F>?<3F>滚鍳摨𠉛鍂"
|
||
- <20>湔鰵隞<E9B0B5><E99A9E>/<2F>𨅯<EFBFBD> <20>?<3F>?<3F>函蔡摨𠉛鍂"
|
||
|
||
---
|
||
|
||
### 9.3 Dockerfile敹<65>◆<EFBFBD><E29786>鉄config<69>桀<EFBFBD>
|
||
|
||
**<2A>桅<EFBFBD>**嚗?
|
||
```
|
||
ENOENT: no such file or directory, open '/app/config/agents.yaml'
|
||
```
|
||
|
||
**閫<><E996AB>**嚗?
|
||
```dockerfile
|
||
# <20>?敹<>◆瘛餃<E7989B>
|
||
COPY config ./config
|
||
```
|
||
|
||
---
|
||
|
||
### 9.4 pino-pretty隞<79>鍂鈭𤾸<E988AD><F0A4BEB8>𤑳㴓憓?
|
||
|
||
**<2A>桅<EFBFBD>**嚗?
|
||
```
|
||
Error: unable to determine transport target for "pino-pretty"
|
||
```
|
||
|
||
**<2A>笔<EFBFBD>**嚗䫤pino-pretty`<EFBFBD>留evDependencies嚗𣬚<EFBFBD>鈭抒㴓憓<EFBFBD>瓷<EFBFBD>匧<EFBFBD>鋆?
|
||
|
||
**閫<><E996AB>**嚗𡁏辺隞嗅ế<E59785>剔㴓憓?
|
||
```typescript
|
||
logger: config.nodeEnv === 'production'
|
||
? { level: config.logLevel }
|
||
: { level: config.logLevel, transport: { target: 'pino-pretty', ... } }
|
||
```
|
||
|
||
---
|
||
|
||
### 9.5 ES Module<6C>澆捆<E6BE86>?
|
||
|
||
**<EFBFBD>桅<EFBFBD>**嚗?
|
||
```
|
||
ReferenceError: require is not defined in ES module
|
||
```
|
||
|
||
**閫<><E996AB>**嚗?
|
||
```typescript
|
||
// <20>?<3F>躰秤
|
||
require('os').loadavg()
|
||
|
||
// <20>?甇<>&
|
||
import os from 'os';
|
||
os.loadavg()
|
||
```
|
||
|
||
---
|
||
|
||
### 9.6 Alpine Linux瘝⊥<E7989D>bash
|
||
|
||
**<EFBFBD>桅<EFBFBD>**嚗?
|
||
```
|
||
executable '/bin/bash' not found in $PATH
|
||
```
|
||
|
||
**閫<><E996AB>**嚗?
|
||
- SAE<41>臬𢆡<E887AC>賭誘<E8B3AD>嗵征
|
||
- <20>碶蝙<E7A2B6>?`/bin/sh` 隞<>𤜯
|
||
|
||
---
|
||
|
||
### 9.7 <20>唳旿摨𡤃RL銝剔<E98A9D>@蝚血噡
|
||
|
||
**<EFBFBD>澆<EFBFBD>**嚗?
|
||
```bash
|
||
# <20>?甇<>&嚗㇎RL蝻𣇉<E89DBB>嚗?
|
||
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-xxx.pg.rds.aliyuncs.com:5432/ai_clinical_research
|
||
|
||
# <20>?<3F>躰秤嚗<E7A7A4>𧊋蝻𣇉<E89DBB>嚗?
|
||
DATABASE_URL=postgresql://airesearch:Xibahe@fengzhibo117@pgm-xxx.pg.rds.aliyuncs.com:5432/ai_clinical_research
|
||
```
|
||
|
||
**閫<><E996AB>**嚗𡁜<E59A97><F0A1819C><EFBFBD>葉<EFBFBD>?`@` 敹<>◆蝻𣇉<E89DBB>銝?`%40`
|
||
|
||
---
|
||
|
||
### 9.8 雿輻鍂VPC<50>𨅯<EFBFBD><F0A885AF>啣<EFBFBD>嚗𠄎AE<41>匧<EFBFBD>嚗?
|
||
|
||
**SAE<41>函蔡<E587BD>園<EFBFBD>㗇𥋘<E39787>𨅯<EFBFBD>**嚗?
|
||
```bash
|
||
# <20>?甇<>&嚗ĀPC<50>啣<EFBFBD>嚗<EFBFBD><E59A97>瘚<EFBFBD><E7989A>韐對<E99F90>
|
||
crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||
|
||
# <20>?銝齿綫<E9BDBF>琜<EFBFBD><E7909C>祉<EFBFBD><E7A589>啣<EFBFBD>嚗峕𤣰瘚<F0A4A3B0><E7989A>韐對<E99F90>
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||
```
|
||
|
||
**閫<><E996AB>**嚗?
|
||
- <20>砍𧑐<E7A08D>券<EFBFBD><E588B8><EFBFBD><EFBFBD>?<3F>?雿輻鍂<E8BCBB>祉<EFBFBD><E7A589>啣<EFBFBD>
|
||
- SAE<41>匧<EFBFBD><E58CA7>𨅯<EFBFBD> <20>?雿輻鍂VPC<50>啣<EFBFBD>
|
||
|
||
---
|
||
|
||
### 9.9 <20>亙熒璉<E78692><E79289>亙<EFBFBD>憪见辣餈?
|
||
|
||
**銝滚<E98A9D><E6BB9A>滚𦛚<E6BB9A><F0A69B9A>鍳<EFBFBD>冽𧒄<E586BD>?*嚗?
|
||
|
||
| <20>滚𦛚 | <20>臬𢆡<E887AC>園𡢿 | <20>嘥<EFBFBD>撱嗉<E692B1>撱箄悅 |
|
||
|------|---------|-------------|
|
||
| Python敺格<E695BA><E6A0BC>?| 10蝘?| 30蝘?|
|
||
| Node.js<6A>𡒊垢 | 30蝘?| 60蝘?|
|
||
| <20>滨垢Nginx | 5蝘?| 10蝘?|
|
||
|
||
**<EFBFBD>躰悌**嚗鐭ode.js<6A>臬𢆡颲<F0A286A1><E9A2B2>嚗屸<E59A97>閬<EFBFBD>凒<EFBFBD>輻<EFBFBD><E8BCBB>嘥<EFBFBD>撱嗉<E692B1>
|
||
|
||
---
|
||
|
||
### 9.10 <20>滨垢<E6BBA8>冽<EFBFBD><E586BD><EFBFBD>蝵桀<E89DB5>蝡臬𧑐<E887AC><F0A79190>
|
||
|
||
**<EFBFBD>嗆<EFBFBD>隡睃飵**嚗?
|
||
- <20>滨垢雿輻鍂<E8BCBB>臬<EFBFBD><E887AC>㗛<EFBFBD> `BACKEND_SERVICE_HOST`
|
||
- <20>朞<EFBFBD> `envsubst` <20>典捆<E585B8>典鍳<E585B8>冽𧒄<E586BD>冽<EFBFBD><E586BD>釣<EFBFBD>?
|
||
- <20>𡒊垢IP<49>䀹凒<E480B9>塚<EFBFBD><E5A19A>芷<EFBFBD><E88AB7>滚鍳<E6BB9A>滨垢摨𠉛鍂嚗峕<E59A97><E5B395><EFBFBD><EFBFBD>齿鰵<E9BDBF><E9B0B5>遣<EFBFBD>𨅯<EFBFBD>
|
||
|
||
**<EFBFBD>喲睸<EFBFBD><EFBFBD>辣**嚗?
|
||
- `docker-entrypoint.sh`嚗𡁜𢆡<EFBFBD><EFBFBD>𤜯<EFBFBD>a<EFBFBD>蝵?
|
||
- `nginx.conf`嚗帋蝙<EFBFBD>?`${BACKEND_SERVICE_HOST}` <20>牐<EFBFBD>蝚?
|
||
|
||
---
|
||
|
||
## <20><> <20><><EFBFBD><EFBFBD>𧊋<EFBFBD>乩<EFBFBD><E4B9A9>硋遣霈?
|
||
|
||
### 10.1 雿輻鍂<E8BCBB>滚𦛚<E6BB9A>𤑳緵隞<E7B7B5>𤜯IP<49>啣<EFBFBD>
|
||
|
||
**敶枏<E695B6><E69E8F>滨蔭**嚗<>蝙<EFBFBD>沉P嚗㚁<E59A97>
|
||
```bash
|
||
BACKEND_SERVICE_HOST=172.17.173.73
|
||
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
|
||
```
|
||
|
||
**隡睃<E99AA1><E79D83>寞<EFBFBD>**嚗<>蝙<EFBFBD>冽<EFBFBD><E586BD>∪<EFBFBD>嚗㚁<E59A97>
|
||
```bash
|
||
BACKEND_SERVICE_HOST=nodejs-backend-test.cn-beijing:test-airesearch.svc.cluster.local
|
||
EXTRACTION_SERVICE_URL=http://python-extraction-test.cn-beijing:test-airesearch.svc.cluster.local:8000
|
||
```
|
||
|
||
**隡条<E99AA1>**嚗?
|
||
- <20>?IP<49>䀹凒銝滚蔣<E6BB9A>漤<EFBFBD>帋縑
|
||
- <20>?<3F>芸𢆡韐蠘蝸<E8A098><E89DB8>﹛
|
||
- <20>?<3F>渡迅摰𡁜虾<F0A1819C>?
|
||
|
||
---
|
||
|
||
### 10.2 <20>滨蔭HTTPS
|
||
|
||
**甇仿炊**嚗?
|
||
1. <20>唾窈<E594BE>笔<EFBFBD>
|
||
2. <20>唾窈SSL霂<4C>髡嚗<E9ABA1>燵<EFBFBD>䔶<EFBFBD><E494B6>滩晶霂<E699B6>髡<EFBFBD>譩et's Encrypt嚗?
|
||
3. <20>每LB<4C>滨蔭HTTPS<50>穃𨯬嚗<F0A8AFAC>垢<EFBFBD>?43嚗?
|
||
4. 銝𠹺<E98A9D>SSL霂<4C>髡
|
||
5. <20>滨蔭HTTP<54>芸𢆡頝唾蓮HTTPS
|
||
|
||
---
|
||
|
||
### 10.3 <20>滨蔭<E6BBA8>芸𢆡<E88AB8>拍憬摰?
|
||
|
||
**SAE撘寞<E69298>找撓蝻?*嚗?
|
||
```yaml
|
||
# <20>寞旿CPU雿輻鍂<E8BCBB><E98D82>䌊<EFBFBD>冽<EFBFBD>蝻拙捆
|
||
<EFBFBD><EFBFBD>撠誩<EFBFBD>靘𧢲㺭: 1
|
||
<EFBFBD><EFBFBD>憭批<EFBFBD>靘𧢲㺭: 3
|
||
<EFBFBD>格<EFBFBD>CPU雿輻鍂<EFBFBD>? 70%
|
||
```
|
||
|
||
**<EFBFBD><EFBFBD>鍂<EFBFBD>箸艶**嚗?
|
||
- 瘚<><E7989A>瘜W𢆡憭?
|
||
- 擃睃陸<E79D83>罸<EFBFBD>閬<EFBFBD>凒憭𡁜<E686AD>靘?
|
||
- 雿𤾸陸<F0A4BEB8>蠘<EFBFBD>蝥行<E89DA5><E8A18C>?
|
||
|
||
---
|
||
|
||
### 10.4 <20>滨蔭<E6BBA8>亙<EFBFBD><E4BA99><EFBFBD><EFBFBD>
|
||
|
||
**<EFBFBD>輸<EFBFBD>鈭騌LS嚗<EFBFBD>𠯫敹埈<EFBFBD><EFBFBD>∴<EFBFBD>**嚗?
|
||
- <20>芸𢆡<E88AB8>園<EFBFBD>SAE<41>亙<EFBFBD>
|
||
- 摰墧𧒄<E5A2A7>亥砭<E4BAA5><E7A0AD><EFBFBD><EFBFBD>?
|
||
- <20>滨蔭<E6BBA8>𡃏郎閫<E9838E><E996AB>
|
||
|
||
---
|
||
|
||
### 10.5 <20>滨蔭<E6BBA8>烐綉<E78390>𡃏郎
|
||
|
||
**鈭𤑳<E988AD><F0A491B3>折<EFBFBD>蝵?*嚗?
|
||
```yaml
|
||
CPU雿輻鍂<EFBFBD>?> 80% <20>?<3F>𡃏郎
|
||
<EFBFBD><EFBFBD><EFBFBD>雿輻鍂<EFBFBD>?> 80% <20>?<3F>𡃏郎
|
||
<EFBFBD>亙熒璉<EFBFBD><EFBFBD>亙仃韐? <20>?<3F>𡃏郎
|
||
<EFBFBD>躰秤<EFBFBD>亙<EFBFBD>憓𧼮<EFBFBD> <20>?<3F>𡃏郎
|
||
```
|
||
|
||
---
|
||
|
||
## <20><> <20><><EFBFBD><EFBFBD><EFBFBD>翰<EFBFBD>笔𦶢隞文<E99A9E><E69687>?
|
||
|
||
### 11.1 Docker<65>𨅯<EFBFBD>蝞∠<E89D9E>
|
||
|
||
```bash
|
||
# <20>餃<EFBFBD>ACR
|
||
docker login --username=gofeng117@163.com \
|
||
--password=fengzhibo117 \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
|
||
|
||
# <20><>遣撟嗆綫<E59786><E7B6AB>ython<6F>𨅯<EFBFBD>
|
||
cd AIclinicalresearch/extraction_service
|
||
docker build -t python-extraction:v1.0 .
|
||
docker tag python-extraction:v1.0 \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0
|
||
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0
|
||
|
||
# <20><>遣撟嗆綫<E59786><E7B6AB>ode.js<6A>𨅯<EFBFBD>
|
||
cd ../backend
|
||
npm run build
|
||
docker build -t backend-service:v1.3 .
|
||
docker tag backend-service:v1.3 \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||
|
||
# <20><>遣撟嗆綫<E59786><E7B6AB><EFBFBD>蝡舫<E89DA1><E888AB>?
|
||
cd ../frontend-v2
|
||
docker build -t ai-clinical_frontend-nginx:v1.0 .
|
||
docker tag ai-clinical_frontend-nginx:v1.0 \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0
|
||
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0
|
||
```
|
||
|
||
---
|
||
|
||
### 11.2 <20>唳旿摨栞<E691A8><E6A09E>?
|
||
|
||
```bash
|
||
# 餈墧𦻖<E5A2A7>訌DS嚗<53>葩<EFBFBD>嗅<EFBFBD><E59785>臬<EFBFBD>蝵𡢅<E89DB5>
|
||
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" \
|
||
ai-clinical-postgres psql \
|
||
-h pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com \
|
||
-p 5432 -U airesearch -d ai_clinical_research
|
||
|
||
# <20>亦<EFBFBD>Schema<6D>𡑒”
|
||
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" \
|
||
ai-clinical-postgres psql \
|
||
-h pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com \
|
||
-p 5432 -U airesearch -d ai_clinical_research \
|
||
-c "SELECT nspname FROM pg_namespace WHERE nspname LIKE '%_schema';"
|
||
```
|
||
|
||
---
|
||
|
||
### 11.3 <20>亙熒璉<E78692><E79289>?
|
||
|
||
```bash
|
||
# Python<6F>滚𦛚
|
||
curl http://172.17.173.66:8000/api/health
|
||
|
||
# Node.js<6A>𡒊垢
|
||
curl http://172.17.173.73:3001/health
|
||
|
||
# <20>滨垢Nginx
|
||
curl http://172.17.173.72:80/health
|
||
|
||
# <20>祉<EFBFBD>霈輸䔮
|
||
curl http://8.140.53.236/
|
||
```
|
||
|
||
---
|
||
|
||
## <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵脣<E89DB5><E884A3>鞉<EFBFBD><E99E89>交<EFBFBD><E4BAA4>?
|
||
|
||
### <20><>蝏<EFBFBD><E89D8F>霂?
|
||
|
||
- [ ] <20>?Python敺格<E695BA><E6A0BC>∪<EFBFBD>摨瑟<E691A8><E7919F>仿<EFBFBD>朞<EFBFBD>
|
||
- [ ] <20>?Node.js<6A>𡒊垢<F0A1928A>亙熒璉<E78692><E79289>仿<EFBFBD>朞<EFBFBD>
|
||
- [ ] <20>?<3F>滨垢Nginx<6E>亙熒璉<E78692><E79289>仿<EFBFBD>朞<EFBFBD>
|
||
- [ ] <20>?<3F>祉<EFBFBD><E7A589>啣<EFBFBD><E595A3>臭誑霈輸䔮
|
||
- [ ] <20>?<3F>冽<EFBFBD><E586BD>臭誑甇<E8AA91>虜<EFBFBD>餃<EFBFBD>
|
||
- [ ] <20>?<3F><>讃蝑𥟇䰻<F0A59F87>蠘<EFBFBD>甇<EFBFBD>虜
|
||
- [ ] <20>?<3F>唳旿皜<E697BF><E79A9C>撌亙<E6928C>C<EFBFBD>?憭批<E686AD><E689B9>賣迤撣?
|
||
- [ ] <20>?<3F><>辣銝𠹺<E98A9D><F0A0B9BA>蠘<EFBFBD>甇<EFBFBD>虜
|
||
- [ ] <20>?AI撖寡<E69296><E5AFA1>蠘<EFBFBD>甇<EFBFBD>虜
|
||
- [ ] <20>?瘝⊥<E7989D>CORS<52>躰秤
|
||
- [ ] <20>?瘝⊥<E7989D>502/504<30>躰秤
|
||
- [ ] <20>?<3F>滚<EFBFBD><E6BB9A>園𡢿 < 1蝘?
|
||
|
||
### <20><>﹝<EFBFBD>湔鰵
|
||
|
||
- [ ] <20>湔鰵 `00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md` 銝剔<E98A9D><E58994><EFBFBD><EFBFBD>IP<49>啣<EFBFBD>
|
||
- [ ] 霈啣<E99C88><E595A3>祉<EFBFBD>霈輸䔮<E8BCB8>啣<EFBFBD>
|
||
- [ ] 霈啣<E99C88><E595A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䔮憸睃<E686B8>閫<EFBFBD><E996AB><EFBFBD>寞<EFBFBD>
|
||
- [ ] <20>湔鰵<E6B994>臬<EFBFBD><E887AC>㗛<EFBFBD>皜<EFBFBD><E79A9C>
|
||
|
||
---
|
||
|
||
## <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>舀𣈲<E88880>?
|
||
|
||
### 撣貉<E692A3><E8B289>桅<EFBFBD><E6A185>埝䰻
|
||
|
||
**<EFBFBD>桅<EFBFBD>1嚗𡁜極<EFBFBD>嵩<EFBFBD>蠘<EFBFBD><EFBFBD>仿<EFBFBD> "connect ECONNREFUSED 127.0.0.1:8000"**
|
||
- 璉<><E79289>代ode.js<6A>臬<EFBFBD><E887AC>㗛<EFBFBD> `EXTRACTION_SERVICE_URL`
|
||
- 蝖桐<E89D96><E6A190>潔蛹 `http://172.17.173.66:8000`
|
||
- <20>滚鍳Node.js摨𠉛鍂
|
||
|
||
**<EFBFBD>桅<EFBFBD>2嚗𡁜<EFBFBD>蝡航挪<EFBFBD>桀<EFBFBD>蝡舀𥁒502<EFBFBD>躰秤**
|
||
- 璉<><E79289>亙<EFBFBD>蝡舐㴓憓<E3B493><E68693><EFBFBD>?`BACKEND_SERVICE_HOST`
|
||
- 蝖桐<E89D96><E6A190>潔蛹Node.js<6A>𡒊垢<F0A1928A><E59EA2><EFBFBD>蝵飡P
|
||
- <20>滚鍳<E6BB9A>滨垢摨𠉛鍂
|
||
|
||
**<EFBFBD>桅<EFBFBD>3嚗锭AE摨𠉛鍂<EFBFBD>臬𢆡憭梯揖**
|
||
- <20>亦<EFBFBD>摰硺<E691B0><E7A1BA>亙<EFBFBD>嚗峕𪄳<E5B395>啣<EFBFBD>雿㯄<E99BBF>霂臭縑<E887AD>?
|
||
- <20><><EFBFBD><EFBFBD>𧋦<EFBFBD><F0A78BA6>﹝蝚?<3F>?<3F>喲睸蝏誯<E89D8F>銝擧釣<E693A7>譍<EFBFBD>憿?
|
||
- 撖寧<E69296>璉<EFBFBD><E79289>主ockerfile<6C>𣬚㴓憓<E3B493><E68693><EFBFBD>?
|
||
|
||
---
|
||
|
||
## <20>㴓 <20>餌<EFBFBD>
|
||
|
||
<EFBFBD>剖<EFBFBD>嚗<EFBFBD><EFBFBD>撌脩<EFBFBD>摰峕<EFBFBD>鈭<EFBFBD>I銝游<EFBFBD><EFBFBD>𠉛弦撟喳蝱<EFBFBD><EFBFBD><EFBFBD><EFBFBD>湧<EFBFBD>蝵莎<EFBFBD>
|
||
|
||
**<EFBFBD>函蔡<EFBFBD>鞉<EFBFBD>**嚗?
|
||
- <20>?4銝芣<E98A9D><E88AA3>∪<EFBFBD><E288AA>冽<EFBFBD><E586BD>罸<EFBFBD>蝵莎<E89DB5>Python<6F><6E>ode.js<6A><73><EFBFBD>蝡胯<E89DA1><E883AF>㺭<EFBFBD>桀<EFBFBD>嚗?
|
||
- <20>?<3F><><EFBFBD>匧<EFBFBD><E58CA7>賣迤撣貉<E692A3>銵?
|
||
- <20>?<3F>祉<EFBFBD><E7A589>臭誑霈輸䔮
|
||
- <20>?<3F>煺漣<E785BA>臬<EFBFBD>撠梁貌
|
||
|
||
**<EFBFBD>函蔡<EFBFBD>園𡢿**嚗?
|
||
- 憸<>恣<EFBFBD>園𡢿嚗?.5撠𤩺𧒄
|
||
- 摰鮋<E691B0><E9AE8B>園𡢿嚗𡁶漲6撠𤩺𧒄嚗<F0A79284><E59A97><EFBFBD>恍䔮憸䀹<E686B8><E480B9>伐<EFBFBD>
|
||
|
||
**<EFBFBD>喲睸蝏誯<EFBFBD>**嚗?
|
||
- <20>臬<EFBFBD><E887AC>㗛<EFBFBD><E3979B>滚<EFBFBD>憿餌移蝖桀龪<E6A180>?
|
||
- <20>箏<EFBFBD>"<22>滚鍳摨𠉛鍂"<22>?<3F>函蔡摨𠉛鍂"
|
||
- Dockerfile敹<65>◆<EFBFBD><E29786>鉄<EFBFBD><E98984><EFBFBD>匧<EFBFBD><E58CA7><EFBFBD><EFBFBD><EFBFBD>辣
|
||
- 雿輻鍂VPC<50>啣<EFBFBD><E595A3>匧<EFBFBD><E58CA7>𨅯<EFBFBD>
|
||
- <20>亙熒璉<E78692><E79289>亙<EFBFBD>憪见辣餈蠘<E9A488>頞喳<E9A09E>
|
||
|
||
**銝衤<E98A9D>甇?*嚗?
|
||
- <20>滨蔭HTTPS
|
||
- 蝏穃<E89D8F><E7A983>笔<EFBFBD>
|
||
- <20>滨蔭<E6BBA8>烐綉<E78390>𡃏郎
|
||
- 隡睃<E99AA1><E79D83>扯<EFBFBD>
|
||
- <20>滨蔭<E6BBA8>芸𢆡憭<F0A286A1>遢
|
||
|
||
---
|
||
|
||
> **<2A><>﹝蝏湔擪**嚗𡁏𧋦<F0A1818F><F0A78BA6>﹝<EFBFBD>箔<EFBFBD>2025-12-25摰鮋<E691B0><E9AE8B>函蔡蝏誩<E89D8F>蝻硋<E89DBB>嚗諹窈<E8ABB9>寞旿摰鮋<E691B0><E9AE8B><EFBFBD><EFBFBD><EFBFBD>湔鰵
|
||
> **<2A><><EFBFBD>擧凒<E693A7>?*嚗?025-12-25
|
||
> **<2A>函蔡<E587BD>嗆<EFBFBD>?*嚗尠<E59A97> 摰<><E691B0><EFBFBD>𣂼<EFBFBD>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|