Files
AIclinicalresearch/docs/05-部署文档/17-完整部署实战手册-2025版.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

40 KiB
Raw Blame History

AI銝游<EFBFBD><EFBFBD>𠉛弦撟喳蝱 - 摰峕㟲<E5B395>函蔡摰墧<E691B0><E5A2A7><EFBFBD>嚗?025<32><35><EFBFBD>

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦嚗鯝1.0嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗? **<2A>𥕦遣<F0A595A6><EFBFBD>**嚗?025-12-25
<EFBFBD><EFBFBD>摰鮋<EFBFBD><EFBFBD>函蔡嚗?025-12-24 ~ 2025-12-25 摰峕㟲<E5B395>函蔡蝏誩<E89D8F>
<EFBFBD>函蔡<EFBFBD>𣂼<EFBFBD><EFBFBD>園𡢿嚗𡁶漲6撠𤩺𧒄嚗<EFBFBD><EFBFBD><EFBFBD>恍䔮憸䀹<EFBFBD><EFBFBD><EFBFBD>
**<2A>函蔡鈭箏<E988AD>**嚗𡁜<E59A97><F0A1819C>穃𣪧<E7A983>? **<2A>函蔡蝏𤘪<E89D8F>**嚗尠<E59A97><><E691B0><EFBFBD>𣂼<EFBFBD>嚗峕<E59A97><E5B395><EFBFBD><E58CA7>賣迤撣貉<E692A3>銵?


<EFBFBD><EFBFBD> <20><>﹝霂湔<E99C82>

<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

  • <EFBFBD>?**<2A><EFBFBD><E7AE94><EFBFBD><E7AC94>函蔡蝏誩<E89D8F>**嚗朞扇敶蓥<E695B6>2025撟?2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵脩<E89DB5>摰峕㟲餈<E39FB2><E9A488>
  • <EFBFBD>?**<2A><><EFBFBD><E98984><EFBFBD><EFBFBD><E58CA7>?*嚗𡁻<E59A97><F0A181BB><EFBFBD>4銝芸<E98A9D><E88AB8>桅䔮憸睃<E686B8><EFBFBD><E996AB><EFBFBD><EFBFBD>
  • <EFBFBD>?**蝏誯<E89D8F><E8AAAF><EFBFBD>**嚗𡁏<E59A97><F0A1818F>澆枂<E6BE86><E69E82><EFBFBD>雿喳<E99BBF>頝萄<E9A09D>瘜冽<E7989C>鈭钅★
  • <EFBFBD>?**<2A>舐凒<E88890><EFBFBD><E4BA99>?*嚗𡁏<E59A97><F0A1818F><EFBFBD>蝵桀<E89DB5><E6A180>賭誘<E8B3AD><EFBFBD><EFBFBD><E9A488>霂?
  • <EFBFBD>?**<2A><><EFBFBD>敹恍<E695B9><EFBFBD>蝵?*嚗朞<E59A97><E69C9E><EFBFBD><EFBFBD>𡁜停<F0A1819C><EFBFBD><E8B3A3>?

銝𤾸<EFBFBD>隞𡝗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>喟頂

<EFBFBD><EFBFBD><EFBFBD>滨妍 <EFBFBD><EFBFBD>? 雿閙𧒄雿輻鍂
*<EFBFBD><EFBFBD>獢? 摰墧<EFBFBD><EFBFBD>函蔡摰峕㟲瘚<EFBFBD><EFBFBD> 潃?<3F><EFBFBD>蝵脫<E89DB5><E884AB>齿鰵<E9BDBF>函蔡<E587BD>?
01-敹恍<E695B9><EFBFBD>蝵淞OP-<2D>嗅抅蝖<E68A85><E89D96>?md <EFBFBD>嗅抅蝖<EFBFBD>摰峕㟲<EFBFBD><EFBFBD><EFBFBD> 隞𡡞妟撘<EFBFBD>憪见郎銋䭾𧒄
00-<2D>函蔡餈𥕦漲<F0A595A6><EFBFBD>.md <EFBFBD><EFBFBD><EFBFBD><EFBFBD>䰻蝝<EFBFBD> <EFBFBD>亥砭韏<EFBFBD><EFBFBD>靽⊥<EFBFBD><EFBFBD>?
12-Node.js<6A>𡒊垢-SAE<41>函蔡<E587BD><EFBFBD><E6BBA2><EFBFBD>.md <EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵? <EFBFBD><EFBFBD>蝵脫<EFBFBD>銝芣<EFBFBD><EFBFBD>⊥𧒄

<EFBFBD><20>函蔡<E587BD><EFBFBD><E59786><EFBFBD>

<EFBFBD><EFBFBD>瘚讛<EFBFBD><EFBFBD>?
    <20>?HTTPS (<28><EFBFBD>)
CLB韐蠘蝸<E8A098><E89DB8><EFBFBD>?(<28><EFBFBD>IP: 8.140.53.236)
    <20>?HTTP (<28><><EFBFBD>)
<0A>滨垢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<6F>滚𦛚 (SAE: 172.17.173.66:8000)
    <20>?SQL (<28><><EFBFBD>)
RDS PostgreSQL (<28><><EFBFBD>: pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432)

