Files
AIclinicalresearch/docs/05-部署文档/08-部署检查清单.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

691 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# <20>函蔡璉<E894A1><E79289><EFBFBD><E4BAA4>?- 隞?<3F><EFBFBD>蝥輻<E89DA5>摰峕㟲Checklist
> **<2A><><EFBFBD><EFB99D>𧋦嚗?* v1.0
> **<2A>𥕦遣<F0A595A6><EFBFBD>嚗?* 2025-12-14
> **<2A><><EFBFBD>箸艶嚗?* 擐𡝗活<F0A19D97>函蔡<E587BD>圈燵<E59C88><EFBFBD><E494B6>煺漣<E785BA><EFBFBD>
> **憸<><EFBFBD>園𡢿嚗?* 4-5撠𤩺𧒄嚗<F0A79284><E59A97><EFBFBD><EFBFBD><EFBFBD>雿𨀣𧒄<F0A880A3><EFBFBD>
---
## <20><> 雿輻鍂霂湔<E99C82>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵脤◇摨誩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>甇仿炊嚗峕<EFBFBD>銝芣郊撉文<EFBFBD><EFBFBD><EFBFBD>
- <20>?憭漤<E686AD><EFBFBD><EFBFBD><E59A97><EFBFBD>𣂼<EFBFBD><F0A382BC>枏㗲嚗?- <20><EFBFBD><><EFBFBD>園𡢿
- <20>𩤃<EFBFBD> <20>喲睸瘜冽<E7989C>鈭钅★
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
**撱箄悅嚗𡁏<E59A97><F0A1818F><EFBFBD>憭滚<E686AD><E6BB9A><EFBFBD>霈啗蔓隞塚<E99A9E><E5A19A>鞾★摰峕<E691B0><E5B395>?*
---
## <20>嗆挾1嚗𡁜抅蝖<E68A85>霈暹鴌<E69AB9><E9B48C><EFBFBD>嚗㇄ay 1銝𠰴<E98A9D>嚗?
### 1.1 <20><EFBFBD>鈭𤏸揭<F0A48FB8><EFBFBD>憭?
<EFBFBD>?**摰𧼮<E691B0>霈方<E99C88>**
- <20><EFBFBD> 5<><35><EFBFBD>
- <20><EFBFBD>鈭烐綉<E78390>嗅蝱 > 韐血噡蝞∠<E89D9E> > 摰𧼮<E691B0>霈方<E99C88>
- <20>𩤃<EFBFBD><><E99AA1>霈方<E99C88><E696B9><EFBFBD><EFBFBD>𨯫銝𡁏<E98A9D><F0A1818F>?
<EFBFBD>?**韐血噡<E8A180><E599A1><EFBFBD>?*
- <20><EFBFBD> 2<><32><EFBFBD>
- 撱箄悅<E7AE84><E68285><EFBFBD><EFBFBD>瞼500嚗<30><E59A97><EFBFBD><EFBFBD><EFBFBD><EFBFBD>祉漲瞼1,200嚗?- 韐寧鍂銝剖<E98A9D> > <20><><EFBFBD>?
<EFBFBD>?**撘<><E69298>𡁏<EFBFBD><F0A1818F>?*
- <20><EFBFBD> 5<><35><EFBFBD>
- <20><><EFBFBD><E996AC><EFBFBD>𡁶<EFBFBD><F0A181B6>滚𦛚嚗? - <20>?SAE嚗𠄎erverless摨𠉛鍂撘閙<E69298>嚗? - <20>?RDS嚗<53><E59A97><EFBFBD>唳旿摨橒<E691A8>
- <20>?OSS嚗<53>笆鞊<E99E8A><E288AA><EFBFBD>
- <20>?VPC嚗<43><E59A97><EFBFBD><EFBFBD>蝏頣<E89D8F>
- <20>?NAT蝵穃<E89DB5>
- <20>?ACR嚗<52><EFBFBD><EFBFBD><E588B8>𤩺<EFBFBD><F0A4A9BA><EFBFBD>
- <20>?ECS嚗<53><E59A97><EFBFBD>滚𦛚<E6BB9A><EFBFBD>Dify<66><EFBFBD>
<EFBFBD>?**<2A>𥕦遣RAM摮鞱揭<E99EB1><EFBFBD><E79880><EFBFBD><EFBFBD><E58A90><EFBFBD>嚗?*
- <20><EFBFBD> 10<31><30><EFBFBD>
- RAM霈輸䔮<E8BCB8><EFBFBD> > <20><EFBFBD> > <20>𥕦遣<F0A595A6><EFBFBD>
- <20><><EFBFBD>嚗鋫liyunSAEFullAccess, AliyunRDSFullAccess, AliyunOSSFullAccess
- <20>𩤃<EFBFBD> 銝滩<E98A9D><E6BBA9>其蜓韐血噡<E8A180>函蔡嚗<E894A1><E59A97><EFBFBD><EFBFBD><E588B8>拙之
---
### 1.2 VPC蝵𤑳<E89DB5><F0A491B3>滨蔭 潃鐥<E6BD83>潃鐥<E6BD83>潃?
<EFBFBD>?**<2A>𥕦遣VPC**
- <20><EFBFBD> 5<><35><EFBFBD>
- VPC<50><EFBFBD><E689B9>?> <20>𥕦遣VPC
- <20>滨妍嚗惨iclinical-vpc-prod
- 蝵烐挾嚗?72.16.0.0/12
- <20><EFBFBD>嚗䬙n-hangzhou嚗<75>㜺撌痹<E6928C><E797B9>硋停餈穃𧑐<E7A983>?
<EFBFBD>?**<2A>𥕦遣鈭斗揢<E69697>?*
- <20><EFBFBD> 3<><33><EFBFBD>
- VPC霂行<E99C82> > 鈭斗揢<E69697>?> <20>𥕦遣鈭斗揢<E69697>?- <20>滨妍嚗惨iclinical-vsw-prod
- <20>舐鍂<E88890><EFBFBD><E7B6BD>𤩺㦤<F0A4A9BA>舐鍂<E88890>
- 蝵烐挾嚗?72.16.0.0/20
<EFBFBD>?**潃?<3F>𥕦遣NAT蝵穃<E89DB5><EFBFBD><E59A97><EFBFBD><EFBFBD><EFBFBD><E59A97>**
- <20><EFBFBD> 15<31><35><EFBFBD>
- VPC<50><EFBFBD><E689B9>?> NAT蝵穃<E89DB5> > <20>𥕦遣NAT蝵穃<E89DB5>
- VPC嚗惨iclinical-vpc-prod
- 鈭斗揢<E69697><EFBFBD>aiclinical-vsw-prod
-<>聢嚗𡁜<E59A97><F0A1819C>?- 霈∟晶<E2889F><EFBFBD>嚗𡁏<E59A97>雿輻鍂<E8BCBB>讛恣韐?- <20>𩤃<EFBFBD> **瘝⊥<E7989D>NAT蝵穃<E89DB5>嚗峕<E59A97><E5B395>𡅅I<F0A18585><EFBFBD><E8A098><EFBFBD><EFBFBD>𧒄嚗?*
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD>`07-<2D>喲睸<E596B2>滨蔭銵亙<E98AB5>霂湔<E99C82>.md` 蝚?<3F>?
<EFBFBD>?**<2A>𥕦遣撟嗥<E6929F>摰鍃IP**
- <20><EFBFBD> 5<><35><EFBFBD>
- NAT蝵穃<E89DB5>霂行<E99C82> > 撘寞<E69298><EFBFBD>蝵飡P > 蝏穃<E89D8F>EIP
- <20>𥕦遣<F0A595A6>蚩IP
- 撣血捐嚗𡁏<E59A97>雿輻鍂瘚<E98D82><E7989A>
- 霈啣<E99C88>EIP<49><EFBFBD>嚗噔_______________
<EFBFBD>?**<2A>滨蔭SNAT<41>∠𤌍**
- <20><EFBFBD> 3<><33><EFBFBD>
- NAT蝵穃<E89DB5>霂行<E99C82> > SNAT蝞∠<E89D9E> > <20>𥕦遣SNAT<41>∠𤌍
- 鈭斗揢<E69697><EFBFBD>aiclinical-vsw-prod
- <20><EFBFBD>IP嚗𡁜<E59A97><F0A1819C><EFBFBD>撱箇<E692B1>EIP
- <20>𩤃<EFBFBD> 餈嗘<E9A488>甇亥悟SAE<41>臭誑霈輸䔮<E8BCB8><EFBFBD>
<EFBFBD>?**<2A>𥕦遣摰匧<E691B0>蝏?*
- <20><EFBFBD> 5<><35><EFBFBD>
- ECS<43><EFBFBD><E689B9>?> 摰匧<E691B0>蝏?> <20>𥕦遣摰匧<E691B0>蝏?- <20>滨妍嚗惨iclinical-sg-prod
- VPC嚗惨iclinical-vpc-prod
- <20>交䲮<E4BAA4>𤏸<EFBFBD><F0A48FB8><EFBFBD>
- <20><>捂 80/TCP <20><EFBFBD>嚗?72.16.0.0/12嚗ĀPC<50><43><EFBFBD>嚗? - <20><>捂 22/TCP <20><EFBFBD>嚗𡁏<E59A97><F0A1818F><EFBFBD><EFBFBD><EFBFBD>砍恕IP嚗𠄎SH蝞∠<E89D9E>嚗? - <20><EFBFBD> <20><><EFBFBD>?<3F><EFBFBD>嚗?.0.0.0/0
---
### 1.3 RDS PostgreSQL 15 <20>函蔡
<EFBFBD>?**<2A>𥕦遣RDS摰硺<E691B0>**
- <20><EFBFBD> 10<31><30><EFBFBD><EFBFBD><E59A97><EFBFBD><E695BA>撱?5<><35><EFBFBD>嚗?- RDS<44><EFBFBD><E689B9>?> <20>𥕦遣摰硺<E691B0>
- <20>唳旿摨梶掩<E6A2B6><EFBFBD>PostgreSQL
- <20><>𧋦嚗?5
-<>聢嚗鬏ds.pg.s2.large嚗?<3F>?GB嚗?- 摮睃<E691AE>嚗?00GB SSD
- VPC嚗惨iclinical-vpc-prod
- 鈭斗揢<E69697><EFBFBD>aiclinical-vsw-prod
- 霈啣<E99C88><E595A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗鬏m-____________.pg.rds.aliyuncs.com
<EFBFBD>?**<2A>滨蔭<E6BBA8><EFBFBD><E8B3A2>?*
- <20><EFBFBD> 2<><32><EFBFBD>
- RDS摰硺<E691B0>霂行<E99C82> > <20>唳旿摰匧<E691B0><E58CA7>?> <20><EFBFBD><E8B3A2>閗挽蝵?- 瘛餃<E7989B><E9A483><EFBFBD><E8B3A2><EFBFBD><EFBFBD><E89D8F>sae-vpc
- IP<49><EFBFBD>嚗?72.16.0.0/12嚗ĀPC蝵烐挾嚗?- <20>𩤃<EFBFBD> **敹<><EFBFBD>汲PC蝵烐挾嚗䔶<E59A97><E494B6>賜鍂<E8B39C>閙㦤IP嚗?*
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD>`PostgreSQL<51>函蔡蝑𣇉裦-<2D><EFBFBD><E8A9A8><EFBFBD>.md`
<EFBFBD>?**<2A>𥕦遣<F0A595A6>唳旿摨栞揭<E6A09E>?*
- <20><EFBFBD> 3<><33><EFBFBD>
- RDS摰硺<E691B0>霂行<E99C82> > 韐血噡蝞∠<E89D9E> > <20>𥕦遣韐血噡
- 韐血噡<E8A180><EFBFBD>aiclinical_rw
-<><E69296>嚗𡄯<E59A97>16雿滚撩撖<E692A9><E69296>嚗諹扇敶訫<E695B6><EFBFBD><E69296>蝞∠<E89D9E><E288A0><EFBFBD>
- 韐血噡蝐餃<E89D90>嚗𡁏芦<F0A1818F>朞揭<E69C9E>?- <20><><EFBFBD><EFBFBD>唳旿摨橒<E691A8>蝔滚<E89D94><E6BB9A>𥕦遣
<EFBFBD>?**<2A>𥕦遣<F0A595A6>唳旿摨?*
- <20><EFBFBD> 2<><32><EFBFBD>
- RDS摰硺<E691B0>霂行<E99C82> > <20>唳旿摨梶恣<E6A2B6>?> <20>𥕦遣<F0A595A6>唳旿摨?- <20>唳旿摨枏<E691A8>嚗惨i_clinical_research
- 摮㛖泵<E39B96><E6B3B5><EFBFBD>UTF8
- <20><><EFBFBD>韐血噡嚗惨iclinical_rw嚗<77><EFBFBD><EFBFBD>
<EFBFBD>?**<2A>滨蔭<E6BBA8>芸𢆡憭<F0A286A1>遢**
- <20><EFBFBD> 3<><33><EFBFBD>
- RDS摰硺<E691B0>霂行<E99C82> > 憭<><EFBFBD><EFBFBD> > 憭<>遢霈曄蔭
- <20>唳旿憭<E697BF>遢靽萘<E99DBD>嚗?憭?- <20><EFBFBD><EFBFBD>遢靽萘<E99DBD>嚗?憭抬<E686AD><E68AAC>𩤃<EFBFBD><>◆撘<E29786><E69298><EFBFBD><E88D94><EFBFBD>PITR嚗?- 憭<><EFBFBD><EFBFBD>嚗𡁏<E59A97>憭?- 憭<><EFBFBD>園𡢿嚗?2:00-04:00嚗<30><E59A97><EFBFBD><EFBFBD>
<EFBFBD>?**撖澆<E69296><E6BE86>唳旿摨橒<E691A8>pg_dump嚗?*
- <20><EFBFBD> 5<><35><EFBFBD>
- <20>砍𧑐<E7A08D><EFBFBD>嚗? ```bash
# 1. 撖澆枂<E6BE86>砍𧑐<E7A08D>唳旿摨? docker exec ai-clinical-postgres pg_dump -U postgres -d ai_clinical_research \
--format=plain --no-owner --no-acl --encoding=UTF8 \
> backup_$(date +%Y%m%d_%H%M%S).sql
# 2. 撖澆<E69296><E6BE86>訌DS嚗<53><E59A97><EFBFBD>CS頝單踎<E596AE><EFBFBD>銝湔𧒄撘<F0A79284><E69298><EFBFBD>蝵𡢅<E89DB5>
psql -h rm-xxxxx.pg.rds.aliyuncs.com \
-p 5432 \
-U aiclinical_rw \
-d ai_clinical_research \
-f backup_20251214_100000.sql
```
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD>`PostgreSQL<EFBFBD>函蔡蝑𣇉裦-<2D><EFBFBD><E8A9A8><EFBFBD>.md` 蝚?<3F>?
<EFBFBD>?**撉諹<E69289><E8ABB9>唳旿摨枏紡<E69E8F>?*
- <20><EFBFBD> 3<><33><EFBFBD>
- 餈墧𦻖RDS嚗峕<E59A97>銵䕘<E98AB5>
```sql
-- 撉諹<E69289>Schema
\dn
-- 摨磰砲<E7A3B0><EFBFBD>10銝杵chema
-- 撉諹<E69289>銵冽㺭<E586BD>? SELECT schemaname, COUNT(*)
FROM pg_tables
WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
GROUP BY schemaname;
-- platform_schema: 8, aia_schema: 5, pkb_schema: 5, asl_schema: 6, dc_schema: 6
-- 撉諹<E69289><E8ABB9>唳旿
SELECT COUNT(*) FROM platform_schema.users;
-- 摨磰砲<E7A3B0>?<3F><EFBFBD><E288B4><EFBFBD><E7A2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧶏<EFBFBD>
```
---
### 1.4 OSS撖寡情摮睃<E691AE><E79D83>滨蔭
<EFBFBD>?**<2A>𥕦遣OSS Bucket**
- <20><EFBFBD> 5<><35><EFBFBD>
- OSS<53><EFBFBD><E689B9>?> Bucket<65>𡑒” > <20>𥕦遣Bucket
- Bucket<65>滨妍嚗惨iclinical-data-prod
- <20><EFBFBD>嚗䬙n-hangzhou嚗<75><E59A97>VPC<50><43>𧑐<EFBFBD><F0A79190><EFBFBD>
- 霂餃<E99C82><E9A483><EFBFBD><EFBFBD>嚗𡁶<E59A97><F0A181B6><EFBFBD>Private嚗争<E59A97>儭?敹<>◆蝘<E29786><E89D98>
- <20><>𧋦<EFBFBD><EFBFBD>嚗𡁜<E59A97><F0A1819C>?- <20>滚𦛚蝡臬<E89DA1><EFBFBD><E69296><EFBFBD>喲𡡒嚗<F0A1A192><EFBFBD><EFBFBD>
<EFBFBD>?**<2A>滨蔭<E6BBA8>笔𦶢<E7AC94><EFBFBD><EFBFBD><E996AB><EFBFBD><EFBFBD><EFBFBD>**
- <20><EFBFBD> 3<><33><EFBFBD>
- Bucket霂行<E99C82> > <20><EFBFBD>霈曄蔭 > <20>笔𦶢<E7AC94><EFBFBD>
- 閫<><E996AB><EFBFBD>滨妍嚗飱elete-temp-files
- 摨𠉛鍂<F0A0899B><E98D82>凒嚗鮁ploads/temp/
- <20><EFBFBD>嚗𡁜<E59A97><F0A1819C>?- 憭拇㺭嚗?0憭抬<E686AD>銝湔𧒄<E6B994><F0A79284>辣30憭拙<E686AD><E68B99>芸𢆡<E88AB8>𣳇膄嚗?
<EFBFBD>?**<2A>𥕦遣RAM閫坿𠧧嚗<F0A0A7A7><EFBFBD><EFBFBD>**
- <20><EFBFBD> 10<31><30><EFBFBD>
- RAM霈輸䔮<E8BCB8><EFBFBD> > 閫坿𠧧 > <20>𥕦遣閫坿𠧧
- 閫坿𠧧蝐餃<E89D90>嚗𡁏芦<F0A1818F>𡁏<EFBFBD><F0A1818F><EFBFBD><E2889F>?- <20>𦯀縑<F0A6AF80>滚𦛚嚗锭AE
- 閫坿𠧧<E59DBF>滨妍嚗鋫liyunSAEDefaultRole
- <20><><EFBFBD>蝑𣇉裦嚗鋫liyunOSSFullAccess
- <20>𩤃<EFBFBD> 雿輻鍂RAM閫坿𠧧瘥𨀞ccessKey<65><EFBFBD><E6B8B8>?
<EFBFBD>?**霈啣<E99C88>OSS<53>滨蔭靽⊥<E99DBD>**
- Bucket<65>滨妍嚗惨iclinical-data-prod
- <20><EFBFBD>嚗䬙n-hangzhou
- <20><><EFBFBD>Endpoint嚗駅ss-cn-hangzhou-internal.aliyuncs.com
- AccessKey ID嚗𡄯<E59A97><EFBFBD><E68692>銝滨鍂RAM閫坿𠧧嚗?- AccessKey Secret嚗𡄯<E59A97><EFBFBD><E68692>銝滨鍂RAM閫坿𠧧嚗?
---
### 1.5 ACR摰孵膥<E5ADB5>𨅯<EFBFBD>隞枏<E99A9E><E69E8F>滨蔭
<EFBFBD>?**<2A>𥕦遣<F0A595A6><EFBFBD>蝛粹𡢿**
- <20><EFBFBD> 3<><33><EFBFBD>
- 摰孵膥<E5ADB5>𨅯<EFBFBD><F0A885AF>滚𦛚 > <20><EFBFBD>蝛粹𡢿 > <20>𥕦遣<F0A595A6><EFBFBD>蝛粹𡢿
- <20><EFBFBD>蝛粹𡢿嚗惨iclinical
- 蝐餃<E89D90>嚗𡁶<E59A97><F0A181B6>?
<EFBFBD>?**<2A>滨蔭霈輸䔮<E8BCB8><EFBFBD>**
- <20><EFBFBD> 2<><32><EFBFBD>
- 摰孵膥<E5ADB5>𨅯<EFBFBD><F0A885AF>滚𦛚 > 霈輸䔮<E8BCB8><EFBFBD> > 霈曄蔭<E69B84><EFBFBD><EFBFBD><E69296>
- <20><EFBFBD><E586BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>韐血噡嚗?- 撖<><E69296>嚗𡄯<E59A97>霈曄蔭銝<E894AD>銝芸撩撖<E692A9><E69296>嚗?- 霈啣<E99C88><E595A3><EFBFBD><E9A483>賭誘嚗? ```bash
docker login --username=your-account registry.cn-hangzhou.aliyuncs.com
```
---
## <20>嗆挾2嚗𡁏瓲敹<E793B2><E695B9><EFBFBD><EFBFBD>蝵莎<E89DB5>Day 1銝见<E98A9D>嚗?
### 2.1 Node.js<6A>𡒊垢<F0A1928A>函蔡
<EFBFBD>?**<2A>砍𧑐隞<F0A79190><E99A9E><EFBFBD><EFBFBD><EFBFBD>**
- <20><EFBFBD> 10<31><30><EFBFBD>
- 蝖桐<E89D96><EFBFBD><E99A9E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`git pull origin main`
- 摰㕑<E691B0>靘肽<E99D98>嚗䫤cd backend && npm install`
- 蝻𤥁<E89DBB><EFBFBD><E99A9E>嚗䫤npm run build`
- 撉諹<E69289>蝻𤥁<E89DBB>嚗䫤ls dist/` 摨磰砲<E7A3B0><EFBFBD>霂穃<E99C82><E7A983><EFBFBD>S<EFBFBD><53>
<EFBFBD>?**Prisma<6D><EFBFBD><E6BB9A>峕郊嚗<E9838A><E59A97><EFBFBD><E996AC>**
- <20><EFBFBD> 5<><35><EFBFBD>
- 餈墧𦻖RDS嚗峕<E59A97>銵䕘<E98AB5>
```bash
cd backend
# 靽格㺿 .env 銝摧DS餈墧𦻖
DATABASE_URL=postgresql://aiclinical_rw:password@rm-xxxxx.pg.rds.aliyuncs.com:5432/ai_clinical_research
# <20><EFBFBD><E6BB9A>峕郊
npx prisma db pull
# <20><><EFBFBD>Prisma Client
npx prisma generate
```
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD>`05-Node.js<6A>𡒊垢-SAE摰孵膥<E5ADB5>函蔡<E587BD><E894A1><EFBFBD>.md` 蝚?<3F>?
<EFBFBD>?**靽格㺿HTTP Client頞<74>𧒄<EFBFBD>滨蔭**
- <20><EFBFBD> 5<><35><EFBFBD>
- 蝻𤥁<E89DBB> `backend/src/common/http/httpClient.ts`
- 霈曄蔭timeout: 120000嚗?20蝘𡜐<E89D98>
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD>`07-<2D>喲睸<E596B2>滨蔭銵亙<E98AB5>霂湔<E99C82>.md` 蝚?<3F>?
<EFBFBD>?**靽格㺿Dify Client摰寥<E691B0><EFBFBD><E686AD>**
- <20><EFBFBD> 5<><35><EFBFBD>
- 蝻𤥁<E89DBB> `backend/src/common/rag/DifyClient.ts`
- 瘛餃<E7989B>銝湔𧒄Key摰寥<E691B0><E5AFA5><EFBFBD>
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD>`07-<2D>喲睸<E596B2>滨蔭銵亙<E98AB5>霂湔<E99C82>.md` 蝚?<3F>?
<EFBFBD>?**<2A><>遣Docker<65>𨅯<EFBFBD>**
- <20><EFBFBD> 5<><35><EFBFBD>
- ```bash
cd backend
docker build -t backend:v1.0.0 .
```
- 撉諹<E69289><E8ABB9>𨅯<EFBFBD>嚗䫤docker images | grep backend`
<EFBFBD>?**<2A>砍𧑐瘚贝<E7989A><E8B49D>𨅯<EFBFBD>**
- <20><EFBFBD> 5<><35><EFBFBD>
- ```bash
docker run -p 3001:3001 \
-e DATABASE_URL="postgresql://..." \
-e NODE_ENV=production \
backend:v1.0.0
```
- 瘚贝<E7989A><E8B49D>亙熒璉<E78692><E79289><EFBFBD>`curl http://localhost:3001/health`
<EFBFBD>?**<2A><EFBFBD><E588B8><EFBFBD>ACR**
- <20><EFBFBD> 3<><33><EFBFBD>
- ```bash
docker tag backend:v1.0.0 registry.cn-hangzhou.aliyuncs.com/aiclinical/backend:v1.0.0
docker push registry.cn-hangzhou.aliyuncs.com/aiclinical/backend:v1.0.0
```
<EFBFBD>?**<2A>𥕦遣SAE摨𠉛鍂**
- <20><EFBFBD> 10<31><30><EFBFBD>
- SAE<41><EFBFBD><E689B9>?> 摨𠉛鍂<F0A0899B>𡑒” > <20>𥕦遣摨𠉛鍂
- 摨𠉛鍂<F0A0899B>滨妍嚗惨iclinical-backend
- <20>函蔡<E587BD><EFBFBD>嚗𡁜捆<F0A1819C><EFBFBD><E588B8>?- <20>𨅯<EFBFBD><F0A885AF><EFBFBD>嚗鬏egistry.cn-hangzhou.aliyuncs.com/aiclinical/backend:v1.0.0
- VPC嚗惨iclinical-vpc-prod
- 鈭斗揢<E69697><EFBFBD>aiclinical-vsw-prod
- 摰硺<E691B0><EFBFBD>聢嚗?<3F>?GB
- 摰硺<E691B0><E7A1BA><EFBFBD>嚗𡁏<E59A97>撠?嚗峕<E59A97>憭?0
- <20>亙熒璉<E78692><E79289><EFBFBD>HTTP /health
<EFBFBD>?**<2A>滨蔭<E6BBA8><EFBFBD><E887AC><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD>**
- <20><EFBFBD> 10<31><30><EFBFBD>
- SAE摨𠉛鍂霂行<E99C82> > <20><EFBFBD><E887AC><EFBFBD>
- 敹<><E695B9><EFBFBD><EFBFBD>嚗? ```bash
# <20>唳旿摨? DATABASE_URL=postgresql://aiclinical_rw:password@rm-xxxxx.pg.rds.aliyuncs.com:5432/ai_clinical_research?connection_limit=10&pool_timeout=10
# OSS
STORAGE_TYPE=oss
OSS_REGION=cn-hangzhou
OSS_BUCKET=aiclinical-data-prod
OSS_ACCESS_KEY_ID=LTAI5***
OSS_ACCESS_KEY_SECRET=***
# 蝻枏<E89DBB>/<2F><EFBFBD>嚗㇊ostgres-Only嚗? CACHE_TYPE=postgres
QUEUE_TYPE=pgboss
# Dify嚗<79><E59A97>儭?銝湔𧒄<E6B994><EFBFBD>
DIFY_API_URL=http://172.16.x.x/v1
DIFY_API_KEY=temp_placeholder_will_update_later
# Python敺格<E695BA><E6A0BC><EFBFBD>蝔滚<E89D94>憛怠<E6869B>嚗? EXTRACTION_SERVICE_URL=http://172.16.x.x:8000 # <20>𩤃<EFBFBD> 雿輻鍂Python<6F>滚𦛚<E6BB9A><F0A69B9A><EFBFBD>蝵飡P嚗<50><E59A97>SAE<41><EFBFBD><E689B9>啗繮<E59597><EFBFBD>
# LLM API
DEEPSEEK_API_KEY=sk-***
# <20><EFBFBD>
NODE_ENV=production
PORT=3001
JWT_SECRET=嚗<><E59A97><EFBFBD>𣂷<EFBFBD>銝芸撩撖<E692A9>𤨎嚗? ```
<EFBFBD>?**<2A>函蔡摨𠉛鍂**
- <20><EFBFBD> 5<><35><EFBFBD><EFBFBD><E59A97><EFBFBD><E695BA>蝵?0<><30><EFBFBD>嚗?- SAE<41><EFBFBD><E689B9>?> <20>函蔡
- 蝑匧<E89D91>摰硺<E691B0><E7A1BA>臬𢆡
- <20><EFBFBD><E4BAA6><EFBFBD>嚗𡁜<E59A97>霂亦<E99C82><E4BAA6>?<3F>唳旿摨栞<E691A8><E6A09E><EFBFBD><E4BAA4>?
<EFBFBD>?**撉諹<E69289><E8ABB9>𡒊垢<F0A1928A>滚𦛚**
- <20><EFBFBD> 3<><33><EFBFBD>
- ```bash
# <20>亙熒璉<E78692><E79289>? curl http://aiclinical-backend.sae:3001/health
# 摨磰砲餈𥪜<E9A488> 200 OK
# 瘚贝<E7989A><E8B49D><EFBFBD>瘜典<E7989C>
curl -X POST http://aiclinical-backend.sae:3001/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","password":"Test123456","name":"瘚贝<E7989A><E8B49D><EFBFBD>"}'
# 摨磰砲餈𥪜<E9A488> 200 OK
```
---
### 2.2 Python敺格<E695BA><E6A0BC><EFBFBD>蝵?
<EFBFBD>?**<2A>砍𧑐隞<F0A79190><E99A9E><EFBFBD><EFBFBD><EFBFBD>**
- <20><EFBFBD> 5<><35><EFBFBD>
- `cd extraction_service`
- 蝖桐<E89D96>requirements.txt甇<74>
<EFBFBD>?**靽格㺿Dockerfile嚗Áorkers<72>𣂼<EFBFBD>嚗?*
- <20><EFBFBD> 2<><32><EFBFBD>
- 蝻𤥁<E89DBB> `extraction_service/Dockerfile`
- CMD霈曄蔭workers=2
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD>`07-<2D>喲睸<E596B2>滨蔭銵亙<E98AB5>霂湔<E99C82>.md` 蝚?<3F>?
<EFBFBD>?**<2A><>遣Docker<65>𨅯<EFBFBD>**
- <20><EFBFBD> 10<31><30><EFBFBD>嚗㇊ython<6F>𨅯<EFBFBD><EFBFBD>之嚗?- ```bash
cd extraction_service
docker build -t python-service:v1.0.0 .
```
<EFBFBD>?**<2A>砍𧑐瘚贝<E7989A><E8B49D>𨅯<EFBFBD>**
- <20><EFBFBD> 5<><35><EFBFBD>
- ```bash
docker run -p 8000:8000 python-service:v1.0.0
curl http://localhost:8000/health
```
<EFBFBD>?**<2A><EFBFBD><E588B8><EFBFBD>ACR**
- <20><EFBFBD> 5<><35><EFBFBD>
- ```bash
docker tag python-service:v1.0.0 registry.cn-hangzhou.aliyuncs.com/aiclinical/python-service:v1.0.0
docker push registry.cn-hangzhou.aliyuncs.com/aiclinical/python-service:v1.0.0
```
<EFBFBD>?**<2A>𥕦遣SAE摨𠉛鍂**
- <20><EFBFBD> 10<31><30><EFBFBD>
- 摨𠉛鍂<F0A0899B>滨妍嚗惨iclinical-python-service
- <20>𨅯<EFBFBD>嚗鬏egistry.cn-hangzhou.aliyuncs.com/aiclinical/python-service:v1.0.0
- 摰硺<E691B0><EFBFBD>聢嚗?<3F>?GB嚗<42><E59A97>儭?銝滩<E98A9D>雿𦒘<E99BBF>2GB嚗?- 摰硺<E691B0><E7A1BA><EFBFBD>嚗𡁏<E59A97>撠?嚗峕<E59A97>憭?
<EFBFBD>?**<2A>滨蔭<E6BBA8><EFBFBD><E887AC><EFBFBD>**
- <20><EFBFBD> 3<><33><EFBFBD>
- ```bash
OSS_REGION=cn-hangzhou
OSS_BUCKET=aiclinical-data-prod
OSS_ACCESS_KEY_ID=***
OSS_ACCESS_KEY_SECRET=***
```
<EFBFBD>?**<2A>函蔡撟園<E6929F>霂?*
- <20><EFBFBD> 5<><35><EFBFBD>
- <20>函蔡摨𠉛鍂
- 瘚贝<E7989A>嚗䫤curl http://172.16.x.x:8000/health`<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵飡P嚗?
---
### 2.3 <20>滨垢<E6BBA8>函蔡
<EFBFBD>?**<2A>砍𧑐隞<F0A79190><E99A9E><EFBFBD><EFBFBD><EFBFBD>**
- <20><EFBFBD> 10<31><30><EFBFBD>
- `cd frontend-v2`
- `npm install`
- `npm run build`
<EFBFBD>?**靽格㺿nginx.conf嚗<66><E59A97>隞嗅之撠誯<E692A0><E8AAAF><EFBFBD>**
- <20><EFBFBD> 2<><32><EFBFBD>
- 蝻𤥁<E89DBB> `frontend-v2/nginx.conf.template`
- 瘛餃<E7989B> `client_max_body_size 50M;`
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD>`07-<2D>喲睸<E596B2>滨蔭銵亙<E98AB5>霂湔<E99C82>.md` 蝚?<3F>?
<EFBFBD>?**<2A><>遣Docker<65>𨅯<EFBFBD>**
- <20><EFBFBD> 5<><35><EFBFBD>
- ```bash
cd frontend-v2
docker build -t frontend:v1.0.0 .
```
<EFBFBD>?**<2A><EFBFBD><E588B8><EFBFBD>ACR**
- <20><EFBFBD> 3<><33><EFBFBD>
- ```bash
docker tag frontend:v1.0.0 registry.cn-hangzhou.aliyuncs.com/aiclinical/frontend:v1.0.0
docker push registry.cn-hangzhou.aliyuncs.com/aiclinical/frontend:v1.0.0
```
<EFBFBD>?**<2A>𥕦遣SAE摨𠉛鍂**
- <20><EFBFBD> 10<31><30><EFBFBD>
- 摨𠉛鍂<F0A0899B>滨妍嚗惨iclinical-frontend
- <20>𨅯<EFBFBD>嚗鬏egistry.cn-hangzhou.aliyuncs.com/aiclinical/frontend:v1.0.0
- 摰硺<E691B0><EFBFBD>聢嚗?.5<EFBFBD>?GB
- 摰硺<E691B0><E7A1BA><EFBFBD>嚗?
<EFBFBD>?**<2A>滨蔭<E6BBA8><EFBFBD><E887AC><EFBFBD>**
- <20><EFBFBD> 2<><32><EFBFBD>
- ```bash
BACKEND_SERVICE_HOST=aiclinical-backend.sae
BACKEND_SERVICE_PORT=3001
```
<EFBFBD>?**<2A>函蔡撟園<E6929F>霂?*
- <20><EFBFBD> 5<><35><EFBFBD>
- <20>函蔡摨𠉛鍂
- 瘚讛<E7989A><E8AE9B>刻挪<E588BB><EFBFBD>http://<2F>滨垢<E6BBA8><EFBFBD><E7A589><EFBFBD>
- 摨磰砲<E7A3B0><EFBFBD><E8A781><EFBFBD>憿菟𢒰
---
## <20>嗆挾3嚗鋽ify<66>滚𦛚<E6BB9A>函蔡嚗㇄ay 2銝𠰴<E98A9D>嚗?
### 3.1 ECS<43>滚𦛚<E6BB9A><EFBFBD>憭?
<EFBFBD>?**<2A>𥕦遣ECS摰硺<E691B0>**
- <20><EFBFBD> 10<31><30><EFBFBD><EFBFBD><E59A97><EFBFBD><E695BA>撱?<3F><><EFBFBD>嚗?- ECS<43><EFBFBD><E689B9>?> <20>𥕦遣摰硺<E691B0>
- 摰硺<E691B0><EFBFBD>聢嚗塄cs.c6.xlarge嚗?<3F>?GB嚗?- <20>𨅯<EFBFBD>嚗䦧buntu 22.04
- VPC嚗惨iclinical-vpc-prod
- 鈭斗揢<E69697><EFBFBD>aiclinical-vsw-prod
- 摰匧<E691B0><EFBFBD><E89D8F>aiclinical-sg-prod
- <20><EFBFBD>IP嚗𡁜<E59A97><F0A1819C><EFBFBD><E3B5AA><EFBFBD>蝞∠<E89D9E><E288A0>㷉ify霈輸䔮嚗?- 霈啣<E99C88><E595A3><EFBFBD>IP嚗噔_______________
<EFBFBD>?**SSH<53><EFBFBD>ECS**
- <20><EFBFBD> 2<><32><EFBFBD>
- ```bash
ssh root@ECS<43><EFBFBD>IP
```
<EFBFBD>?**摰㕑<E691B0>Docker**
- <20><EFBFBD> 5<><35><EFBFBD>
- ```bash
curl -fsSL https://get.docker.com | bash
systemctl start docker
systemctl enable docker
docker --version
```
<EFBFBD>?**摰㕑<E691B0>Docker Compose**
- <20><EFBFBD> 3<><33><EFBFBD>
- ```bash
curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
```
<EFBFBD>?**<2A>滨蔭Swap嚗<70>俈甇㏕OM嚗?*
- <20><EFBFBD> 5<><35><EFBFBD>
- ```bash
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
swapon --show
```
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD>`03-Dify-ECS<43>函蔡摰<E894A1><E691B0><EFBFBD><EFBFBD><EFBFBD>.md` 蝚?<3F>?
---
### 3.2 Dify<66>函蔡
<EFBFBD>?**銝贝蝸Dify**
- <20><EFBFBD> 5<><35><EFBFBD>
- ```bash
cd /opt
git clone https://github.com/langgenius/dify.git
cd dify/docker
```
<EFBFBD>?**靽格㺿docker-compose.yaml嚗<6C><EFBFBD><E59EA2><EFBFBD><EFBFBD><EFBFBD>**
- <20><EFBFBD> 5<><35><EFBFBD>
- 蝻𤥁<E89DBB> `docker-compose.yaml`
- Redis蝡臬藁嚗䫤127.0.0.1:6379:6379`
- Weaviate蝡臬藁嚗䫤127.0.0.1:8080:8080`
- <20>𩤃<EFBFBD> <20><EFBFBD>Nginx撖孵<E69296>嚗?0蝡臬藁嚗?- <20><> <20><><EFBFBD><EFBFBD><EFBFBD>`07-<2D>喲睸<E596B2>滨蔭銵亙<E98AB5>霂湔<E99C82>.md` 蝚?<3F>?
<EFBFBD>?**<2A>滨蔭.env<6E><76>辣**
- <20><EFBFBD> 10<31><30><EFBFBD>
- ```bash
cp .env.example .env
vi .env
```
- <20>喲睸<E596B2>滨蔭嚗? ```bash
# Redis
REDIS_HOST=redis
REDIS_PORT=6379
# PostgreSQL
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify
DB_USERNAME=postgres
DB_PASSWORD=嚗<><E59A97><EFBFBD>𣂼撩撖<E692A9><E69296>嚗?
# Weaviate
WEAVIATE_ENDPOINT=http://weaviate:8080
# <20><EFBFBD>
SECRET_KEY=嚗<><E59A97><EFBFBD>𣂼撩撖<E692A9>𤨎嚗? ```
<EFBFBD>?**<2A>臬𢆡Dify**
- <20><EFBFBD> 10<31><30><EFBFBD><EFBFBD><E59A97><E288AA><EFBFBD><EFBFBD><E996AC><EFBFBD><EFBFBD><E39A9A>𧶏<EFBFBD>
- ```bash
docker-compose up -d
docker-compose logs -f
# 蝑匧<E89D91><E58CA7><EFBFBD><EFBFBD><EFBFBD><E39787><E288AA><EFBFBD>蝥?-3<><33><EFBFBD>嚗? ```
<EFBFBD>?**撉諹<E69289>Dify<66>滚𦛚**
- <20><EFBFBD> 3<><33><EFBFBD>
- 瘚讛<E7989A><E8AE9B>刻挪<E588BB><EFBFBD>http://ECS<43><EFBFBD>IP
- 摨磰砲<E7A3B0><EFBFBD>Dify甈<E79488>憿菟𢒰
---
### 3.3 Dify<66>滨蔭
<EFBFBD>?**瘜典<E7989C>蝞∠<E89D9E><E288A0>䁅揭<E48185>?*
- <20><EFBFBD> 2<><32><EFBFBD>
- 擐𡝗活霈輸䔮隡𡁏<E99AA1>蝷箸釣<E7AEB8>?- <20>桃拳嚗惨dmin@your-company.com
- 撖<><E69296>嚗𡄯<E59A97>撘箏<E69298><E7AE8F><EFBFBD><EFBFBD>
<EFBFBD>?**<2A>𥕦遣API Key**
- <20><EFBFBD> 3<><33><EFBFBD>
- <20><EFBFBD>Dify
- 霈曄蔭 > API撖<49>𤨎 > <20>𥕦遣撖<E981A3>𤨎
- <20>滨妍嚗鋳ackend Service
- 憭滚<E686AD>API Key嚗惨pp-xxxxxxxxxxxxxxxxxxxxx
- <20>𩤃<EFBFBD> 憒亙<E68692>靽嘥<E99DBD><EFBFBD><EFBFBD>曄內銝<E585A7>甈?
<EFBFBD>?**<2A>湔鰵<E6B994>𡒊垢<F0A1928A><EFBFBD><E887AC><EFBFBD>**
- <20><EFBFBD> 5<><35><EFBFBD>
- SAE<41><EFBFBD><E689B9>?> aiclinical-backend > <20><EFBFBD><E887AC><EFBFBD>
- 靽格㺿嚗? ```bash
DIFY_API_URL=http://172.16.x.x/v1 # ECS<43><53><EFBFBD>IP
DIFY_API_KEY=app-xxxxxxxxxxxxxxxxxxxxx # <20><EFBFBD>Key
```
- 靽嘥<E99DBD> > <20>滚鍳摨𠉛鍂
<EFBFBD>?**瘚贝<E7989A>PKB<4B><EFBFBD>**
- <20><EFBFBD> 5<><35><EFBFBD>
- ```bash
# <20>𥕦遣<F0A595A6><EFBFBD>摨? curl -X POST http://<2F>滨垢<E6BBA8><EFBFBD>/api/v1/pkb/knowledge-bases \
-H "Authorization: Bearer USER_TOKEN" \
-d '{"name":"瘚贝<E7989A><E8B49D><EFBFBD>摨?}'
# 摨磰砲餈𥪜<E9A488> 200 OK
```
---
## <20>嗆挾4嚗𡁶垢<F0A181B6>啁垢瘚贝<E7989A>嚗㇄ay 2銝见<E98A9D>嚗?
### 4.1 <20><EFBFBD>瘚贝<E7989A>
<EFBFBD>?**<2A><EFBFBD>瘜典<E7989C>/<2F><EFBFBD>**
- <20><EFBFBD> 5<><35><EFBFBD>
- <20>滨垢瘜典<E7989C><E585B8>啁鍂<E59581>?- <20><EFBFBD><E9A483>𣂼<EFBFBD>
<EFBFBD>?**AI撖寡<E69296>嚗㇁IA璅<E79285>嚗?*
- <20><EFBFBD> 5<><35><EFBFBD>
- <20>𥕦遣憿寧𤌍
- <20>𤏸絲撖寡<E69296>
- 撉諹<E69289>DeepSeek API靚<49><EFBFBD>𣂼<EFBFBD>
<EFBFBD>?**<2A><EFBFBD>摨橒<E691A8>PKB璅<E79285>嚗?*
- <20><EFBFBD> 10<31><30><EFBFBD>
- <20>𥕦遣<F0A595A6><EFBFBD>摨?- 銝𠹺<E98A9D>PDF<44><46>
- 撉諹<E69289>Dify憭<79><E686AD><EFBFBD>𣂼<EFBFBD>
<EFBFBD>?**<2A><>讃蝑偦<E89D91><EFBFBD>ASL璅<E79285>嚗?*
- <20><EFBFBD> 10<31><30><EFBFBD>
- <20>𥕦遣蝑偦<E89D91>厰★<E58EB0>?- 銝𠹺<E98A9D>PDF
- 撉諹<E69289>Python<6F>滚𦛚閫<F0A69B9A><E996AB><EFBFBD>𣂼<EFBFBD>
<EFBFBD>?**<2A>唳旿皜<E697BF><E79A9C>嚗㇄C璅<E79285>嚗?*
- <20><EFBFBD> 10<31><30><EFBFBD>
- 銝𠹺<E98A9D>Excel
- <20><EFBFBD><EFBFBD><E79A9C>
- 撉諹<E69289>Polars憭<73><E686AD><EFBFBD>𣂼<EFBFBD>
---
### 4.2 <20><EFBFBD>瘚贝<E7989A>
<EFBFBD>?**<2A><EFBFBD><E6BB9A>園𡢿**
- <20><EFBFBD> 10<31><30><EFBFBD>
- API<50><EFBFBD><E6BB9A>園𡢿 < 2蝘?- 憿菟𢒰<E88F9F>㰘蝸<E3B098>園𡢿 < 3蝘?
<EFBFBD>?**撟嗅<E6929F>瘚贝<E7989A>**
- <20><EFBFBD> 10<31><30><EFBFBD>
- 雿輻鍂Apache Bench<63>銺Meter
- 璅⊥<E79285>10銝芸僎<E88AB8>𤑳鍂<F0A491B3>?- 撉諹<E69289><E8ABB9>𣳇<EFBFBD>霂?
---
### 4.3 <20>烐綉<E78390>滨蔭
<EFBFBD>?**<2A>滨蔭<E6BBA8><EFBFBD><E4BA99><EFBFBD>**
- <20><EFBFBD> 10<31><30><EFBFBD>
- SAE<41>芸𢆡<E88AB8><EFBFBD>stdout/stderr
- 撉諹<E69289><E8ABB9><EFBFBD><E4BA99>舀䰻<E88880>?
<EFBFBD>?**<2A>滨蔭<E6BBA8>𡃏郎閫<E9838E><E996AB>**
- <20><EFBFBD> 15<31><35><EFBFBD>
- 鈭𤑳<E988AD><F0A491B3>?> <20>𡃏郎閫<E9838E><E996AB>
- CPU > 70%
- <20><><EFBFBD> > 80%
- <20>躰秤<E8BAB0><EFBFBD> > 10<31>?<3F><><EFBFBD>
---
## <20>嗆挾5嚗帋<E59A97><E5B88B><EFBFBD><E7A2B6><EFBFBD>﹝嚗㇄ay 3嚗?
### 5.1 <20><EFBFBD><EFBFBD><E58A90>?
<EFBFBD>?**<2A>滨蔭SSH<53><EFBFBD><EFBFBD><E59A97><EFBFBD>睲噶<E79DB2><EFBFBD>**
- <20><EFBFBD> 10<31><30><EFBFBD>
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD>`07-<2D>喲睸<E596B2>滨蔭銵亙<E98AB5>霂湔<E99C82>.md` 蝚?<3F>?
<EFBFBD>?**摰䂿緵OSS蝑曉<E89D91>URL嚗<4C><E59A97><EFBFBD><EFBFBD>**
- <20><EFBFBD> 30<33><30><EFBFBD>
- <20><> <20><><EFBFBD><EFBFBD><EFBFBD>`07-<2D>喲睸<E596B2>滨蔭銵亙<E98AB5>霂湔<E99C82>.md` 蝚?<3F>?
<EFBFBD>?**<2A>滨蔭<E6BBA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
- <20><EFBFBD> 30<33><30><EFBFBD>
- 韐凋僭<E5878B><EFBFBD>
- <20>滨蔭DNS閫<53><E996AB>
- <20>滨蔭HTTPS霂<53>
---
### 5.2 <20><><EFBFBD><EFBFBD>
<EFBFBD>?**霈啣<E99C88><E595A3>滨蔭靽⊥<E99DBD>**
- <20><EFBFBD> 20<32><30><EFBFBD>
- <20>𥕦遣 `<EFBFBD>函蔡<EFBFBD>滨蔭皜<EFBFBD><EFBFBD>.xlsx`
- 霈啣<E99C88><E595A3><EFBFBD><EFBFBD><EFBFBD><E58CA7><EFBFBD><EFBFBD><EFBFBD>𧑐<EFBFBD><F0A79190><EFBFBD><EFBFBD>ey
<EFBFBD>?**憭<><EFBFBD>滨蔭<E6BBA8><E894AD>辣**
- <20><EFBFBD> 10<31><30><EFBFBD>
- Dify<66>?`.env` <20>?`docker-compose.yaml`
- 銝𠹺<E98A9D><F0A0B9BA><EFBFBD><E59581>滝it隞枏<E99A9E><E69E8F><EFBFBD><EFBFBD><E69296><EFBFBD>?
<EFBFBD>?**蝻硋<E89DBB>餈鞟輕<E99E9F><EFBFBD>**
- <20><EFBFBD> 30<33><30><EFBFBD>
- <20>亙虜<E4BA99><EFBFBD><EFBFBD><E7989A>
- <20><><EFBFBD><EFBFBD><E686AD><EFBFBD><E7989A>
- <20>𠉛頂鈭箔縑<E7AE94>?
---
## <20><EFBFBD>
### <20>園𡢿蝏蠘恣
| <20>嗆挾 | 憸<><EFBFBD>園𡢿 | 摰鮋<E691B0><E9AE8B>園𡢿 |
|------|---------|---------|
| <20>嗆挾1嚗𡁜抅蝖<E68A85>霈暹鴌 | 2撠𤩺𧒄 | _______ |
| <20>嗆挾2嚗𡁏瓲敹<E793B2><E695B9><EFBFBD>?| 2撠𤩺𧒄 | _______ |
| <20>嗆挾3嚗鋽ify<66>滚𦛚 | 1撠𤩺𧒄 | _______ |
| <20>嗆挾4嚗𡁏<E59A97>霂?| 1撠𤩺𧒄 | _______ |
| <20>嗆挾5嚗帋<E59A97><E5B88B>?| <20><EFBFBD>?| _______ |
| **<EFBFBD>餉恣** | **6撠𤩺𧒄** | _______ |
### <20>鞉𧋦蝏蠘恣
| <20>滚𦛚 | 閫<>聢 | <20><><EFBFBD><EFBFBD>?|
|------|------|--------|
| SAE<41>滨垢 | 0.5<EFBFBD>?GB<47>1 | 瞼50 |
| SAE<41>𡒊垢 | 1<>?GB<47>2 | 瞼200 |
| SAE Python | 1<>?GB<47>1 | 瞼100 |
| RDS PostgreSQL | 2<>?GB | 瞼400 |
| ECS Dify | 4<>?GB | 瞼300 |
| OSS | 50GB | 瞼10 |
| NAT蝵穃<E89DB5> | 撠誩<E692A0>+EIP | 瞼100 |
| **<EFBFBD>餉恣** | - | **瞼1,160/<2F>?* |
### 銝衤<E98A9D>甇?
<EFBFBD>?閫<><E996AB>7憭拍迅摰𡁏<E691B0>?<3F>?<3F>寞旿<E5AF9E>烐綉<E78390>唳旿靚<E697BF>㟲韏<E39FB2><E99F8F>
<EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>瞍𠉛<E79E8D>
<EFBFBD>?蝻硋<E89DBB><E7A18B><EFBFBD><E586BD><EFBFBD>
---
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>撌脩<EFBFBD>摰峕<EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>?<3F><><EFBFBD>蝵莎<E89DB5>** <20><>
**<EFBFBD><EFBFBD><EFBFBD>𥕦遣鈭綽<EFBFBD>** AI<41><EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD><EFBFBD>** 2025-12-14
**<EFBFBD><EFBFBD>𧋦嚗?* v1.0