**<2A>喲睸靘肽<E99D98>**嚗?

  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝杼PC<EFBFBD><EFBFBD><EFBFBD>嚗Ǒ172.17.0.0/16`嚗?
  • 雿輻鍂NAT蝵穃<EFBFBD>霈輸䔮憭𣇉<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汪LM API嚗?
  • CLB蝏穃<EFBFBD><EFBFBD>滨垢嚗峕<EFBFBD>靘𥕦<EFBFBD>蝵𤏸挪<EFBFBD>?

<EFBFBD><EFBFBD> <20>函蔡憿箏<E686BF><EFBFBD><EFBFBD><EFBFBD>憿箏<E686BF><E7AE8F><EFBFBD>嚗?

甇仿炊 <EFBFBD>滚𦛚 <EFBFBD><EFBFBD>園𡢿 靘肽<EFBFBD>憿?
1儭謿<EFBFBD> VPC蝵𤑳<EFBFBD> + NAT蝵穃<E89DB5> 15<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>?
2儭謿<EFBFBD> RDS PostgreSQL 30<EFBFBD><EFBFBD><EFBFBD> VPC
3儭謿<EFBFBD> OSS撖寡情摮睃<EFBFBD> 10<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>?
4儭謿<EFBFBD> ACR摰孵膥<EFBFBD>𨅯<EFBFBD>隞枏<EFBFBD> 10<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>?
5儭謿<EFBFBD> Python敺格<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𤩺<EFBFBD>撱? 20<EFBFBD><EFBFBD><EFBFBD> ACR
6儭謿<EFBFBD> Python敺格<EFBFBD><EFBFBD><EFBFBD>蝵脣<EFBFBD>SAE 15<EFBFBD><EFBFBD><EFBFBD> VPC, ACR
7儭謿<EFBFBD> Node.js<6A>𡒊垢<F0A1928A>𨅯<EFBFBD><F0A885AF><EFBFBD> 30<EFBFBD><EFBFBD><EFBFBD> ACR, RDS
8儭謿<EFBFBD> Node.js<6A>𡒊垢<F0A1928A>函蔡<E587BD>訕AE 20<EFBFBD><EFBFBD><EFBFBD> VPC, ACR, RDS, Python
9儭謿<EFBFBD> <EFBFBD>滨垢Nginx<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD> 15<EFBFBD><EFBFBD><EFBFBD> ACR
<EFBFBD><EFBFBD> <EFBFBD>滨垢Nginx<EFBFBD>函蔡<EFBFBD>訕AE 15<EFBFBD><EFBFBD><EFBFBD> VPC, ACR, Node.js
1儭謿<EFBFBD>1儭謿<EFBFBD> CLB韐蠘蝸<EFBFBD><EFBFBD><EFBFBD>? 10<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>滨垢Nginx
1儭謿<EFBFBD>2儭謿<EFBFBD> <EFBFBD>券曎頝舀<EFBFBD>霂閖<EFBFBD>霂? 30<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?

<EFBFBD>餉恣嚗𡁶漲3.5撠𤩺𧒄嚗<EFBFBD><EFBFBD><EFBFBD>恍䔮憸䀹<EFBFBD><EFBFBD><EFBFBD>


<EFBFBD><EFBFBD><><E98A9D><EFBFBD><EFBFBD>蝵桀<E89DB5><EFBFBD><E686AD>30<33><30><EFBFBD>嚗?

1.1 <20><EFBFBD>鈭𤏸揭<F0A48FB8><EFBFBD><EFBFBD><E99F8F>

**璉<><E79289><EFBFBD><E4BAA4>?*嚗?

  • <EFBFBD><EFBFBD>鈭𤏸揭<EFBFBD>瑕歇摰𧼮<EFBFBD>霈方<EFBFBD>
  • 韐行<EFBFBD>雿䠷<EFBFBD> <20>?500<30><30><EFBFBD>撱箄悅1000<30><30><EFBFBD>
  • <EFBFBD><EFBFBD><EFBFBD>㗇𥋘嚗𡁜<EFBFBD><EFBFBD>?嚗<><E59A97>鈭穿<E988AD>
  • 撌脣<EFBFBD>撱摧AM霈輸䔮撖<EFBFBD>𤨎嚗<EFBFBD>鍂鈭𥟠ocker<EFBFBD><EFBFBD>嚗?

1.2 <20>砍𧑐撘<F0A79190><E69298>𤑳㴓憓?

**敹<><E695B9>撌亙<E6928C>**嚗?

  • Docker Desktop嚗Áindows/Mac嚗㗇<E59A97> Docker Engine嚗𡿨inux嚗?
  • Git嚗<EFBFBD>鍂鈭𦒘誨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
  • Node.js 22+嚗<>鍂鈭擧𧋦<E693A7><EFBFBD>撱綽<E692B1>
  • PowerShell <20>?Bash嚗<68><E59A97>銵諹<E98AB5><E8ABB9>穿<EFBFBD>

撉諹<EFBFBD><EFBFBD>賭誘嚗?

docker --version    # 摨娍遬蝷?Docker version 24.0+
git --version       # 摨娍遬蝷?git version 2.x+
node --version      # 摨娍遬蝷?v22.x.x

1.3 憿寧𤌍隞<F0A48C8D><E99A9E><EFBFBD><EFBFBD><EFBFBD>

# <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/

<EFBFBD><EFBFBD> 鈭䎚<E988AD><E48E9A>抅蝖<E68A85>霈暹鴌<E69AB9>函蔡嚗?撠𤩺𧒄嚗?

2.1 VPC蝵𤑳<E89DB5>嚗?5<><35><EFBFBD>嚗?

**<2A><EFBFBD>VPC<50><EFBFBD><E689B9>?*嚗冴ttps://vpc.console.aliyun.com/

<EFBFBD>𥕦遣VPC

  1. <EFBFBD>孵稬<EFBFBD>𣂼<EFBFBD>撱箔<EFBFBD><EFBFBD><EFBFBD>蝏栶<EFBFBD>?
  2. <EFBFBD>滨蔭<EFBFBD><EFBFBD>㺭嚗?
    VPC<EFBFBD>滨妍: ai-clinical-vpc
    <EFBFBD><EFBFBD>: <EFBFBD>𤾸<EFBFBD>2嚗<EFBFBD><EFBFBD>鈭穿<EFBFBD>
    IPv4蝵烐挾: 172.17.0.0/16
    
  3. <EFBFBD>孵稬<EFBFBD>摰𠾼<EFBFBD>?

<EFBFBD>𥕦遣鈭斗揢<EFBFBD><EFBFBD>2銝迎<EFBFBD><EFBFBD><EFBFBD><EFBFBD>舐鍂<EFBFBD><EFBFBD>

**鈭斗揢<E69697>?**嚗?

<EFBFBD>滨妍: ai-clinical-vsw-f
<EFBFBD>舐鍂<EFBFBD>? <20>𤾸<EFBFBD>2 <20>舐鍂<E88890>
IPv4蝵烐挾: 172.17.160.0/20

**鈭斗揢<E69697>?**嚗?

<EFBFBD>滨妍: ai-clinical-vsw-a
<EFBFBD>舐鍂<EFBFBD>? <20>𤾸<EFBFBD>2 <20>舐鍂<E88890>
IPv4蝵烐挾: 172.17.192.0/20

<EFBFBD>𥕦遣摰匧<EFBFBD>蝏?

  1. 餈𥕦<EFBFBD><EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>煾△<EFBFBD>?
  2. <EFBFBD>𥕦遣摰匧<EFBFBD><EFBFBD><EFBFBD>
    <EFBFBD>滨妍: ai-clinical-sg
    蝵𤑳<EFBFBD>: ai-clinical-vpc
    
  3. <EFBFBD>滨蔭<EFBFBD>交䲮<EFBFBD>𤏸<EFBFBD><EFBFBD><EFBFBD>
    # <20><>捂VPC<50><43><EFBFBD>鈭㘾<E988AD>?
    <EFBFBD>讛悅: <EFBFBD><EFBFBD>
    蝡臬藁: -1/-1
    <EFBFBD><EFBFBD><EFBFBD>撖寡情: 172.17.0.0/16
    
    # <20><>捂HTTPS (443)
    <EFBFBD>讛悅: TCP
    蝡臬藁: 443/443
    <EFBFBD><EFBFBD><EFBFBD>撖寡情: 0.0.0.0/0
    
    # <20><>捂HTTP (80)
    <EFBFBD>讛悅: TCP
    蝡臬藁: 80/80
    <EFBFBD><EFBFBD><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嚗?

<EFBFBD>𥕦遣NAT蝵穃<EFBFBD>

**<2A><EFBFBD>NAT蝵穃<E89DB5><E7A983><EFBFBD><E689B9>?*嚗冴ttps://vpc.console.aliyun.com/nat/

  1. <EFBFBD>孵稬<EFBFBD>𣂼<EFBFBD>撱摸AT蝵穃<EFBFBD><EFBFBD>?
  2. <EFBFBD>滨蔭<EFBFBD><EFBFBD>㺭嚗?
    <EFBFBD>滨妍: NAT_airesearch
    <EFBFBD><EFBFBD>: <EFBFBD>𤾸<EFBFBD>2嚗<EFBFBD><EFBFBD>鈭穿<EFBFBD>
    VPC: ai-clinical-vpc
    鈭斗揢<EFBFBD>? ai-clinical-vsw-f
    蝵穃<EFBFBD>蝐餃<EFBFBD>: 憓𧼮撩<EFBFBD>?
    隞䁅晶璅<EFBFBD>: <EFBFBD><EFBFBD>隞䁅晶
    
  3. <EFBFBD>孵稬<EFBFBD><EFBFBD><EFBFBD>唾揚銋啜<EFBFBD>?

<EFBFBD>𥕦遣撟嗥<EFBFBD>摰鍃IP

  1. <EFBFBD>沐AT蝵穃<EFBFBD>霂行<EFBFBD>憿蛛<EFBFBD><EFBFBD>孵稬<EFBFBD><EFBFBD>摰𡁜撕<EFBFBD><EFBFBD>蝵飡P<EFBFBD>?
  2. <EFBFBD>㗇𥋘<EFBFBD>鞱揚銋唳鰵<EFBFBD><EFBFBD>IP<EFBFBD>𡢅<EFBFBD>
    霈∟晶<EFBFBD><EFBFBD>: <EFBFBD>劐蝙<EFBFBD><EFBFBD><EFBFBD>?
    撣血捐撜啣<EFBFBD>? 5Mbps嚗<73><E59A97>霂閧㴓憓<E3B493><E68693><EFBFBD><EFBFBD>
    
  3. 韐凋僭撟嗥<EFBFBD>摰?

<EFBFBD>滨蔭SNAT<EFBFBD>∠𤌍嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?

  1. 餈𥕦<EFBFBD>NAT蝵穃<EFBFBD>霂行<EFBFBD> <20>?<3F>𠩐NAT蝞∠<E89D9E><E288A0>?
  2. 瘛餃<EFBFBD>SNAT<EFBFBD>∠𤌍1嚗?
    鈭斗揢<EFBFBD>? ai-clinical-vsw-f
    <EFBFBD><EFBFBD>IP: <EFBFBD>㗇𥋘<EFBFBD>𡁏<EFBFBD><EFBFBD><EFBFBD>IP
    
  3. 瘛餃<EFBFBD>SNAT<EFBFBD>∠𤌍2嚗?
    鈭斗揢<EFBFBD>? ai-clinical-vsw-a
    <EFBFBD><EFBFBD>IP: <EFBFBD>㗇𥋘<EFBFBD>𡁏<EFBFBD><EFBFBD><EFBFBD>IP
    

**撉諹<E69289>**嚗?

  • SNAT<EFBFBD>∠𤌍<EFBFBD><EFBFBD><EFBFBD>遬蝷箝<EFBFBD>𣂼虾<EFBFBD><EFBFBD><EFBFBD>

2.3 RDS PostgreSQL嚗?0<><30><EFBFBD>嚗?

**<2A><EFBFBD>RDS<44><EFBFBD><E689B9>?*嚗冴ttps://rdsnext.console.aliyun.com/

<EFBFBD>𥕦遣摰硺<EFBFBD>

  1. <EFBFBD>孵稬<EFBFBD>𣂼<EFBFBD>撱箏<EFBFBD>靘卝<EFBFBD>?
  2. <EFBFBD>滨蔭<EFBFBD><EFBFBD>㺭嚗?
    # <20><EFBFBD><E7AE87>滨蔭
    <EFBFBD><EFBFBD>: <EFBFBD>𤾸<EFBFBD>2嚗<EFBFBD><EFBFBD>鈭穿<EFBFBD>
    <EFBFBD>舐鍂<EFBFBD>? <20>舐鍂<E88890>慚嚗<E6859A><E59A97>鈭斗揢<E69697>箏笆摨䈑<E691A8>
    <EFBFBD>唳旿摨枏<EFBFBD><EFBFBD>? PostgreSQL
    <EFBFBD><EFBFBD>𧋦: 15
    蝟餃<EFBFBD>: 擃睃虾<EFBFBD><EFBFBD>
    摮睃<EFBFBD>蝐餃<EFBFBD>: ESSD鈭𤑳<EFBFBD>
    
    # 閫<>
    <EFBFBD>聢蝐餃<EFBFBD>: <EFBFBD>𡁶鍂<EFBFBD>?
    <EFBFBD>: 2<EFBFBD>?GB (pg.n2.2c.1m)
    摮睃<EFBFBD>蝛粹𡢿: 100GB
    
    # 蝵𤑳<E89DB5>
    蝵𤑳<EFBFBD>蝐餃<EFBFBD>: 銝𤘪<EFBFBD>蝵𤑳<EFBFBD>
    VPC: ai-clinical-vpc
    鈭斗揢<EFBFBD>? ai-clinical-vsw-f
    
    # 隞䁅晶
    隞䁅晶蝐餃<EFBFBD>: <EFBFBD><EFBFBD>隞䁅晶嚗<EFBFBD><EFBFBD>霂𤏪<EFBFBD><EFBFBD>?<3F><><EFBFBD><E58391><EFBFBD><EFBFBD><E59A97>鈭改<E988AD>
    
  3. <EFBFBD>孵稬<EFBFBD><EFBFBD><EFBFBD>唾揚銋啜<EFBFBD>?

<EFBFBD>𥕦遣<EFBFBD>唳旿摨枏<EFBFBD>韐血噡

**蝑匧<E89D91>摰硺<E691B0><E7A1BA>𥕦遣摰峕<E691B0><EFBFBD>漲10<31><30><EFBFBD>嚗?*嚗𣬚<E59A97><F0A3AC9A>𠬍<EFBFBD>

  1. 餈𥕦<EFBFBD>摰硺<EFBFBD>霂行<EFBFBD> <20>?<3F>鞱揭<E99EB1>瑞恣<E7919E><E681A3><EFBFBD>?

  2. <EFBFBD>𥕦遣擃䀹<EFBFBD><EFBFBD>鞱揭<EFBFBD><EFBFBD>

    韐血噡<EFBFBD>滨妍: airesearch
    韐血噡撖<EFBFBD><EFBFBD>: Xibahe@fengzhibo117  # <20>嫣蛹<E5ABA3><EFBFBD>撘箏<E69298><E7AE8F>?
    韐血噡蝐餃<EFBFBD>: 擃䀹<EFBFBD><EFBFBD>鞱揭<EFBFBD>?
    
  3. 餈𥕦<EFBFBD><EFBFBD>鞉㺭<EFBFBD><EFBFBD>蝞∠<EFBFBD><EFBFBD>?

  4. <EFBFBD>𥕦遣<EFBFBD>唳旿摨橒<EFBFBD>

    <EFBFBD>唳旿摨枏<EFBFBD>蝘? ai_clinical_research
    摮㛖泵<EFBFBD>? UTF8
    <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: en_US.utf8
    <EFBFBD><EFBFBD><EFBFBD>韐血噡: airesearch (霂餃<E99C82>)
    

<EFBFBD>滨蔭<EFBFBD><EFBFBD><EFBFBD>?

  1. 餈𥕦<EFBFBD><EFBFBD>鞉㺭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>鞟蒾<E99E9F><EFBFBD>霈曄蔭<E69B84>?
  2. 靽格㺿暺䁅恕<EFBFBD><EFBFBD><EFBFBD>嚗?
    <EFBFBD><EFBFBD><EFBFBD>? 172.17.0.0/16  # VPC蝵烐挾
    

<EFBFBD>滨蔭<EFBFBD>嗅躹嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?

  1. 餈𥕦<EFBFBD><EFBFBD>𣂼<EFBFBD><EFBFBD>啗挽蝵柴<EFBFBD>?
  2. <EFBFBD>𦦵揣 timezone
  3. 靽格㺿銝綽<EFBFBD>Asia/Shanghai
  4. <EFBFBD>孵稬<EFBFBD><EFBFBD>鈭文<EFBFBD><EFBFBD><EFBFBD>?

撖澆<EFBFBD><EFBFBD>唳旿

<EFBFBD><EFBFBD>1嚗帋蝙<EFBFBD>冽𧋦<EFBFBD>唳㺭<EFBFBD><EFBFBD>撖澆枂<EFBFBD><EFBFBD><EFBFBD>

# 隞擧𧋦<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摰<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>**嚗?

# 餈墧𦻖<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/

<EFBFBD>𥕦遣Bucket

  1. <EFBFBD>孵稬<EFBFBD>𣂼<EFBFBD>撱慷ucket<EFBFBD>?
  2. <EFBFBD>滨蔭<EFBFBD><EFBFBD>㺭嚗?
    Bucket<EFBFBD>滨妍: ai-clinical-research
    <EFBFBD><EFBFBD>: <EFBFBD>𤾸<EFBFBD>2嚗<EFBFBD><EFBFBD>鈭穿<EFBFBD>
    摮睃<EFBFBD>蝐餃<EFBFBD>: <EFBFBD><EFBFBD><EFBFBD>摮睃<EFBFBD>
    霂餃<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
    摮睃<EFBFBD><EFBFBD>𦯀<EFBFBD>蝐餃<EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>𦯀<EFBFBD>摮睃<EFBFBD>
    <EFBFBD><EFBFBD>𧋦<EFBFBD><EFBFBD>: <EFBFBD>喲𡡒
    
  3. <EFBFBD>孵稬<EFBFBD>摰𠾼<EFBFBD>?

<EFBFBD>𥕦遣RAM霈輸䔮撖<EFBFBD>𤨎

  1. 餈𥕦<EFBFBD><EFBFBD>鞱挪<EFBFBD>格綉<EFBFBD>買AM<EFBFBD>𡢅<EFBFBD>https://ram.console.aliyun.com/

  2. <EFBFBD>𥕦遣<EFBFBD><EFBFBD>嚗?

    <EFBFBD><EFBFBD><EFBFBD>滨妍: oss-bucket-writer
    <EFBFBD>曄內<EFBFBD>滨妍: OSS Bucket<65><EFBFBD><E59D94><EFBFBD>
    霈輸䔮<EFBFBD><EFBFBD>: <EFBFBD>?OpenAPI靚<49>鍂霈輸䔮
    
  3. 靽嘥<EFBFBD>AccessKey嚗?

    AccessKeyId: LTAI5tB2Dt3NdvBL3G7nYGv7
    AccessKeySecret: 1iSN9k39RkApP93QjUhC1DcPIeMG4V
    

    <EFBFBD>𩤃<EFBFBD> 蝡见朖憭滚<E686AD>靽嘥<E99DBD><EFBFBD><E59A97>蝏剜<E89D8F>瘜閙䰻<E99699><EFBFBD>

  4. 銝箇鍂<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

    • <EFBFBD>㗇𥋘<EFBFBD><EFBFBD> <20>?<3F>鞉溶<E99E89><EFBFBD><E4ADBE><EFBFBD>?
    • <EFBFBD>㗇𥋘<EFBFBD><EFBFBD><EFBFBD>嚗䫤AliyunOSSFullAccess`嚗<><E59A97><EFBFBD><EFBFBD>銋㗇<E98A8B><E39787><EFBFBD>

2.5 ACR摰孵膥<E5ADB5>𨅯<EFBFBD>隞枏<E99A9E>嚗?0<><30><EFBFBD>嚗?

<EFBFBD><EFBFBD>摰孵膥<EFBFBD>𨅯<EFBFBD><EFBFBD>滚𦛚嚗冴ttps://cr.console.aliyun.com/

<EFBFBD>𥕦遣<EFBFBD><EFBFBD>蝛粹𡢿

  1. 餈𥕦<EFBFBD><EFBFBD>𣂷葵鈭箏<EFBFBD>靘卝<EFBFBD><EFBFBD> <20>𣂼𦶢<F0A382BC>滨征<E6BBA8><EFBFBD>?
  2. <EFBFBD>孵稬<EFBFBD>𣂼<EFBFBD>撱箏𦶢<EFBFBD>滨征<EFBFBD><EFBFBD>𡢅<EFBFBD>
    <EFBFBD><EFBFBD>蝛粹𡢿<EFBFBD>滨妍: ai-clinical
    

<EFBFBD>𥕦遣<EFBFBD>𨅯<EFBFBD>隞枏<EFBFBD>嚗?銝迎<E98A9D>

*隞枏<EFBFBD>1嚗䥪ython敺格<EFBFBD><EFBFBD>?

<EFBFBD><EFBFBD>蝛粹𡢿: ai-clinical
隞枏<EFBFBD><EFBFBD>滨妍: python-extraction
隞枏<EFBFBD>蝐餃<EFBFBD>: <EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>: Python<EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD><EFBFBD>滚𦛚

隞枏<EFBFBD>2嚗鐭ode.js<6A>𡒊垢

<EFBFBD><EFBFBD>蝛粹𡢿: ai-clinical
隞枏<EFBFBD><EFBFBD>滨妍: backend-service
隞枏<EFBFBD>蝐餃<EFBFBD>: <EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>: Node.js<6A>𡒊垢API<50>滚𦛚

隞枏<EFBFBD>3嚗𡁜<EFBFBD>蝡烤ginx

<EFBFBD><EFBFBD>蝛粹𡢿: ai-clinical
隞枏<EFBFBD><EFBFBD>滨妍: ai-clinical_frontend-nginx
隞枏<EFBFBD>蝐餃<EFBFBD>: <EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>: React<EFBFBD>滨垢Nginx<EFBFBD>滚𦛚

霈曄蔭霈輸䔮<EFBFBD><EFBFBD>

<EFBFBD>冽𧋦<EFBFBD>蚤ocker<EFBFBD><EFBFBD>ACR嚗?

# 銝芯犖<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>**嚗?

# <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><>倌>

<EFBFBD><EFBFBD> 銝剹<E98A9D><E589B9>ython敺格<E695BA><E6A0BC><EFBFBD>蝵莎<E89DB5>35<33><35><EFBFBD>嚗?

3.1 <20><>遣Docker<65>𨅯<EFBFBD>嚗?0<><30><EFBFBD>嚗?

餈𥕦<EFBFBD><EFBFBD><EFBFBD>

cd AIclinicalresearch/extraction_service

<EFBFBD><EFBFBD>主ockerfile

蝖株恕Dockerfile摮睃銁銝𥪜<EFBFBD>摰寞迤蝖殷<EFBFBD>

# 摨磰砲<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"]

<EFBFBD><EFBFBD><EFBFBD>𨅯<EFBFBD>

# <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

<EFBFBD>砍𧑐瘚贝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?

# 餈鞱<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

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ACR

# <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/

<EFBFBD>𥕦遣<EFBFBD><EFBFBD>蝛粹𡢿嚗<EFBFBD><EFBFBD>甈∴<EFBFBD>

  1. 餈𥕦<EFBFBD><EFBFBD>𣂼𦶢<EFBFBD>滨征<EFBFBD><EFBFBD>?
  2. <EFBFBD>孵稬<EFBFBD>𣂼<EFBFBD>撱箏𦶢<EFBFBD>滨征<EFBFBD><EFBFBD>𡢅<EFBFBD>
    <EFBFBD><EFBFBD>蝛粹𡢿ID: cn-beijing:test-airesearch
    <EFBFBD><EFBFBD>蝛粹𡢿<EFBFBD>滨妍: 瘚贝<EFBFBD><EFBFBD><EFBFBD>
    

<EFBFBD>𥕦遣摨𠉛鍂

  1. <EFBFBD>孵稬<EFBFBD>𣂼<EFBFBD>撱箏<EFBFBD><EFBFBD><EFBFBD>?

  2. 摨𠉛鍂<EFBFBD>箸𧋦靽⊥<EFBFBD>嚗?

    摨𠉛鍂<EFBFBD>滨妍: python-extraction-test
    <EFBFBD><EFBFBD>蝛粹𡢿: cn-beijing:test-airesearch
    
    # 摰硺<E691B0><EFBFBD>
    CPU: 1<EFBFBD>?
    <EFBFBD><EFBFBD><EFBFBD>: 2GB
    摰硺<EFBFBD><EFBFBD>? 1
    
    # 摨𠉛鍂<F0A0899B>函蔡<E587BD><EFBFBD>
    <EFBFBD>函蔡<EFBFBD><EFBFBD>: <EFBFBD>𨅯<EFBFBD>
    <EFBFBD>𨅯<EFBFBD>蝐餃<EFBFBD>: 摰孵膥<EFBFBD>𨅯<EFBFBD><EFBFBD>滚𦛚隡<EFBFBD><EFBFBD><EFBFBD>?銝芯犖<E88AAF>?
    
  3. <EFBFBD>㗇𥋘<EFBFBD>𨅯<EFBFBD>嚗?

    <EFBFBD><EFBFBD>: <EFBFBD>𤾸<EFBFBD>2嚗<EFBFBD><EFBFBD>鈭穿<EFBFBD>
    <EFBFBD><EFBFBD>蝛粹𡢿: ai-clinical
    隞枏<EFBFBD>: python-extraction
    <EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>𧋦: v1.0
    
    # <20>𩤃<EFBFBD> 雿輻鍂VPC<50><EFBFBD>嚗𠄎AE<41><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59A97><EFBFBD><E7989A>韐對<E99F90>
    <EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>隡朞䌊<EFBFBD>刻蓮銝敲PC<EFBFBD><EFBFBD>嚗?
    crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0
    
  4. <EFBFBD>滨蔭<EFBFBD>𨅯<EFBFBD>霈輸䔮<EFBFBD><EFBFBD>嚗?

    <EFBFBD><EFBFBD><EFBFBD>? gofeng117@163.com
    <EFBFBD><EFBFBD>: fengzhibo117
    
  5. 摨𠉛鍂<EFBFBD>滨蔭嚗?

    # <20>臬𢆡<E887AC>賭誘<E8B3AD>滨蔭
    <EFBFBD>臬𢆡<EFBFBD>賭誘: <EFBFBD>嗵征嚗<EFBFBD><EFBFBD>求ockerfile<EFBFBD><EFBFBD>MD嚗?
    
    # 蝡臬藁<E887AC>滨蔭
    摰孵膥蝡臬藁: 8000
    <EFBFBD>讛悅: TCP
    
  6. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?

    LOG_LEVEL=INFO
    TEMP_DIR=/tmp/extraction_service
    
  7. 蝵𤑳<EFBFBD><EFBFBD>滨蔭嚗?

    VPC: ai-clinical-vpc
    鈭斗揢<EFBFBD>? ai-clinical-vsw-f
    摰匧<EFBFBD>蝏? ai-clinical-sg
    
  8. <EFBFBD>亙熒璉<EFBFBD><EFBFBD><EFBFBD>

    # 摮䀹暑璉<E69A91><E79289><EFBFBD>Liveness嚗?
    <EFBFBD><EFBFBD>交䲮撘? HTTP
    <EFBFBD><EFBFBD>亥楝敺? /api/health
    蝡臬藁: 8000
    <EFBFBD><EFBFBD>撱嗉<EFBFBD>: 30蝘?
    <EFBFBD><EFBFBD>仿𡢿<EFBFBD>? 10蝘?
    <EFBFBD><EFBFBD><EFBFBD><EFBFBD>? 5蝘?
    銝滚<EFBFBD>摨琿<EFBFBD><EFBFBD>? 3甈?
    
    # 撠梁貌璉<E8B28C><E79289><EFBFBD>Readiness嚗?
    <EFBFBD><EFBFBD>交䲮撘? HTTP
    <EFBFBD><EFBFBD>亥楝敺? /api/health
    蝡臬藁: 8000
    <EFBFBD><EFBFBD>撱嗉<EFBFBD>: 10蝘?
    
  9. <EFBFBD>孵稬<EFBFBD>霈文<EFBFBD>撱箝<EFBFBD>?

蝑匧<EFBFBD><EFBFBD>函蔡摰峕<EFBFBD>

  • <EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD>靘钅<EFBFBD>蝵脯<EFBFBD>煾△<EFBFBD>?
  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝箝<EFBFBD>𪊟unning<EFBFBD>𡢅<EFBFBD>蝥?-10<31><30><EFBFBD>嚗?
  • 霈啣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗䫤http://172.17.173.66:8000`

撉諹<EFBFBD><EFBFBD>函蔡

# <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

<EFBFBD><20><EFBFBD><E49C98>ode.js<6A>𡒊垢<F0A1928A>函蔡嚗?0<><30><EFBFBD>嚗?

4.1 <20><><EFBFBD>撌乩<E6928C>嚗?0<><30><EFBFBD>嚗?

<EFBFBD><EFBFBD><EFBFBD>撘撇WT撖<EFBFBD>𤨎

# <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

<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

<EFBFBD>𥕦遣<EFBFBD><EFBFBD>backend/.env.production<EFBFBD><EFBFBD><EFBFBD>𣂷漱<EFBFBD>蚣it嚗㚁<EFBFBD>

# ==================== <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>嚗?

<EFBFBD><EFBFBD><EFBFBD>㗇𥋘

<EFBFBD>睲賑雿輻鍂**<2A><EFBFBD>B嚗𡁏𧋦<F0A1818F><EFBFBD>霂?+ Docker<65><EFBFBD>**嚗<><E59A97>蝔喳<E89D94>嚗?

甇仿炊1嚗𡁏𧋦<EFBFBD><EFBFBD>霂騻ypeScript

cd AIclinicalresearch/backend

# 摰㕑<E691B0>靘肽<E99D98>
npm install

# 蝻𤥁<E89DBB>TypeScript
npm run build

# 撉諹<E69289>蝻𤥁<E89DBB>蝏𤘪<E89D8F>
ls dist/
# 摨磰砲<E7A3B0><EFBFBD>嚗餜ndex.js, common/, modules/ 蝑?

甇仿炊2嚗𡁏<EFBFBD><EFBFBD>主ockerfile

蝖株恕Dockerfile<EFBFBD><EFBFBD>捆甇<EFBFBD>嚗?

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摰<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嚗𡁜<EFBFBD>憿餃<EFBFBD><EFBFBD>?COPY config ./config<EFBFBD><EFBFBD><EFBFBD><EFBFBD>仿<EFBFBD> ENOENT: no such file or directory, open '/app/config/agents.yaml'

甇仿炊3嚗𡁏<EFBFBD>撱粹<EFBFBD><EFBFBD>?

# <20><><EFBFBD>𨅯<EFBFBD>
docker build -t backend-service:v1.3 .

# 蝑匧<E89D91><E58CA7><EFBFBD>遣摰峕<E691B0><EFBFBD>漲5<E6BCB2><35><EFBFBD>嚗?

甇仿炊4嚗𡁏𧋦<EFBFBD><EFBFBD>霂𤏪<EFBFBD><EFBFBD><EFBFBD>嚗?

# 餈鞱<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嚗𡁏綫<EFBFBD><EFBFBD><EFBFBD>ACR

# <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>嚗?

**<2A><EFBFBD>SAE<41><EFBFBD><E689B9>?*嚗冴ttps://sae.console.aliyun.com/

<EFBFBD>𥕦遣摨𠉛鍂

  1. <EFBFBD>孵稬<EFBFBD>𣂼<EFBFBD>撱箏<EFBFBD><EFBFBD><EFBFBD>?

  2. 摨𠉛鍂<EFBFBD>箸𧋦靽⊥<EFBFBD>嚗?

    摨𠉛鍂<EFBFBD>滨妍: nodejs-backend-test
    <EFBFBD><EFBFBD>蝛粹𡢿: cn-beijing:test-airesearch
    
    # 摰硺<E691B0><EFBFBD>
    CPU: 1<EFBFBD>?
    <EFBFBD><EFBFBD><EFBFBD>: 2GB
    摰硺<EFBFBD><EFBFBD>? 1
    
  3. <EFBFBD>㗇𥋘<EFBFBD>𨅯<EFBFBD>嚗?

    <EFBFBD>𨅯<EFBFBD>蝐餃<EFBFBD>: 摰孵膥<EFBFBD>𨅯<EFBFBD><EFBFBD>滚𦛚隡<EFBFBD><EFBFBD><EFBFBD>?銝芯犖<E88AAF>?
    <EFBFBD><EFBFBD>: <EFBFBD>𤾸<EFBFBD>2嚗<EFBFBD><EFBFBD>鈭穿<EFBFBD>
    <EFBFBD><EFBFBD>蝛粹𡢿: ai-clinical
    隞枏<EFBFBD>: backend-service
    <EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>𧋦: v1.3
    
    # <20>𨅯<EFBFBD>霈輸䔮<E8BCB8><EFBFBD>
    <EFBFBD><EFBFBD><EFBFBD>? gofeng117@163.com
    <EFBFBD><EFBFBD>: fengzhibo117
    
  4. 摨𠉛鍂<EFBFBD>滨蔭嚗?

    # <20>臬𢆡<E887AC>賭誘
    <EFBFBD>臬𢆡<EFBFBD>賭誘: <EFBFBD>嗵征嚗<EFBFBD><EFBFBD>求ockerfile<EFBFBD><EFBFBD>MD嚗?
    
    # <20>𩤃<EFBFBD> <20>喲睸嚗帋<E59A97><EFBFBD><E996AC>蝵?/bin/bash嚗淾lpine Linux瘝⊥<E7989D>bash嚗?
    
    # 蝡臬藁<E887AC>滨蔭
    摰孵膥蝡臬藁: 3001
    <EFBFBD>讛悅: TCP
    
  5. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>儭?<3F>𧼮虜<F0A7BCAE><EFBFBD><EFBFBD><E59A97>嚗?

    **憭滚<E686AD>銝𢠃𢒰<F0A2A083><F0A292B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>渡㴓憓<E3B493><E68693><EFBFBD>𤩺<EFBFBD><F0A4A9BA>?*嚗𣬚鸌<F0A3AC9A>急釣<E680A5>𧶏<EFBFBD>

    # <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. 蝵𤑳<EFBFBD><EFBFBD>滨蔭嚗?

    VPC: ai-clinical-vpc
    鈭斗揢<EFBFBD>? ai-clinical-vsw-f
    摰匧<EFBFBD>蝏? ai-clinical-sg
    
  7. <EFBFBD>亙熒璉<EFBFBD><EFBFBD><EFBFBD>

    # 摮䀹暑璉<E69A91><E79289><EFBFBD>Liveness嚗?
    <EFBFBD><EFBFBD>交䲮撘? HTTP
    <EFBFBD><EFBFBD>亥楝敺? /health
    蝡臬藁: 3001
    <EFBFBD><EFBFBD>撱嗉<EFBFBD>: 60蝘? # Node.js<6A>臬𢆡颲<F0A286A1><E9A2B2>
    <EFBFBD><EFBFBD>仿𡢿<EFBFBD>? 10蝘?
    
    # 撠梁貌璉<E8B28C><E79289><EFBFBD>Readiness嚗?
    <EFBFBD><EFBFBD>交䲮撘? HTTP
    <EFBFBD><EFBFBD>亥楝敺? /health
    蝡臬藁: 3001
    <EFBFBD><EFBFBD>撱嗉<EFBFBD>: 30蝘?
    
  8. <EFBFBD>孵稬<EFBFBD>霈文<EFBFBD>撱箝<EFBFBD>?

蝑匧<EFBFBD><EFBFBD>函蔡摰峕<EFBFBD>

  • <EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD>靘钅<EFBFBD>蝵脯<EFBFBD>煾△<EFBFBD>?
  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝箝<EFBFBD>𪊟unning<EFBFBD>𡢅<EFBFBD>蝥?0<><30><EFBFBD>嚗?
  • 霈啣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗䫤http://172.17.173.73:3001`

撉諹<EFBFBD><EFBFBD>函蔡

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗𣬚霈支誑銝衤縑<EFBFBD><EFBFBD>

# <20>?摨磰砲<E7A3B0><EFBFBD><E8A781><EFBFBD>𠯫敹梹<E695B9>
<0A>?Loaded 12 agent configurations
[PgBossQueue] Using PgBossQueue (Postgres-Only<6C><EFBFBD>)
[PostgresCacheAdapter] Cleanup task started
<0A>?<3F>唳旿摨栞<E691A8><E6A09E><EFBFBD><E4BAA4><EFBFBD><EFBFBD>
<0A><> <20>唳旿摨梶<E691A8><E6A2B6>? PostgreSQL 15.14
PythonExecutorService initialized: http://172.17.173.66:8000  # <20>𩤃<EFBFBD> 蝖株恕餈嗘葵嚗?
<0A><> AI銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱 - <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A>典鍳<E585B8><EFBFBD><E586BD><EFBFBD><EFBFBD>
<0A><> <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'
<0A>?Dockerfile蝻箏<E89DBB> COPY config ./config

Error: unable to determine transport target for "pino-pretty"
<0A>?src/index.ts <20><EFBFBD><E4BA99>滨蔭<E6BBA8><EFBFBD>嚗屸<E59A97><EFBFBD>辺隞嗅ế<E59785>剔㴓憓?

ReferenceError: require is not defined
<0A>?healthCheck.ts 雿輻鍂鈭<E98D82>equire嚗屸<E59A97><E5B1B8>嫣蛹import

4.4 撣貉<E692A3><E8B289><EFBFBD>靽桀<E99DBD>

<EFBFBD><EFBFBD>1嚗䬙onfig<EFBFBD><EFBFBD>蝻箏仃

<EFBFBD>躰秤嚗?

ENOENT: no such file or directory, open '/app/config/agents.yaml'

**閫<><E996AB>**嚗?

# <20>求ockerfile銝剜溶<E5899C>?
COPY config ./config

<EFBFBD><EFBFBD>2嚗䮝ino-pretty<74>煺漣<E785BA><EFBFBD><E887AC>仿<EFBFBD>

<EFBFBD>躰秤嚗?

Error: unable to determine transport target for "pino-pretty"

**閫<><E996AB>**嚗帋耨<E5B88B>?src/index.ts

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',
          },
        },
      },
});

<EFBFBD><EFBFBD>3嚗冴ealthCheck require<72>仿<EFBFBD>

<EFBFBD>躰秤嚗?

ReferenceError: require is not defined in ES module

**閫<><E996AB>**嚗帋耨<E5B88B>?src/common/health/healthCheck.ts

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
}

<EFBFBD><EFBFBD>4嚗颹ash頝臬<EFBFBD><EFBFBD>躰秤

<EFBFBD>躰秤嚗?

executable '/bin/bash' not found in $PATH

**閫<><E996AB>**嚗?

  • SAE<EFBFBD>臬𢆡<EFBFBD>賭誘<EFBFBD>嗵征嚗䔶蝙<EFBFBD>求ockerfile<EFBFBD><EFBFBD>MD
  • <EFBFBD>碶蝙<EFBFBD>?/bin/sh<>𤜯 /bin/bash

<EFBFBD>綫 鈭𢛵<E988AD><F0A29BB5><EFBFBD>蝡烤ginx<6E>函蔡嚗?0<><30><EFBFBD>嚗?

5.1 <20><>遣Docker<65>𨅯<EFBFBD>嚗?5<><35><EFBFBD>嚗?

餈𥕦<EFBFBD><EFBFBD><EFBFBD>

cd AIclinicalresearch/frontend-v2

<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞?

1. Dockerfile<EFBFBD><EFBFBD><EFBFBD>嗆挾<EFBFBD><EFBFBD>遣嚗㚁<EFBFBD>

# 蝚砌<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>𢆡<EFBFBD><EFBFBD><EFBFBD>蝵殷<EFBFBD>嚗?

#!/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><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><EFBFBD><EFBFBD><EFBFBD>雿滨泵嚗㚁<EFBFBD>

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;
    }
}

<EFBFBD><EFBFBD><EFBFBD>𨅯<EFBFBD>

# <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

<EFBFBD>砍𧑐瘚贝<EFBFBD>

# 餈鞱<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

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ACR

# <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>嚗?

**<2A><EFBFBD>SAE<41><EFBFBD><E689B9>?*嚗冴ttps://sae.console.aliyun.com/

<EFBFBD>𥕦遣摨𠉛鍂

  1. <EFBFBD>孵稬<EFBFBD>𣂼<EFBFBD>撱箏<EFBFBD><EFBFBD><EFBFBD>?

  2. 摨𠉛鍂<EFBFBD>箸𧋦靽⊥<EFBFBD>嚗?

    摨𠉛鍂<EFBFBD>滨妍: frontend-nginx-service
    <EFBFBD><EFBFBD>蝛粹𡢿: cn-beijing:test-airesearch
    
    # 摰硺<E691B0><EFBFBD>
    CPU: 0.5<EFBFBD>?
    <EFBFBD><EFBFBD><EFBFBD>: 1GB
    摰硺<EFBFBD><EFBFBD>? 1
    
  3. <EFBFBD>㗇𥋘<EFBFBD>𨅯<EFBFBD>嚗?

    <EFBFBD>𨅯<EFBFBD>蝐餃<EFBFBD>: 摰孵膥<EFBFBD>𨅯<EFBFBD><EFBFBD>滚𦛚隡<EFBFBD><EFBFBD><EFBFBD>?銝芯犖<E88AAF>?
    <EFBFBD><EFBFBD>: <EFBFBD>𤾸<EFBFBD>2嚗<EFBFBD><EFBFBD>鈭穿<EFBFBD>
    <EFBFBD><EFBFBD>蝛粹𡢿: ai-clinical
    隞枏<EFBFBD>: ai-clinical_frontend-nginx
    <EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>𧋦: v1.0
    
    # <20>𨅯<EFBFBD>霈輸䔮<E8BCB8><EFBFBD>
    <EFBFBD><EFBFBD><EFBFBD>? gofeng117@163.com
    <EFBFBD><EFBFBD>: fengzhibo117
    
  4. 摨𠉛鍂<EFBFBD>滨蔭嚗?

    # <20>臬𢆡<E887AC>賭誘
    <EFBFBD>臬𢆡<EFBFBD>賭誘: <EFBFBD>嗵征嚗<EFBFBD><EFBFBD>汞NTRYPOINT嚗?
    
    # 蝡臬藁<E887AC>滨蔭
    摰孵膥蝡臬藁: 80
    <EFBFBD>讛悅: TCP
    
  5. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>儭?<3F>喲睸<E596B2>滨蔭嚗㚁<E59A97>

    BACKEND_SERVICE_HOST=172.17.173.73  # Node.js<6A>𡒊垢<F0A1928A><E59EA2><EFBFBD>IP
    BACKEND_SERVICE_PORT=3001
    
  6. 蝵𤑳<EFBFBD><EFBFBD>滨蔭嚗?

    VPC: ai-clinical-vpc
    鈭斗揢<EFBFBD>? ai-clinical-vsw-f
    摰匧<EFBFBD>蝏? ai-clinical-sg
    
  7. <EFBFBD>亙熒璉<EFBFBD><EFBFBD><EFBFBD>

    # 摮䀹暑璉<E69A91><E79289>?
    <EFBFBD><EFBFBD>交䲮撘? HTTP
    <EFBFBD><EFBFBD>亥楝敺? /health
    蝡臬藁: 80
    <EFBFBD><EFBFBD>撱嗉<EFBFBD>: 10蝘?
    <EFBFBD><EFBFBD>仿𡢿<EFBFBD>? 10蝘?
    
    # 撠梁貌璉<E8B28C><E79289>?
    <EFBFBD><EFBFBD>交䲮撘? HTTP
    <EFBFBD><EFBFBD>亥楝敺? /health
    蝡臬藁: 80
    <EFBFBD><EFBFBD>撱嗉<EFBFBD>: 5蝘?
    
  8. <EFBFBD>孵稬<EFBFBD>霈文<EFBFBD>撱箝<EFBFBD>?

蝑匧<EFBFBD><EFBFBD>函蔡摰峕<EFBFBD>

  • <EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD>靘钅<EFBFBD>蝵脯<EFBFBD>煾△<EFBFBD>?
  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝箝<EFBFBD>𪊟unning<EFBFBD>𡢅<EFBFBD>蝥?<3F><><EFBFBD>嚗?
  • 霈啣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗䫤http://172.17.173.72:80`

撉諹<EFBFBD><EFBFBD>函蔡

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?

# <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

<EFBFBD><EFBFBD> <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. 餈𥕦<EFBFBD>SAE摨𠉛鍂嚗䫤frontend-nginx-service`
  2. <EFBFBD>孵稬<EFBFBD>𣂼<EFBFBD>蝵𤏸挪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>鞱挪<EFBFBD><EFBFBD>蝵柴<EFBFBD>騻ab
  3. <EFBFBD>孵稬<EFBFBD>鞉溶<EFBFBD><EFBFBD>蝵𤏸挪<EFBFBD><EFBFBD>?
  4. <EFBFBD>滨蔭<EFBFBD><EFBFBD>㺭嚗?
    韐蠘蝸<EFBFBD><EFBFBD>﹛蝐餃<EFBFBD>: <EFBFBD><EFBFBD>
    韐蠘蝸<EFBFBD><EFBFBD>﹛鈭批<EFBFBD>: CLB (隡删<E99AA1><E588A0><EFBFBD>頧賢<E9A0A7>銵?
    隞䁅晶璅<EFBFBD>: <EFBFBD><EFBFBD>隞䁅晶
    
    # <20>穃𨯬<E7A983>滨蔭
    <EFBFBD>讛悅: HTTP
    蝡臬藁: 80
    <EFBFBD>𡒊垢蝡臬藁: 80
    
    # <20>亙熒璉<E78692><E79289>?
    <EFBFBD>亙熒璉<EFBFBD><EFBFBD>? <20>舐鍂
    <EFBFBD><EFBFBD>亥楝敺? /health
    
  5. <EFBFBD>孵稬<EFBFBD>摰𠾼<EFBFBD>?
  6. 蝑匧<EFBFBD>2-3<><33><EFBFBD>嚗諹䌊<E8ABB9><EFBFBD><E585B8><EFBFBD>蝵飡P

<EFBFBD><EFBFBD>2嚗𡁏<EFBFBD><EFBFBD><EFBFBD>撱慢LB

  1. <EFBFBD><EFBFBD>CLB<EFBFBD><EFBFBD><EFBFBD><EFBFBD>https://slb.console.aliyun.com/
  2. <EFBFBD>𥕦遣韐蠘蝸<EFBFBD><EFBFBD>﹛摰硺<EFBFBD>
  3. <EFBFBD>滨蔭<EFBFBD>穃𨯬<EFBFBD><EFBFBD>HTTP:80嚗?
  4. 瘛餃<EFBFBD><EFBFBD>𡒊垢<EFBFBD>滚𦛚<EFBFBD><EFBFBD><EFBFBD>滨垢Nginx<EFBFBD><EFBFBD><EFBFBD>蝵飡P嚗?
  5. <EFBFBD>滨蔭<EFBFBD>亙熒璉<EFBFBD><EFBFBD>?

6.2 <20><EFBFBD><E79195><EFBFBD><E7A589><EFBFBD>

  • <EFBFBD>沒AE摨𠉛鍂霂行<EFBFBD>憿菜䰻<EFBFBD><EFBFBD>𣂼<EFBFBD>蝵𤏸挪<EFBFBD>桀𧑐<EFBFBD><EFBFBD><EFBFBD>?
  • 蝷箔<EFBFBD>嚗䫤http://8.140.53.236/`
  • 憭滚<EFBFBD>甇文𧑐<EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD>

<EFBFBD>?銝<><E98A9D><EFBFBD><EFBFBD><EFBFBD>湧曎頝舀<E9A09D>霂𤏪<E99C82>30<33><30><EFBFBD>嚗?

7.1 <20><EFBFBD><E7AE87><EFBFBD>瘚贝<E7989A>

瘚贝<EFBFBD>1嚗𡁜<EFBFBD>蝡舫△<EFBFBD><EFBFBD>?

# 瘚讛<E7989A><E8AE9B>刻挪<E588BB>?
http://8.140.53.236/

# 摨磰砲<E7A3B0><EFBFBD>嚗?
<0A>?React摨𠉛鍂甇<E98D82><EFBFBD>㰘蝸
<0A>?憿菟𢒰<E88F9F><EFBFBD><EFBFBD><0A>?瘝⊥<E7989D>CORS<52>躰秤

瘚贝<EFBFBD>2嚗𡁜<EFBFBD>摨瑟<EFBFBD><EFBFBD>?

# <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"
  }
}

瘚贝<EFBFBD>3嚗䥪ython<EFBFBD>滚𦛚餈墧𦻖

# <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>

瘚贝<EFBFBD>1嚗𡁶鍂<EFBFBD>瑞蒈敶?

  1. 霈輸䔮 http://8.140.53.236/
  2. 颲枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
  3. <EFBFBD>孵稬<EFBFBD><EFBFBD>
  4. <EFBFBD><EFBFBD>瘚讛<EFBFBD><EFBFBD>沐etwork<EFBFBD>踎嚗?
    Request URL: http://8.140.53.236/api/v1/auth/login
    Status: 200 OK <20>?
    Response: { "token": "...", "user": {...} }
    

瘚贝<EFBFBD>2嚗𡁏㺭<EFBFBD><EFBFBD>瘣埈芋<EFBFBD><EFBFBD>撌亙<EFBFBD>C嚗?

  1. 餈𥕦<EFBFBD><EFBFBD>鞉㺭<EFBFBD><EFBFBD>瘣𨰜<EFBFBD><EFBFBD> <20>𣂼極<F0A382BC><EFBFBD>?
  2. 銝𠹺<EFBFBD>Excel<EFBFBD><EFBFBD>
  3. 撉諹<EFBFBD>銝𠹺<EFBFBD><EFBFBD>𣂼<EFBFBD>
  4. 瘚贝<EFBFBD>7憭批<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗𡁏㺭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?
    • <EFBFBD>㗇𥋘<EFBFBD>?
    • <EFBFBD>滨蔭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
    • <EFBFBD>孵稬<EFBFBD><EFBFBD>銵峕<EFBFBD><EFBFBD><EFBFBD>?
    • <EFBFBD><EFBFBD>蝏𤘪<EFBFBD>

**<2A>喲睸撉諹<E69289>**嚗?

瘚讛<EFBFBD><EFBFBD>沐etwork<EFBFBD>踎嚗?
POST http://8.140.53.236/api/v1/dc/tool-c/quick-action
Status: 200 OK <20>?

<0A>𡒊垢<F0A1928A><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>?

瘚贝<EFBFBD>3嚗𡁏<EFBFBD><EFBFBD><EFBFBD><EFBFBD>交芋<EFBFBD><EFBFBD>ASL嚗?

  1. 餈𥕦<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>烐芋<EFBFBD>?
  2. <EFBFBD>𥕦遣憿寧𤌍
  3. 銝𠹺<EFBFBD><EFBFBD><EFBFBD>
  4. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝑𥟇䰻
  5. 撉諹<EFBFBD>蝏𤘪<EFBFBD>

7.3 <20><EFBFBD>瘚贝<E7989A>

<EFBFBD><EFBFBD><EFBFBD>園𡢿璉<EFBFBD><EFBFBD>?

# 雿輻鍂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>𡒊賒霈輸䔮嚗?

<EFBFBD><EFBFBD> <20><EFBFBD><E68092><EFBFBD>蝵脫<E89DB5><E884AB>𨀣<EFBFBD><EFBFBD>

8.1 撌脤<E6928C>蝵脫<E89DB5><E884AB><EFBFBD><E28AA5>?

<EFBFBD>滚𦛚 <EFBFBD><EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>霈輸䔮
RDS PostgreSQL <EFBFBD>? pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432 <EFBFBD>?
Python敺格<EFBFBD><EFBFBD>? <EFBFBD>? 172.17.173.66:8000 <EFBFBD>?
Node.js<6A>𡒊垢 <EFBFBD>? 172.17.173.73:3001 <EFBFBD>?
<EFBFBD>滨垢Nginx <EFBFBD>? 172.17.173.72:80 <EFBFBD>?
CLB韐蠘蝸<EFBFBD><EFBFBD> <EFBFBD>? - http://8.140.53.236/

8.2 <20>喲睸<E596B2>滨蔭<E6BBA8><E894AD>

Python敺格<EFBFBD><EFBFBD>∠㴓憓<EFBFBD><EFBFBD><EFBFBD>?

LOG_LEVEL=INFO
TEMP_DIR=/tmp/extraction_service

Node.js<6A>𡒊垢<F0A1928A>喲睸<E596B2><EFBFBD><E887AC><EFBFBD>

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

<EFBFBD>滨垢Nginx<EFBFBD>喲睸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

BACKEND_SERVICE_HOST=172.17.173.73  # Node.js<6A>𡒊垢<F0A1928A><E59EA2><EFBFBD>IP
BACKEND_SERVICE_PORT=3001

<EFBFBD>𩤃<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嚗䔶<EFBFBD>SAE<EFBFBD>滨蔭鈭?PYTHON_SERVICE_URL

**閫<><E996AB>**嚗?

# <20>?<3F>躰秤
PYTHON_SERVICE_URL=http://172.17.173.66:8000

# <20>?甇<>
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000

<EFBFBD>躰悌嚗𡁶㴓憓<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>◆銝𦒘誨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝芸<EFBFBD>瘥漤<EFBFBD>銝滩<EFBFBD><EFBFBD><EFBFBD>


9.2 "<22>滚鍳摨𠉛鍂" vs "<22>函蔡摨𠉛鍂"

**<2A><EFBFBD>**嚗𡁶<E59A97><F0A181B6>?<3F>函蔡摨𠉛鍂"撖潸稲IP<49><EFBFBD><E595A3>䀹凒

<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>? IP<EFBFBD>臬炏<EFBFBD>? 雿閙𧒄雿輻鍂
<EFBFBD>滚鍳摨𠉛鍂 <EFBFBD>滚鍳摰孵膥 <EFBFBD>?銝滢<E98A9D> 靽格㺿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD>函蔡摨𠉛鍂 <EFBFBD>湔鰵<EFBFBD>𨅯<EFBFBD> <EFBFBD>?隡𡁜<E99AA1> <EFBFBD>湔鰵隞<EFBFBD><EFBFBD>/<2F>𨅯<EFBFBD><F0A885AF>?

<EFBFBD>躰悌嚗?

  • <EFBFBD>芯耨<EFBFBD>寧㴓憓<EFBFBD><EFBFBD><EFBFBD>?<3F>?<3F>?<3F>滚鍳摨𠉛鍂"
  • <EFBFBD>湔鰵隞<EFBFBD><EFBFBD>/<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>**嚗?

# <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`<60>留evDependencies嚗𣬚<E59A97>鈭抒㴓憓<E3B493><EFBFBD><EFBFBD>鋆?

**閫<><E996AB>**嚗𡁏辺隞嗅ế<E59785>剔㴓憓?

logger: config.nodeEnv === 'production'
  ? { level: config.logLevel }
  : { level: config.logLevel, transport: { target: 'pino-pretty', ... } }

9.5 ES Module<6C>澆捆<E6BE86>?

**<2A><EFBFBD>**嚗?

ReferenceError: require is not defined in ES module

**閫<><E996AB>**嚗?

// <20>?<3F>躰秤
require('os').loadavg()

// <20>?甇<>
import os from 'os';
os.loadavg()

9.6 Alpine Linux瘝⊥<E7989D>bash

**<2A><EFBFBD>**嚗?

executable '/bin/bash' not found in $PATH

**閫<><E996AB>**嚗?

  • SAE<EFBFBD>臬𢆡<EFBFBD>賭誘<EFBFBD>嗵征
  • <EFBFBD>碶蝙<EFBFBD>?/bin/sh<>𤜯

9.7 <20>唳旿摨𡤃RL銝剔<E98A9D>@蝚血噡

**<2A><EFBFBD>**嚗?

# <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>**嚗?

# <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>**嚗?

  • <EFBFBD>砍𧑐<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>?雿輻鍂<E8BCBB><EFBFBD><E7A589><EFBFBD>
  • SAE<EFBFBD><EFBFBD><EFBFBD>𨅯<EFBFBD> <20>?雿輻鍂VPC<50><EFBFBD>

9.9 <20>亙熒璉<E78692><E79289><EFBFBD>憪见辣餈?

**銝滚<E98A9D><E6BB9A>滚𦛚<E6BB9A><F0A69B9A><EFBFBD>冽𧒄<E586BD>?*嚗?

<EFBFBD>滚𦛚 <EFBFBD>臬𢆡<EFBFBD>園𡢿 <EFBFBD><EFBFBD>撱嗉<EFBFBD>撱箄悅
Python敺格<EFBFBD><EFBFBD>? 10蝘? 30蝘?
Node.js<6A>𡒊垢 30蝘? 60蝘?
<EFBFBD>滨垢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>隡睃飵嚗?

  • <EFBFBD>滨垢雿輻鍂<EFBFBD><EFBFBD><EFBFBD><EFBFBD> BACKEND_SERVICE_HOST
  • <EFBFBD><EFBFBD> envsubst <20>典捆<E585B8>典鍳<E585B8>冽𧒄<E586BD><EFBFBD><E586BD><EFBFBD>?
  • <EFBFBD>𡒊垢IP<EFBFBD>䀹凒<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滚鍳<EFBFBD>滨垢摨𠉛鍂嚗峕<EFBFBD><EFBFBD><EFBFBD><EFBFBD>齿鰵<EFBFBD><EFBFBD><EFBFBD>𨅯<EFBFBD>

<EFBFBD>喲睸<EFBFBD><EFBFBD>嚗?

  • docker-entrypoint.sh嚗𡁜𢆡<EFBFBD><EFBFBD>𤜯<EFBFBD><EFBFBD>蝵?
  • nginx.conf嚗帋蝙<EFBFBD>?${BACKEND_SERVICE_HOST} <20><EFBFBD>蝚?

<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>𧊋<EFBFBD><EFBFBD><E4B9A9>硋遣霈?

10.1 雿輻鍂<E8BCBB>滚𦛚<E6BB9A>𤑳緵隞<E7B7B5>𤜯IP<49><EFBFBD>

敶枏<EFBFBD><EFBFBD>滨蔭<EFBFBD><EFBFBD>沉P嚗㚁<EFBFBD>

BACKEND_SERVICE_HOST=172.17.173.73
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000

**隡睃<E99AA1><E79D83><EFBFBD>**嚗<><EFBFBD><EFBFBD><E586BD><EFBFBD>嚗㚁<E59A97>

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>**嚗?

  • <EFBFBD>?IP<49>䀹凒銝滚蔣<E6BB9A><EFBFBD>帋縑
  • <EFBFBD>?<3F>芸𢆡韐蠘蝸<E8A098><E89DB8>
  • <EFBFBD>?<3F>渡迅摰𡁜虾<F0A1819C>?

10.2 <20>滨蔭HTTPS

甇仿炊嚗?

  1. <EFBFBD>唾窈<EFBFBD><EFBFBD>
  2. <EFBFBD>唾窈SSL霂<EFBFBD>髡嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>滩晶霂<EFBFBD><EFBFBD>譩et's Encrypt嚗?
  3. <EFBFBD>每LB<EFBFBD>滨蔭HTTPS<EFBFBD>穃𨯬嚗<EFBFBD><EFBFBD>?43嚗?
  4. 銝𠹺<EFBFBD>SSL霂<EFBFBD>
  5. <EFBFBD>滨蔭HTTP<EFBFBD>芸𢆡頝唾蓮HTTPS

10.3 <20>滨蔭<E6BBA8>芸𢆡<E88AB8>拍憬摰?

**SAE撘寞<E69298>找撓蝻?*嚗?

# <20>寞旿CPU雿輻鍂<E8BCBB><E98D82><EFBFBD><EFBFBD>蝻拙捆
<EFBFBD><EFBFBD>撠誩<EFBFBD>靘𧢲㺭: 1
<EFBFBD><EFBFBD>憭批<EFBFBD>靘𧢲㺭: 3
<EFBFBD><EFBFBD>CPU雿輻鍂<EFBFBD>? 70%

<EFBFBD><EFBFBD><EFBFBD>箸艶嚗?

  • <EFBFBD><EFBFBD>𢆡憭?
  • 擃睃陸<EFBFBD><EFBFBD><EFBFBD>凒憭𡁜<EFBFBD>靘?
  • 雿𤾸陸<EFBFBD><EFBFBD>蝥行<EFBFBD><EFBFBD>?

10.4 <20>滨蔭<E6BBA8><EFBFBD><E4BA99><EFBFBD><EFBFBD>

**<2A><EFBFBD>鈭騌LS嚗<53>𠯫敹埈<E695B9><E59F88><EFBFBD>**嚗?

  • <EFBFBD>芸𢆡<EFBFBD><EFBFBD>SAE<EFBFBD><EFBFBD>
  • 摰墧𧒄<EFBFBD>亥砭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
  • <EFBFBD>滨蔭<EFBFBD>𡃏郎閫<EFBFBD><EFBFBD>

10.5 <20>滨蔭<E6BBA8>烐綉<E78390>𡃏郎

**鈭𤑳<E988AD><F0A491B3><EFBFBD>蝵?*嚗?

CPU雿輻鍂<EFBFBD>?> 80%  <20>?<3F>𡃏郎
<EFBFBD><EFBFBD><EFBFBD>雿輻鍂<EFBFBD>?> 80% <20>?<3F>𡃏郎
<EFBFBD>亙熒璉<EFBFBD><EFBFBD>亙仃韐?   <20>?<3F>𡃏郎
<EFBFBD>躰秤<EFBFBD><EFBFBD>憓𧼮<EFBFBD>    <20>?<3F>𡃏郎

<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>笔𦶢隞文<E99A9E><E69687>?

11.1 Docker<65>𨅯<EFBFBD>蝞∠<E89D9E>

# <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>?

# 餈墧𦻖<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>?

# 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/

<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵脣<E89DB5><E884A3><EFBFBD><E99E89><EFBFBD><E4BAA4>?

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂?

  • <EFBFBD>?Python敺格<E695BA><E6A0BC><EFBFBD>摨瑟<E691A8><E7919F>仿<EFBFBD><EFBFBD>
  • <EFBFBD>?Node.js<6A>𡒊垢<F0A1928A>亙熒璉<E78692><E79289>仿<EFBFBD><EFBFBD>
  • <EFBFBD>?<3F>滨垢Nginx<6E>亙熒璉<E78692><E79289>仿<EFBFBD><EFBFBD>
  • <EFBFBD>?<3F><EFBFBD><E7A589><EFBFBD><E595A3>臭誑霈輸䔮
  • <EFBFBD>?<3F><EFBFBD><E586BD>臭誑甇<E8AA91><EFBFBD><EFBFBD>
  • <EFBFBD>?<3F><>讃蝑𥟇䰻<F0A59F87><EFBFBD><EFBFBD>
  • <EFBFBD>?<3F>唳旿皜<E697BF><E79A9C>撌亙<E6928C>C<EFBFBD>?憭批<E686AD><E689B9>賣迤撣?
  • <EFBFBD>?<3F><>辣銝𠹺<E98A9D><F0A0B9BA><EFBFBD><EFBFBD>
  • <EFBFBD>?AI撖寡<E69296><E5AFA1><EFBFBD><EFBFBD>
  • <EFBFBD>?瘝⊥<E7989D>CORS<52>躰秤
  • <EFBFBD>?瘝⊥<E7989D>502/504<30>躰秤
  • <EFBFBD>?<3F><EFBFBD><E6BB9A>園𡢿 < 1蝘?

<EFBFBD><EFBFBD><EFBFBD>湔鰵

  • <EFBFBD>湔鰵 00-<2D>函蔡餈𥕦漲<F0A595A6><EFBFBD>.md 銝剔<E98A9D><E58994><EFBFBD><EFBFBD>IP<49><EFBFBD>
  • 霈啣<EFBFBD><EFBFBD><EFBFBD>霈輸䔮<EFBFBD><EFBFBD>
  • 霈啣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䔮憸睃<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
  • <EFBFBD>湔鰵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>舀𣈲<E88880>?

撣貉<EFBFBD><EFBFBD><EFBFBD><EFBFBD>埝䰻

<EFBFBD><EFBFBD>1嚗𡁜極<EFBFBD><EFBFBD><EFBFBD><EFBFBD>仿<EFBFBD> "connect ECONNREFUSED 127.0.0.1:8000"

  • <EFBFBD><EFBFBD>代ode.js<6A><EFBFBD><E887AC><EFBFBD> EXTRACTION_SERVICE_URL
  • 蝖桐<EFBFBD><EFBFBD>潔蛹 http://172.17.173.66:8000
  • <EFBFBD>滚鍳Node.js摨𠉛鍂

<EFBFBD><EFBFBD>2嚗𡁜<EFBFBD>蝡航挪<EFBFBD><EFBFBD>蝡舀𥁒502<EFBFBD>躰秤

  • <EFBFBD><EFBFBD><EFBFBD>蝡舐㴓憓<EFBFBD><EFBFBD><EFBFBD>?BACKEND_SERVICE_HOST
  • 蝖桐<EFBFBD><EFBFBD>潔蛹Node.js<6A>𡒊垢<F0A1928A><E59EA2><EFBFBD>蝵飡P
  • <EFBFBD>滚鍳<EFBFBD>滨垢摨𠉛鍂

<EFBFBD><EFBFBD>3嚗锭AE摨𠉛鍂<EFBFBD>臬𢆡憭梯揖

  • <EFBFBD><EFBFBD>摰硺<EFBFBD><EFBFBD><EFBFBD>嚗峕𪄳<EFBFBD><EFBFBD>雿㯄<EFBFBD>霂臭縑<EFBFBD>?
  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦<EFBFBD><EFBFBD>﹝蝚?<3F>?<3F>喲睸蝏誯<E89D8F>銝擧釣<E693A7><EFBFBD>憿?
  • 撖寧<EFBFBD><EFBFBD><EFBFBD>主ockerfile<EFBFBD>𣬚㴓憓<EFBFBD><EFBFBD><EFBFBD>?

<EFBFBD><20><EFBFBD>

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>撌脩<EFBFBD>摰峕<EFBFBD><EFBFBD>I銝游<EFBFBD><EFBFBD>𠉛弦撟喳蝱<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵莎<EFBFBD>

**<2A>函蔡<E587BD><EFBFBD>**嚗?

  • <EFBFBD>?4銝芣<E98A9D><E88AA3><EFBFBD><E288AA><EFBFBD><E586BD><EFBFBD>蝵莎<E89DB5>Python<6F><6E>ode.js<6A><73><EFBFBD>蝡胯<E89DA1><E883AF><EFBFBD><EFBFBD>嚗?
  • <EFBFBD>?<3F><><EFBFBD><EFBFBD><E58CA7>賣迤撣貉<E692A3>銵?
  • <EFBFBD>?<3F><EFBFBD><E7A589>臭誑霈輸䔮
  • <EFBFBD>?<3F>煺漣<E785BA><EFBFBD>撠梁貌

<EFBFBD>函蔡<EFBFBD>園𡢿嚗?

  • <EFBFBD><EFBFBD>園𡢿嚗?.5撠𤩺𧒄
  • 摰鮋<EFBFBD><EFBFBD>園𡢿嚗𡁶漲6撠𤩺𧒄嚗<EFBFBD><EFBFBD><EFBFBD>恍䔮憸䀹<EFBFBD><EFBFBD><EFBFBD>

**<2A>喲睸蝏誯<E89D8F>**嚗?

  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>憿餌移蝖桀龪<EFBFBD>?
  • <EFBFBD><EFBFBD>"<22>滚鍳摨𠉛鍂"<22>?<3F>函蔡摨𠉛鍂"
  • Dockerfile敹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
  • 雿輻鍂VPC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𨅯<EFBFBD>
  • <EFBFBD>亙熒璉<EFBFBD><EFBFBD><EFBFBD>憪见辣餈蠘<EFBFBD>頞喳<EFBFBD>

**銝衤<E98A9D>甇?*嚗?

  • <EFBFBD>滨蔭HTTPS
  • 蝏穃<EFBFBD><EFBFBD><EFBFBD>
  • <EFBFBD>滨蔭<EFBFBD>烐綉<EFBFBD>𡃏郎
  • 隡睃<EFBFBD><EFBFBD><EFBFBD>
  • <EFBFBD>滨蔭<EFBFBD>芸𢆡憭<EFBFBD>

<EFBFBD><EFBFBD>﹝蝏湔擪嚗𡁏𧋦<EFBFBD><EFBFBD><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>