Files
AIclinicalresearch/docs/05-部署文档/02-SAE部署完全指南(产品经理版).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

898 lines
20 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><> <20><EFBFBD>鈭騌AE<41>函蔡摰<E894A1><E691B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?
> **<2A><><EFBFBD><EFB99D>𧋦嚗?* v1.0
> **<2A>𥕦遣<F0A595A6><EFBFBD>嚗?* 2025-12-11
> **<2A><>鍂鈭箇黎嚗?* <20>𣳇<EFBFBD>蝵脩<E89DB5>撉𣬚<E69289>鈭批<E988AD>蝏讐<E89D8F><E8AE90><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
> **憸<><EFBFBD>園𡢿嚗?* 2-3撠𤩺𧒄嚗<F0A79284><E59A97><EFBFBD><EFBFBD><EFBFBD>𧒄<EFBFBD><EFBFBD>
> **<2A>曉漲蝑厩漣嚗?* 潃鐥<E6BD83><><E89D9E>𤏪<EFBFBD>靽嘥<E99DBD>蝥扳<E89DA5>蝔页<E89D94>
---
## <20><> <20><EFBFBD>
1. [<EFBFBD>滨蔭<EFBFBD><EFBFBD><EFBFBD>](#<23>滨蔭<E6BBA8><E894AD><EFBFBD>)
2. [<EFBFBD><EFBFBD>銝漤<EFBFBD><EFBFBD>揚銋訌edis](#<23><>銝漤<E98A9D><EFBFBD>揚銋郢edis)
3. [蝚砌<EFBFBD>甇伐<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Docker<EFBFBD>𨅯<EFBFBD>](#蝚砌<E89D9A>甇亙<E79487>憭晍ocker<65>𨅯<EFBFBD>)
4. [蝚砌<E89D9A>甇伐<E79487><E4BC90>滨蔭<E6BBA8><EFBFBD>鈭烐<E988AD><E78390>(#蝚砌<EFBFBD>甇仿<EFBFBD>蝵桅燵<EFBFBD><EFBFBD><EFBFBD>滚𦛚)
5. [蝚砌<EFBFBD>甇伐<EFBFBD><EFBFBD>函蔡<EFBFBD>訕AE](#蝚砌<E89D9A>甇仿<E79487>蝵脣<E89DB5>sae)
6. [蝚砍<E89D9A>甇伐<E79487><E4BC90>函蔡<E587BD>滨垢](#蝚砍<EFBFBD>甇仿<EFBFBD>蝵脣<EFBFBD>蝡?
7. [蝚砌<E89D9A>甇伐<E79487>撉諹<E69289><E8ABB9>函蔡](#蝚砌<EFBFBD>甇仿<EFBFBD><EFBFBD><EFBFBD>蝵?
8. [撣貉<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](#撣貉<E692A3><E8B289><EFBFBD><EFBFBD><E996AB>)
---
## <20>滨蔭<E6BBA8><E894AD><EFBFBD>
### <20>?<3F>典歇蝏讛揚銋啁<E98A8B><E59581>滚𦛚
| <20>滚𦛚 | <20><EFBFBD>?| 霂湔<E99C82> |
|------|------|------|
| **<EFBFBD><EFBFBD>鈭騌AE** | <20>?撌脰揚銋?| Serverless摨𠉛鍂撘閙<E69298> |
| **鈭烐㺭<E78390><EFBFBD>RDS PostgreSQL** | <20>?撌脰揚銋?| <20>唳旿摨𤘪<E691A8><F0A498AA>?|
| **撖寡情摮睃<E691AE>OSS** | <20>?撌脰揚銋?| <20><>辣摮睃<E691AE><E79D83>滚𦛚 |
### <20><20><EFBFBD><EFBFBD><E996AC><EFBFBD><E98B86>撌亙<E6928C>
1. **Docker Desktop**
- 銝贝蝸<E8B49D><EFBFBD>嚗冴ttps://www.docker.com/products/docker-desktop/
- Windows蝟餌<E89D9F><E9A48C>㗇𥋘 "Docker Desktop for Windows"
- 摰㕑<E691B0><E39591>𡡞<EFBFBD><F0A1A19E>舐㩞<E88890>?
2. **<EFBFBD><EFBFBD>鈭飈LI嚗<EFBFBD><EFBFBD><EFBFBD>**
-<><E68692>銝齿<E98A9D><E9BDBF>典𦶢隞方<E99A9E><EFBFBD>虾隞亙<E99A9E>蝔衤蝙<E8A1A4>券燵<E588B8><EFBFBD><E494B6><EFBFBD><E689B9><EFBFBD>憿菜<E686BF>雿?
---
## <20><>銝漤<E98A9D><EFBFBD>揚銋訌edis嚗?
### <20><> 蝑娍<E89D91>嚗?*<2A><EFBFBD>銝漤<E98A9D><EFBFBD><E996AC><EFBFBD>芣䔉<E88AA3><EFBFBD><E888AA><EFBFBD>閬?*
| <20>箸艶 | <20>臬炏<E887AC><E7828F><EFBFBD>edis | 霂湔<E99C82> |
|------|--------------|------|
| **撘<><E69298><EFBFBD>霂閧㴓憓?* | <20>?銝漤<E98A9D>閬?| 雿輻鍂<E8BCBB><E98D82><EFBFBD>蝻枏<E89DBB><E69E8F>喳虾 |
| **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><100鈭?* | <20>?銝漤<E98A9D>閬?| 雿輻鍂<E8BCBB><E98D82><EFBFBD>蝻枏<E89DBB>頞喳<E9A09E> |
| **銝剜<E98A9D><E5899C><EFBFBD>100-1000鈭?* | <20>𩤃<EFBFBD> 撱箄悅韐凋僭 | <20>𣂼<EFBFBD><F0A382BC><EFBFBD>嚗𡐿?00/<2F>?|
| **<EFBFBD><EFBFBD><EFBFBD>毺鍂<EFBFBD>?1000鈭?* | <20>?敹<>◆韐凋僭 | 敹<>◆雿輻鍂Redis |
### <20><20>𤑳<EFBFBD>撱箄悅
**<EFBFBD>啣銁<EFBFBD>𥕦遣撘<EFBFBD><EFBFBD><EFBFBD>霂閧㴓憓<EFBFBD><EFBFBD>銝滩<EFBFBD>韐凋僭Redis**
<EFBFBD><EFBFBD>嚗?
1. <20>?<3F><EFBFBD><EFBFBD><E99A9E>撌脩<E6928C><E884A9><EFBFBD> `CACHE_TYPE=memory`<EFBFBD><EFBFBD>摮条<EFBFBD>摮矋<EFBFBD>
2. <20>?撘<><E69298><EFBFBD>霂閖𧫴畾蛛<E795BE><E89B9B><EFBFBD><EFBFBD>蝻枏<E89DBB><EFBFBD><E691B0>憭毺鍂
3. <20>?蝑厩<E89D91><EFBFBD><E79487>蝥踹<E89DA5>嚗峕覔<E5B395><EFBFBD><E6A180><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E89084><EFBFBD>
4. <20>?<3F><><EFBFBD><EFBFBD>鞉𧋦嚗<F0A78BA6><E59A97><EFBFBD><EFBFBD>瞼200/<2F><><EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滨蔭嚗?*
```bash
# 銝滢蝙<E6BBA2>沖edis
CACHE_TYPE=memory
# <20>芣䔉<E88AA3><E49489><EFBFBD>𧒄嚗<F0A79284><EFBFBD><E898A8><EFBFBD>嫣蛹嚗?
CACHE_TYPE=redis
REDIS_HOST=r-xxxx.redis.rds.aliyuncs.com
REDIS_PASSWORD=your_password
```
---
## 蝚砌<E89D9A>甇伐<E79487><E4BC90><EFBFBD><EFBFBD>Docker<65>𨅯<EFBFBD>
### <20>𣑐 1.1 <20>𥕦遣Dockerfile<6C><65>
<EFBFBD>?`AIclinicalresearch/backend/` <20><EFBFBD>銝见<E98A9D>撱箸<E692B1>隞?`Dockerfile`<EFBFBD><EFBFBD><EFBFBD><EFBFBD>摮睃銁嚗㚁<EFBFBD>
```dockerfile
# ==================== <20><><EFBFBD>嗆挾 ====================
FROM node:22-alpine AS builder
WORKDIR /app
# 憭滚<E686AD>靘肽<E99D98><E882BD><EFBFBD>
COPY package*.json ./
COPY prisma ./prisma/
# 摰㕑<E691B0>靘肽<E99D98>嚗ěpm ci 瘥?npm install <20>渡迅摰𡄯<E691B0>
RUN npm ci
# 憭滚<E686AD>皞𣂷誨<F0A382B7>?
COPY . .
# <20><><EFBFBD> Prisma Client
RUN npx prisma generate
# <20><>遣 TypeScript <20>?JavaScript
RUN npm run build
# ==================== 餈鞱<E9A488><E99EB1>嗆挾嚗<E68CBE>移蝞<E7A7BB><E89D9E>𨅯<EFBFBD>嚗?===================
FROM node:22-alpine
WORKDIR /app
# 憭滚<E686AD>靘肽<E99D98><E882BD><EFBFBD>
COPY package*.json ./
COPY prisma ./prisma/
# <20><EFBFBD><EFBFBD><E98B86>鈭找<E988AD>韏吔<E99F8F>雿梶妖<E6A2B6><EFBFBD>嚗?
RUN npm ci --only=production
# <20><><EFBFBD> Prisma Client
RUN npx prisma generate
# 隞擧<E99A9E>撱粹𧫴畾萄<E795BE><E89084><EFBFBD>霂穃<E99C82><E7A983><EFBFBD><EFBFBD>?
COPY --from=builder /app/dist ./dist
# 憭滚<E686AD><E6BB9A>滨蔭<E6BBA8><E894AD>
COPY prompts ./prompts
COPY config ./config
# <20>𥕦遣<F0A595A6>𡇙oot<6F><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD>
RUN addgroup -g 1001 -S nodejs && \
adduser -S nodejs -u 1001
USER nodejs
# <20>湧蠧蝡臬藁
EXPOSE 3001
# <20>亙熒璉<E78692><E79289><EFBFBD>SAE<41><45><EFBFBD><E996AC>
HEALTHCHECK --interval=30s --timeout=3s --start-period=40s --retries=3 \
CMD node -e "require('http').get('http://localhost:3001/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"
# <20>臬𢆡摨𠉛鍂
CMD ["node", "dist/index.js"]
```
### <20>𣑐 1.2 <20>𥕦遣 .dockerignore <20><>
<EFBFBD>?`backend/` <20><EFBFBD>銝见<E98A9D>撱?`.dockerignore`嚗?
```
node_modules
dist
npm-debug.log
.env
.env.*
uploads
*.md
.git
.gitignore
tests
```
### <20>𣑐 1.3 <20><>遣Docker<65>𨅯<EFBFBD>
**<EFBFBD><EFBFBD>PowerShell嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗㚁<EFBFBD>餈𥕦<EFBFBD>backend<EFBFBD><EFBFBD>嚗?*
```powershell
# 餈𥕦<E9A488><F0A595A6>𡒊垢<F0A1928A><EFBFBD>
cd D:\MyCursor\AIclinicalresearch\backend
# <20><><EFBFBD>𨅯<EFBFBD><EFBFBD><E59A97><EFBFBD>甇仿<E79487>閬?-10<31><30><EFBFBD>嚗?
docker build -t aiclinical-backend:dev .
# <20><EFBFBD><E4BAA6>𨅯<EFBFBD><F0A885AF>臬炏<E887AC><E7828F><EFBFBD>𣂼<EFBFBD>
docker images | Select-String "aiclinical-backend"
```
**憸<><E686B8>颲枏枂嚗?*
```
aiclinical-backend dev xxxx 2 minutes ago xxx MB
```
---
## 蝚砌<E89D9A>甇伐<E79487><E4BC90>滨蔭<E6BBA8><EFBFBD>鈭烐<E988AD><E78390>?
### <20><>儭?2.1 <20>滨蔭RDS<44>唳旿摨?
#### Step 1: <20><EFBFBD><E9A483><EFBFBD>鈭烐綉<E78390>嗅蝱
1. <20><EFBFBD>瘚讛<E7989A><E8AE9B><EFBFBD>霈輸䔮 https://www.aliyun.com
2. <20>孵稬<E5ADB5><EFBFBD>閫鉝<E996AB>𣬚蒈敶𨰻<E695B6>?
3. <20>㗇𥋘<E39787><EFBFBD><E494B6>唳旿摨?RDS<44>?
#### Step 2: <20>滨蔭<E6BBA8><EFBFBD><E8B3A2>?
1. <20>孵稬<E5ADB5><EFBFBD>RDS摰硺<E691B0>
2. 撌虫儒<E899AB>𨅯<EFBFBD> <20>?<3F>峕㺭<E5B395><EFBFBD><E6A180><EFBFBD><EFBFBD>?<3F>?<3F>𣬚蒾<F0A3AC9A><EFBFBD>霈曄蔭<E69B84>?
3. <20>孵稬<E5ADB5>峕溶<E5B395>删蒾<E588A0><EFBFBD><E6BB9A><EFBFBD><EFBFBD><EFBFBD>?
- <20><><EFBFBD><EFBFBD>滨妍嚗䫤SAE摨𠉛鍂`
- <20><EFBFBD><E8B3A2>𣗏P嚗𡁜<E59A97>憛?`0.0.0.0/0`<EFBFBD><EFBFBD>霈豢<EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD><EFBFBD><EFBFBD>
- **<2A>𩤃<EFBFBD><><E79487>銝羓瑪<E7BE93><EFBFBD><E88898>嫣蛹SAE<41><45>PC蝵烐挾**
#### Step 3: <20>𥕦遣<F0A595A6>唳旿摨枏<E691A8><E69E8F><EFBFBD>
1. 撌虫儒<E899AB>𨅯<EFBFBD> <20>?<3F>峕㺭<E5B395><EFBFBD>蝞∠<E89D9E><E288A0>?
2. <20>孵稬<E5ADB5><E7A8AC><EFBFBD>撱箸㺭<E7AEB8><EFBFBD><E6A180>?
- <20>唳旿摨枏<E691A8>蝘堆<E89D98>`aiclinical_dev`
- 摮㛖泵<E39B96><E6B3B5><EFBFBD>`UTF8`
- <20>孵稬<E5ADB5>𣬚摰𠾼<E691B0>?
3. 撌虫儒<E899AB>𨅯<EFBFBD> <20>?<3F>諹揭<E8ABB9>瑞恣<E7919E><E681A3><EFBFBD>?
4. <20>孵稬<E5ADB5><E7A8AC><EFBFBD>撱箄揭<E7AE84><EFBFBD>?
- 韐血噡<E8A180>滨妍嚗䫤aiclinical`
- 韐血噡蝐餃<E89D90>嚗𡁏芦<F0A1818F>朞揭<E69C9E>?
-<><E69296>嚗朞挽蝵桐<E89DB5>銝芸撩撖<E692A9><E69296><EFBFBD>扇雿誩<E99BBF><EFBFBD><E59A97>
- <20><><EFBFBD><EFBFBD>唳旿摨橒<E691A8><E6A992>㗇𥋘 `aiclinical_dev`嚗峕<EFBFBD><EFBFBD><EFBFBD>諹粉<EFBFBD><EFBFBD>?
- <20>孵稬<E5ADB5>𣬚摰𠾼<E691B0>?
#### Step 4: <20><EFBFBD>餈墧𦻖<E5A2A7><EFBFBD>
1. <20>孵稬摰硺<E691B0><E7A1BA><EFBFBD><EFBFBD>砌縑<E7A08C><EFBFBD>漤△<E6BCA4>?
2. <20><EFBFBD><E69B89><EFBFBD><EFBFBD>蝵穃𧑐<E7A983><F0A79190><EFBFBD><EFBFBD>蝐颱撮嚗䫤rm-xxxx.mysql.rds.aliyuncs.com`嚗?
3. **憭滚<E686AD>撟嗡<E6929F>摮䁅<E691AE>銝芸𧑐<E88AB8><F0A79190>**嚗<><E59A97><EFBFBD><EFBFBD><EFBCB6><EFBFBD>嚗?
---
### <20>𣑐 2.2 <20>滨蔭OSS撖寡情摮睃<E691AE>
#### Step 1: <20>𥕦遣Bucket
1. <20><EFBFBD>鈭烐綉<E78390>嗅蝱 <20>?<3F><>笆鞊<E99E8A><E288AA>汰SS<53>?
2. <20>孵稬<E5ADB5>𩱳ucket<65>𡑒”<F0A19192>?<3F>?<3F><><EFBFBD>撱慷ucket<65>?
- Bucket<65>滨妍嚗䫤aiclinical-dev`嚗<><E59A97><EFBFBD><EFBFBD>瘥?<3F><EFBFBD>+璅芣<E79285>嚗?
- <20><EFBFBD>嚗𡁻<E59A97>㗇𥋘銝竃DS<44><EFBFBD><E8A9A8><EFBFBD><EFBFBD><E8BAB9><EFBFBD><EFBFBD><E68692><EFBFBD>𦒘<EFBFBD>1嚗?
- 摮睃<E691AE>蝐餃<E89D90>嚗𠾼<E59A97><EFBFBD><E5B395><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
- 霂餃<E99C82><E9A483><EFBFBD><EFBFBD>嚗𠾼<E59A97>𣬚<EFBFBD><F0A3AC9A><EFBFBD>?
- <20><EFBFBD><E597A1>厰★暺䁅恕
- <20>孵稬<E5ADB5>𣬚摰𠾼<E691B0>?
#### Step 2: <20>𥕦遣RAM<41><EFBFBD><EFBFBD>鍂鈭垾PI霈輸䔮嚗?
1. <20><EFBFBD>鈭烐綉<E78390>嗅蝱 <20>?<3F>諹挪<E8ABB9>格綉<E6A0BC>買AM<41>?
2. 撌虫儒<E899AB>𨅯<EFBFBD> <20>?<3F>𣬚鍂<F0A3AC9A><EFBFBD>?<3F>?<3F><><EFBFBD>撱箇鍂<E7AE87><EFBFBD>?
- <20><EFBFBD><E9A483>滨妍嚗䫤aiclinical-oss`
- 霈輸䔮<E8BCB8><EFBFBD>嚗𡁜㗲<F0A1819C><EFBFBD>𣬚<EFBFBD>蝔贝挪<E8B49D><EFBFBD>?
- <20>孵稬<E5ADB5>𣬚摰𠾼<E691B0>?
3. <20>𥕦遣<F0A595A6>𣂼<EFBFBD><F0A382BC>𠬍<EFBFBD>**蝡见朖靽嘥<E99DBD><E598A5>曄內<E69B84><E585A7>ccessKey**嚗?
```
AccessKeyId: LTAI5t...嚗<><E59A97><EFBFBD><EFBFBD>摮矋<E691AE>
AccessKeySecret: xxxxxx嚗<78><E59A97><EFBFBD><EFBFBD>摮矋<E691AE><E79F8B>芣遬蝷箔<E89DB7>甈∴<E79488>嚗?
```
4. 蝏嗵鍂<E597B5><EFBFBD><E7919F><EFBFBD><EFBFBD>
- <20>孵稬<E5ADB5><EFBFBD><E586BD>滨妍 <20>?<3F><EFBFBD><E5B395>鞟恣<E99E9F><E681A3><EFBFBD>?<3F>?<3F>峕溶<E5B395><EFBFBD><E4ADBE><EFBFBD>?
- <20>㗇𥋘<E39787><F0A58B98><EFBFBD>嚗䫤AliyunOSSFullAccess`
- <20>孵稬<E5ADB5>𣬚摰𠾼<E691B0>?
---
### <20>閦 2.3 <20>滨蔭摰孵膥<E5ADB5>𨅯<EFBFBD><F0A885AF>滚𦛚嚗㇁CR嚗?
#### Step 1: 撘<><E69298>𡁏<EFBFBD><F0A1818F>?
1. <20><EFBFBD>鈭烐綉<E78390>嗅蝱 <20>?<3F><><EFBFBD><EFBFBD><E588B8>𤩺<EFBFBD><F0A4A9BA><EFBFBD>?
2.<><E68692><EFBFBD>鞟內撘<E585A7><E69298>𡄯<EFBFBD><F0A184AF>孵稬<E5ADB5>𣬚<EFBFBD><F0A3AC9A><EFBFBD><E596B3>𠾼<EFBFBD><EFBFBD>**<2A>滩晶**嚗?
#### Step 2: <20>𥕦遣<F0A595A6><EFBFBD>蝛粹𡢿
1. 撌虫儒<E899AB>𨅯<EFBFBD> <20>?<3F><EFBFBD>霈文<E99C88>靘卝<E99D98>?<3F>?<3F><>𦶢<EFBFBD>滨征<E6BBA8><EFBFBD>?
2. <20>孵稬<E5ADB5><E7A8AC><EFBFBD>撱箏𦶢<E7AE8F>滨征<E6BBA8><EFBFBD>?
- <20><EFBFBD>蝛粹𡢿嚗䫤aiclinical`
- <20>孵稬<E5ADB5>𣬚摰𠾼<E691B0>?
#### Step 3: <20>𥕦遣<F0A595A6>𨅯<EFBFBD>隞枏<E99A9E>
1. 撌虫儒<E899AB>𨅯<EFBFBD> <20>?<3F><EFBFBD><E5B1B8><EFBFBD>摨瓐<E691A8>?<3F>?<3F><><EFBFBD>撱粹<E692B1><E7B2B9><EFBFBD>摨瓐<E691A8>?
- 隞枏<E99A9E><E69E8F>滨妍嚗䫤backend-dev`
- <20><EFBFBD>蝛粹𡢿嚗𡁻<E59A97>㗇𥋘 `aiclinical`
- <20><EFBFBD>嚗䫤AI銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱<E596B3>𡒊垢-撘<><E69298>𤑳㴓憓<E3B493>
- 隞枏<E99A9E>蝐餃<E89D90>嚗𠾼<E59A97>𣬚<EFBFBD><F0A3AC9A><EFBFBD>?
-<><E99A9E>皞琜<E79A9E><E7909C>峕𧋦<E5B395><EFBFBD>摨瓐<E691A8>?
- <20>孵稬<E5ADB5><EFBFBD><EFBFBD>甇乓<E79487>𨧀<EFBFBD><F0A8A780><EFBFBD><EFBFBD>撱箝<E692B1>?
#### Step 4: <20><EFBFBD><E79195><EFBFBD><EFBFBD><E69296>
1. <20><EFBFBD>閫垍<E996AB><E59E8D>餌鍂<E9A48C>瑕仍<E79195>?<3F>?<3F>淾ccessKey蝞∠<E89D9E><E288A0>?
2. <20>𤥁<EFBFBD><F0A4A581><EFBFBD>摰孵膥<E5ADB5>𨅯<EFBFBD><F0A885AF>滚𦛚 <20>?<3F><EFBFBD>閫鉝<E996AB>諹挽蝵株挪<E6A0AA>桀鐯霂<E990AF><E99C82>?
3. 霈曄蔭<E69B84>𨅯<EFBFBD>隞枏<E99A9E><E69E8F><EFBFBD><EFBFBD><E69296><EFBFBD>扇雿誩<E99BBF><EFBFBD><E59A97>
---
### <20>㨩 2.4 <20><EFBFBD><E588B8><EFBFBD><EFBFBD><EFBFBD><E8AAA9><EFBFBD>鈭?
**<EFBFBD><EFBFBD>PowerShell嚗峕<EFBFBD>銵䔶誑銝见𦶢隞歹<EFBFBD>**
```powershell
# 1. <20><EFBFBD><E9A483><EFBFBD>鈭穃捆<E7A983><EFBFBD><E588B8>𤩺<EFBFBD><F0A4A9BA>?
# <20>踵揢<雿删<E99BBF><E588A0><EFBFBD>鈭𤏸揭<F0A48FB8>?銝箔<E98A9D><E7AE94><EFBFBD><EFBFBD><EFBFBD><E494B6><EFBFBD><E9A483>桃拳<E6A183>𣇉鍂<F0A38789><EFBFBD>
docker login --username=<雿删<EFBFBD><EFBFBD><EFBFBD>鈭𤏸揭<EFBFBD>? registry.cn-hangzhou.aliyuncs.com
# 颲枏<E9A2B2><EFBFBD><E69296><EFBFBD><EFBFBD><EFBFBD><E887AC>滩挽蝵桃<E89DB5><E6A183>𨅯<EFBFBD>隞枏<E99A9E><E69E8F><EFBFBD><EFBFBD><E69296>嚗?
# 2. 蝏䠷<E89D8F><E4A0B7>𤩺<EFBFBD><F0A4A9BA><EFBFBD>
# <20>踵揢 <雿删<E99BBF><E588A0><EFBFBD>蝛粹𡢿> 銝?aiclinical
docker tag aiclinical-backend:dev `
registry.cn-hangzhou.aliyuncs.com/aiclinical/backend-dev:v1.0.0
# 3. <20><EFBFBD><E588B8><EFBFBD><EFBFBD><EFBFBD>鈭𡢅<E988AD><F0A1A285><EFBFBD>閬?-5<><35><EFBFBD>嚗?
docker push registry.cn-hangzhou.aliyuncs.com/aiclinical/backend-dev:v1.0.0
```
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>敹梹<EFBFBD>**
```
v1.0.0: digest: sha256:xxxx size: xxxx
```
---
## 蝚砌<E89D9A>甇伐<E79487><E4BC90>函蔡<E587BD>訕AE
### <20><> 3.1 <20>𥕦遣SAE摨𠉛鍂
#### Step 1: 餈𥕦<E9A488>SAE<41><EFBFBD><E689B9>?
1. <20><EFBFBD>鈭烐綉<E78390>嗅蝱 <20>?<3F>玺erverless摨𠉛鍂撘閙<E69298>SAE<41>?
2. <20>㗇𥋘<E39787><EFBFBD><EFBFBD><E59A97>RDS<44><53>SS<53><EFBFBD>嚗?
#### Step 2: <20>𥕦遣摨𠉛鍂
1. <20>孵稬<E5ADB5><E7A8AC><EFBFBD>撱箏<E692B1><E7AE8F><EFBFBD>?
2. **<EFBFBD>箸𧋦靽⊥<EFBFBD>**嚗?
- 摨𠉛鍂<F0A0899B>滨妍嚗䫤aiclinical-backend-dev`
- <20><EFBFBD>蝛粹𡢿嚗𡁻<E59A97>霈?
- VPC嚗𡁻<E59A97>㗇𥋘銝竃DS<44><EFBFBD><E8A9A8><EFBFBD>PC
- vSwitch嚗帋遙<E5B88B><EFBFBD>㗇𥋘銝<F0A58B98>銝?
3. **摨𠉛鍂<F0A0899B>函蔡<E587BD>滨蔭**嚗?
- 摨𠉛鍂<F0A0899B>函蔡<E587BD><EFBFBD>嚗𠾼<E59A97><EFBFBD><E5B1B8><EFBFBD>?
- <20>𨅯<EFBFBD><F0A885AF><EFBFBD>嚗𠾼<E59A97><F0A0BEBC><EFBFBD><EFBFBD><E588B8>𤩺<EFBFBD><F0A4A9BA><EFBFBD>銝𡁶<E98A9D>摰硺<E691B0><E7A1BA>?
- <20>𨅯<EFBFBD>嚗𡁻<E59A97>㗇𥋘<E39787>𡁏<EFBFBD><F0A1818F><EFBFBD><E588B8><EFBFBD> `registry.cn-hangzhou.aliyuncs.com/aiclinical/backend-dev:v1.0.0`
- <20>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦嚗䫤v1.0.0`
4. **摰硺<E691B0><EFBFBD>聢**嚗?
- 摰硺<E691B0><EFBFBD>聢嚗䫤1<E4ABA4>?GB`
- 摰硺<E691B0><E7A1BA><EFBFBD>1銝迎<E98A9D><E8BF8E><EFBFBD>嚗?
5. **蝵𤑳<E89DB5><F0A491B3>滨蔭**嚗?
- <20><EFBFBD><EFBFBD><E589B9><EFBFBD>蝵𤏸挪<F0A48FB8><EFBFBD>?
- 蝡臬藁嚗䫤3001`
6. <20>孵稬<E5ADB5><EFBFBD><EFBFBD>甇乓<E79487>?
---
### <20><EFBFBD> 3.2 <20>滨蔭<E6BBA8><EFBFBD><E887AC><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>蝥扯挽蝵柴<EFBFBD>漤△<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣬚㴓憓<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```bash
# ========== <20><EFBFBD><E7AE87>滨蔭 ==========
NODE_ENV=development
PORT=3001
SERVICE_NAME=aiclinical-backend-dev
LOG_LEVEL=debug
# ========== <20>唳旿摨㯄<E691A8>蝵?==========
# <20>踵揢銝箸<E98A9D><E7AEB8><EFBFBD>DS<44><EFBFBD>
DATABASE_URL=postgresql://aiclinical:雿删<E99BBF><EFBFBD><E69296>@rm-xxxx.mysql.rds.aliyuncs.com:5432/aiclinical_dev
# ========== 摮睃<E691AE><E79D83>滨蔭 ==========
STORAGE_TYPE=oss
OSS_REGION=oss-cn-hangzhou
OSS_BUCKET=aiclinical-dev
OSS_ACCESS_KEY_ID=雿删<EFBFBD>AccessKeyId
OSS_ACCESS_KEY_SECRET=雿删<EFBFBD>AccessKeySecret
# ========== 蝻枏<E89DBB><E69E8F>滨蔭嚗<E894AD><E59A97>雿輻鍂Redis嚗?=========
CACHE_TYPE=memory
QUEUE_TYPE=memory
# ========== LLM<4C>滨蔭 ==========
DEEPSEEK_API_KEY=雿删<EFBFBD>DeepSeek API Key
DEEPSEEK_BASE_URL=https://api.deepseek.com
DASHSCOPE_API_KEY=雿删<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䔮 API Key
CLOSEAI_API_KEY=雿删<EFBFBD>CloseAI API Key
CLOSEAI_OPENAI_BASE_URL=https://api.openai-proxy.org/v1
CLOSEAI_CLAUDE_BASE_URL=https://api.openai-proxy.org/anthropic
# ========== Dify<66>滨蔭嚗<E894AD><E59A97><EFBFBD>靝蝙<E99D9D><EFBFBD>==========
DIFY_API_KEY=雿删<EFBFBD>Dify API Key
DIFY_API_URL=https://api.dify.ai/v1
# ========== 摰匧<E691B0><E58CA7>滨蔭 ==========
JWT_SECRET=霂瑞<EFBFBD><EFBFBD>𣂷<EFBFBD>銝芷<EFBFBD><EFBFBD><EFBFBD>蝚虫葡嚗<EFBFBD>秐撠?2雿㵪<E99BBF>
CORS_ORIGIN=*
# ========== Python敺格<E695BA><E6A0BC><EFBFBD>蝵?==========
# <20><>𧒄<EFBFBD><F0A79284><EFBFBD><EFBFBD><E7A589><EFBFBD><EFBFBD><E59A97>蝏剜㺿銝搴AE<41><45><EFBFBD>
EXTRACTION_SERVICE_URL=http://雿删<E99BBF>Python<6F>滚𦛚<E6BB9A><EFBFBD>:8000
```
**<EFBFBD>𩤃<EFBFBD> <20><EFBFBD><E6BBA9>鞟內嚗?*
- <20>踵揢<E8B8B5><E68FA2><EFBFBD>?`雿删<E99BBF>XXX` 銝箇<E98A9D>摰䂿<E691B0><E482BF>?
- JWT_SECRET <20>臭誑<E887AD>典銁蝥踹極<E8B8B9><EFBFBD><E7919E><EFBFBD>https://www.random.org/strings/
- <20><EFBFBD><E887AC><EFBFBD>霈曄蔭<E69B84>躰秤<E8BAB0><EFBFBD>蝵脣仃韐亦<E99F90>銝餉<E98A9D><E9A489><EFBFBD>嚗?
---
### <20>?3.3 <20>滨蔭<E6BBA8>亙熒璉<E78692><E79289>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>摨瑟<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```yaml
<EFBFBD><EFBFBD>交䲮撘? HTTP
<EFBFBD><EFBFBD>亥楝敺? /health
蝡臬藁: 3001
<EFBFBD><EFBFBD>撱嗉<EFBFBD>: 30蝘?
<EFBFBD><EFBFBD>仿𡢿<EFBFBD>? 10蝘?
<EFBFBD>𧒄<EFBFBD>園𡢿: 3蝘?
銝滚<EFBFBD>摨琿<EFBFBD><EFBFBD>? 3甈?
<EFBFBD>亙熒<EFBFBD><EFBFBD><EFBFBD>? 2甈?
```
<EFBFBD>孵稬<EFBFBD><EFBFBD><EFBFBD>撱箏<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝑匧<EFBFBD>3-5<><35><EFBFBD><EFBFBD>?
---
### <20><> 3.4 撉諹<E69289><E8ABB9>函蔡
#### Step 1: <20><EFBFBD><E4BAA6>函蔡<E587BD><EFBFBD>?
1. 摨𠉛鍂<F0A0899B>𡑒”銝剜𪄳<E5899C>?`aiclinical-backend-dev`
2. <20><EFBFBD><E4BAA6><EFBFBD><E59786><EFBFBD>
- <20>?<3F>臬𢆡銝?<3F>?蝑匧<E89D91>
- <20>?撘<><20>?<3F><EFBFBD><E4BAA6><EFBFBD><E4BA99>埝䰻<E59F9D><EFBFBD>
- <20>?餈鞱<E9A488>銝?<3F>?<3F>𣂼<EFBFBD>嚗?
#### Step 2: <20><EFBFBD><E79195><EFBFBD><E7A589><EFBFBD>
1. <20>孵稬摨𠉛鍂<F0A0899B>滨妍餈𥕦<E9A488>霂行<E99C82>
2. <20><><EFBFBD>砌縑<E7A08C><EFBFBD>漤△<E6BCA4><EFBFBD><EFBD87><EFBFBD><E69B89><EFBFBD><EFBFBD>蝵騌LB<4C><EFBFBD><E595A3>?
3. 憭滚<E686AD><E6BB9A><EFBFBD><EFBFBD>掩隡潘<E99AA1>`http://123.456.789.0:3001`嚗?
#### Step 3: 瘚贝<E7989A><E8B49D>亙藁
<EFBFBD><EFBFBD>瘚讛<EFBFBD><EFBFBD><EFBFBD>霈輸䔮嚗?
```
http://<雿删<E99BBF>SAE<41><EFBFBD><E7A589><EFBFBD>>/health
```
**憸<><E686B8>餈𥪜<E9A488>嚗?*
```json
{
"status": "ok",
"database": "connected",
"timestamp": "2025-12-11T10:30:00.000Z"
}
```
---
## 蝚砍<E89D9A>甇伐<E79487><E4BC90>函蔡<E587BD>滨垢
### <20><> 4.1 <20><><EFBFBD>滨垢<E6BBA8><EFBFBD><E8B9B1><EFBFBD>隞?
**<EFBFBD><EFBFBD>PowerShell嚗諹<EFBFBD><EFBFBD>卯rontend-v2<76><EFBFBD>嚗?*
```powershell
# 餈𥕦<E9A488><F0A595A6>滨垢<E6BBA8><EFBFBD>
cd D:\MyCursor\AIclinicalresearch\frontend-v2
# 摰㕑<E691B0>靘肽<E99D98><EFBFBD><E59A97><EFBFBD>𡏭<EFBFBD><E7989D><EFBFBD><E98B86>
npm install
# 靽格㺿 API <20><EFBFBD>
# <20><EFBFBD> vite.config.ts嚗屸<E59A97>蝵桐誨<E6A190><E8AAA8><EFBFBD><EFBFBD>湔𦻖靽格㺿 API_BASE_URL
```
**靽格㺿 `vite.config.ts`嚗?*
```typescript
export default defineConfig({
server: {
proxy: {
'/api': {
target: 'http://雿删<E99BBF>SAE<41>𡒊垢<F0A1928A><EFBFBD>:3001', // <20>?<3F><EFBFBD>雿删<E99BBF>SAE<41><EFBFBD>
changeOrigin: true,
},
},
},
// <20><><EFBFBD><EFBFBD><E597A5><EFBFBD><E887AC><EFBFBD>
define: {
'import.meta.env.VITE_API_BASE_URL': JSON.stringify('http://雿删<E99BBF>SAE<41>𡒊垢<F0A1928A><EFBFBD>:3001')
}
})
```
**<EFBFBD><EFBFBD><EFBFBD>煺漣<EFBFBD><EFBFBD>𧋦嚗?*
```powershell
npm run build
```
<EFBFBD><EFBFBD>遣摰峕<EFBFBD><EFBFBD>𠬍<EFBFBD><EFBFBD>?`dist/` <20><EFBFBD><E6A180><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B9B1><EFBFBD>隞嗚<E99A9E>?
---
### <20><> 4.2 <20>函蔡<E587BD>滨垢<E6BBA8>記SS
#### <20><EFBFBD>A嚗帋蝙<E5B88B>券燵<E588B8><EFBFBD><E494B6><EFBFBD><E689B9><EFBFBD><E5A086><EFBFBD><E588BB><EFBFBD>嚗?
1. <20><EFBFBD>OSS<53><EFBFBD><E689B9>?
2. 餈𥕦<E9A488> `aiclinical-dev` Bucket
3. <20>孵稬<E5ADB5><EFBFBD>隞嗥恣<E597A5><E681A3><EFBFBD>?<3F>?<3F><EFBFBD>隡䭾<E99AA1>隞嗚<E99A9E>?
4. <20>㗇𥋘 `frontend-v2/dist/` <20><EFBFBD>銝讠<E98A9D>**<2A><><EFBFBD><EFBFBD>隞?*
5. 銝𠹺<E98A9D>摰峕<E691B0><E5B395>𠬍<EFBFBD>霈曄蔭 `index.html` 銝粹<E98A9D>霈日<E99C88>憿?
#### <20><EFBFBD>B嚗帋蝙<E5B88B>汰SS<53>賭誘銵<E8AA98><EFBFBD>?
**摰㕑<E691B0>ossutil嚗<6C><EFBFBD><EFBFBD>嚗?*
```powershell
# 銝贝蝸 ossutil
# Windows: https://gosspublic.alicdn.com/ossutil/ossutil64.exe
# <20>滨蔭
.\ossutil64.exe config
# 颲枏<E9A2B2> AccessKeyId<49><64>ccessKeySecret<65><74>ndpoint嚗<74><E59A97> oss-cn-hangzhou.aliyuncs.com嚗?
# 銝𠹺<E98A9D><F0A0B9BA>滨垢<E6BBA8><E59EA2>
.\ossutil64.exe cp -r .\dist\ oss://aiclinical-dev/frontend/ --update
```
---
### <20><> 4.3 <20>滨蔭OSS<53><EFBFBD><E8B9B1><EFBFBD>蝡蹱<E89DA1>蝞?
1. OSS<53><EFBFBD><E689B9>?<3F>?`aiclinical-dev` Bucket
2. 撌虫儒<E899AB>𨅯<EFBFBD> <20>?<3F><>抅蝖<E68A85>霈曄蔭<E69B84>?<3F>?<3F><EFBFBD><E5B1B8><EFBFBD><EFBFBD><EFBFBD>?
3. <20>孵稬<E5ADB5>諹挽蝵柴<E89DB5><EFBFBD>
- 暺䁅恕擐㚚△嚗䫤index.html`
- 暺䁅恕404憿蛛<E686BF>`index.html`
- <20>孵稬<E5ADB5><EFBFBD>摮塩<E691AE>?
4. <20><EFBFBD>霈輸䔮<E8BCB8><EFBFBD>嚗?
- Bucket璁<74><E79281>憿菟𢒰嚗峕𪄳<E5B395><EFBFBD>𩱳ucket<65><EFBFBD><E7AC94>?
- 憭𣇉<E686AD>霈輸䔮<E8BCB8><EFBFBD>嚗䫤http://aiclinical-dev.oss-cn-hangzhou.aliyuncs.com/`
---
## 蝚砌<E89D9A>甇伐<E79487>撉諹<E69289><E8ABB9>函蔡
### <20>?5.1 <20>券曎頝舀<E9A09D>霂?
#### 瘚贝<E7989A>1嚗𡁜<E59A97>摨瑟<E691A8><E7919F>?
```
霈輸䔮嚗冴ttp://雿删<E99BBF>SAE<41><EFBFBD>:3001/health
<EFBFBD><EFBFBD>嚗朞<EFBFBD><EFBFBD>?{"status":"ok"}
```
#### 瘚贝<E7989A>2嚗𡁏㺭<F0A1818F><EFBFBD>餈墧𦻖
```powershell
# <20>沒AE<41><EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?摰墧𧒄<E5A2A7><EFBFBD>
# <20><EFBFBD><E4BAA6>臬炏<E887AC>?"<22>?<3F>唳旿摨栞<E691A8><E6A09E><EFBFBD><E4BAA4>? <20><EFBFBD>
```
#### 瘚贝<E7989A>3嚗鐾SS摮睃<E691AE>
```
霈輸䔮嚗冴ttp://雿删<E99BBF>SAE<41><EFBFBD>:3001/api/v1/test/upload
銝𠹺<EFBFBD><EFBFBD>銝芣<EFBFBD>霂閙<EFBFBD>隞塚<EFBFBD><EFBFBD><EFBFBD><EFBFBD>臬炏<EFBFBD>𣂼<EFBFBD>
```
#### 瘚贝<E7989A>4嚗𡁜<E59A97>蝡航挪<E888AA>?
```
霈輸䔮嚗冴ttp://aiclinical-dev.oss-cn-hangzhou.aliyuncs.com/
<EFBFBD><EFBFBD>憿菟𢒰<EFBFBD>臬炏甇<EFBFBD><EFBFBD>曄內
```
---
### <20><> 5.2 <20><EFBFBD><E4BAA6>烐綉<E78390>唳旿
1. SAE<41><EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>𣬚<EFBFBD><F0A3AC9A>批之<E689B9><EFBFBD>?
2. <20><EFBFBD>嚗?
- CPU雿輻鍂<E8BCBB>?
- <20><><EFBFBD>雿輻鍂<E8BCBB>?
- QPS嚗<53><E59A97>蝘坿窈瘙<E7AA88>㺭嚗?
- <20><EFBFBD><E6BB9A>園𡢿
---
## 撣貉<E692A3><E8B289><EFBFBD><EFBFBD><E996AB>
### <20>?<3F><EFBFBD>1嚗𡁜<E59A97><F0A1819C>典鍳<E585B8>典仃韐?
**<EFBFBD><EFBFBD>𠶖嚗?*
- 摨𠉛鍂<F0A0899B><EFBFBD><E59786>遬蝷箝<E89DB7><E7AE9D><EFBFBD>撣詻<E692A3>?
- <20>亙熒璉<E78692><E79289>亙仃韐?
**閫<><E996AB>甇仿炊嚗?*
1. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?*
```
SAE<41><EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?摰墧𧒄<E5A2A7><EFBFBD>
<20><EFBFBD>𠧧<EFBCBA>?ERROR <20><EFBFBD>
```
2. **撣貉<E692A3><E8B289>躰秤嚗?*
**<2A>躰秤A嚗𡁏㺭<F0A1818F><EFBFBD>餈墧𦻖憭梯揖**
```
Error: Connection refused
```
- 璉<><E79289>?`DATABASE_URL` <20><EFBFBD><E6BE86>臬炏甇<E7828F>
- 璉<><E79289>?RDS <20><EFBFBD><E8B3A2>閙糓<E99699><EFBFBD><E8A180>?SAE <20>?IP
- 璉<><E79289>?RDS <20><EFBFBD><E586BD><EFBFBD><E6BB9A><EFBFBD><EFBFBD>行迤蝖?
**<2A>躰秤B嚗𡁶㴓憓<E3B493><E68693><EFBFBD>讐撩憭?*
```
DATABASE_URL is required
```
- 璉<><E79289>亦㴓憓<E3B493><E68693><EFBFBD>𤩺糓<F0A4A9BA><EFBFBD>蝵桀<E89DB5><E6A180>?
- <20>齿鰵<E9BDBF>函蔡摨𠉛鍂
**<2A>躰秤C嚗䥪risma 餈墧𦻖憭梯揖**
```
Prisma Client initialization failed
```
- <20><><EFBFBD><E996AC>銵峕㺭<E5B395><EFBFBD><EFBFBD>宏嚗?
```bash
# <20>砍𧑐<E7A08D><EFBFBD><EFBFBD>宏嚗𣬚<E59A97><F0A3AC9A>擧綫<E693A7><E7B6AB><EFBFBD>RDS
npx prisma migrate deploy
```
---
### <20>?<3F><EFBFBD>2嚗鐾SS銝𠹺<E98A9D>憭梯揖
**<2A><>𠶖嚗?*
- <20><>辣銝𠹺<E98A9D>餈𥪜<E9A488> 403 Forbidden
**閫<><E996AB>甇仿炊嚗?*
1. 璉<><E79289>?RAM <20><EFBFBD><E586BD><EFBFBD><EFBFBD>嚗?
- <20><EFBFBD><E689B9>?<3F>?RAM <20>?<3F><EFBFBD> <20>?<3F><><EFBFBD>
- 蝖桐<E89D96><E6A190>?`AliyunOSSFullAccess`
2. 璉<><E79289>亦㴓憓<E3B493><E68693><EFBFBD>𧶏<EFBFBD>
```bash
OSS_ACCESS_KEY_ID=甇<><EFBFBD><EFBC86>D
OSS_ACCESS_KEY_SECRET=甇<><EFBFBD><EFBC86>ecret
OSS_BUCKET=甇<><EFBFBD><EFBC86>ucket<65>滨妍
```
3. 瘚贝<E7989A> OSS 餈墧𦻖嚗?
```javascript
// <20><EFBFBD><E585B8>冽𠯫敹𦯀葉<F0A6AF80><EFBFBD>
console.log('OSS<53>滨蔭:', {
region: process.env.OSS_REGION,
bucket: process.env.OSS_BUCKET
})
```
---
### <20>?<3F><EFBFBD>3嚗𡁜<E59A97>蝡舀<E89DA1>瘜閗挪<E99697><EFBFBD>蝡?
**<2A><>𠶖嚗?*
- <20>滨垢<E6BBA8>曄內<E69B84>𣬚<EFBFBD>蝏𣈯<E89D8F>霂胯<E99C82>?
- API 霂瑟<E99C82>憭梯揖
**閫<><E996AB>甇仿炊嚗?*
1. 璉<><E79289>丘ORS<52>滨蔭嚗?
```bash
# <20>沒AE<41><EFBFBD><E887AC><EFBFBD>銝剔霈?
CORS_ORIGIN=* # <20><><EFBFBD><E68D82><EFBFBD>㗇䔉皞琜<E79A9E><EFBFBD><E69298>𤑳㴓憓<E3B493><E68693>
```
2. 璉<><E79289><EFBFBD>蝡臬𧑐<E887AC><F0A79190>嚗?
```javascript
// frontend-v2/vite.config.ts
proxy: {
'/api': {
target: 'http://甇<><EFBFBD><EFBC86>AE<41><EFBFBD>:3001',
changeOrigin: true
}
}
```
3. 瘚贝<E7989A><E8B49D>𡒊垢餈鮋<E9A488>𡁏<EFBFBD><EFBFBD>
```bash
# <20>冽𧋦<E586BD>訐owerShell<6C><EFBFBD>
curl http://雿删<E99BBF>SAE<41><EFBFBD>:3001/health
```
---
### <20>?<3F><EFBFBD>4嚗䥪ython敺格<E695BA><E6A0BC><EFBFBD>瘜閗<E7989C><E99697>?
**<2A><>𠶖嚗?*
- <20><><EFBFBD>𣂼<EFBFBD>憭梯揖
- <20><EFBFBD><E4BA99>曄內 `Connection refused to extraction service`
**銝湔𧒄<E6B994><EFBFBD>嚗?*
<EFBFBD><EFBFBD>Python敺格<EFBFBD><EFBFBD><EFBFBD><EFBFBD>冽𧋦<EFBFBD><EFBFBD>銵䕘<EFBFBD><EFBFBD><EFBFBD><EFBFBD>誑銝衤舅蝘齿䲮獢<EFBFBD><EFBFBD><EFBFBD>嚗?
**<2A><EFBFBD>A嚗䥪ython<6F>滚𦛚銋罸<E98A8B>蝵脣<E89DB5>SAE嚗<45><EFBFBD><EFBFBD>**
1. <20>𥕦遣 `extraction_service/Dockerfile`嚗?
```dockerfile
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
```
2. <20><>遣撟嗆綫<E59786><E7B6AB><EFBFBD>
```powershell
cd extraction_service
docker build -t aiclinical-python:dev .
docker tag aiclinical-python:dev `
registry.cn-hangzhou.aliyuncs.com/aiclinical/python-dev:v1.0.0
docker push registry.cn-hangzhou.aliyuncs.com/aiclinical/python-dev:v1.0.0
```
3. <20>沒AE<41>𥕦遣<F0A595A6><EFBFBD><E595A3>?`aiclinical-python-dev`
4. 靽格㺿Node<64>𡒊垢<F0A1928A><EFBFBD><E887AC><EFBFBD>嚗?
```bash
EXTRACTION_SERVICE_URL=http://python<6F>滚𦛚<E6BB9A><F0A69B9A>AE<41><45><EFBFBD><EFBFBD><EFBFBD>:8000
```
**<2A><EFBFBD>B嚗帋蝙<E5B88B><EFBFBD>蝵𤑳忽<F0A491B3>𧶏<EFBFBD>銝湔𧒄撘<F0A79284><E69298>𡢅<EFBFBD>**
1. 雿輻鍂ngrok<6F>餻rp蝑匧極<E58CA7>?
2. 撠<>𧋦<EFBFBD>?000蝡臬藁<E887AC>湧蠧<E6B9A7><EFBFBD>蝵?
3. 靽格㺿<E6A0BC><EFBFBD><E887AC><EFBFBD>銝箏<E98A9D>蝵穃𧑐<E7A983><F0A79190>
---
## <20><> <20>函蔡摰峕<E691B0><EFBFBD><E79289><EFBFBD><E4BAA4>?
### <20>?<3F>𡒊垢<F0A1928A>函蔡
- [ ] Docker<65>𨅯<EFBFBD><F0A885AF><EFBFBD><EFBFBD>𣂼<EFBFBD>
- [ ] <20>𨅯<EFBFBD><F0A885AF><EFBFBD><E588B8><EFBFBD><EFBFBD><EFBFBD>鈭飊CR
- [ ] RDS<44>唳旿摨㯄<E691A8>蝵桀<E89DB5><E6A180>?
- [ ] RDS<44><EFBFBD><E8B3A2>訫歇瘛餃<E7989B>
- [ ] OSS Bucket<65>𥕦遣摰峕<E691B0>
- [ ] RAM<41><EFBFBD><E586BD><EFBFBD><EFBFBD><EFBFBD>滨蔭甇<E894AD>
- [ ] SAE摨𠉛鍂<F0A0899B>𥕦遣<F0A595A6>𣂼<EFBFBD>
- [ ] <20><EFBFBD><E887AC><EFBFBD><E3979B>滨蔭摰峕㟲
- [ ] <20>亙熒璉<E78692><E79289>仿<EFBFBD><EFBFBD>
- [ ] `/health` <20>亙藁餈𥪜<E9A488><EFBFBD>
### <20>?<3F>滨垢<E6BBA8>函蔡
- [ ] <20>滨垢隞<E59EA2><E99A9E><EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD>
- [ ] API<50><EFBFBD><E595A3>滨蔭甇<E894AD>
- [ ] <20><>辣銝𠹺<E98A9D><F0A0B9BA>記SS
- [ ] <20><EFBFBD><E8B9B1><EFBFBD>蝡蹱<E89DA1><E89D9E><E288AA>?
- [ ] <20>滨垢憿菟𢒰<E88F9F>航挪<E888AA>?
- [ ] <20><EFBFBD>蝡舫<E89DA1>帋縑甇<E7B891>
### <20>?<3F>唳旿摨?
- [ ] <20>唳旿摨栞<E691A8>蝘餅<E89D98>銵峕<E98AB5><E5B395>?
- [ ] Schema<6D>𥕦遣摰峕<E691B0>
- [ ] 瘚贝<E7989A><E8B49D>唳旿<E594B3><EFBFBD><E98DA6>𣂼<EFBFBD>
---
## <20><> <20><EFBFBD><EFBFBD><E59A97>蝵脣<E89DB5><E884A3><EFBFBD>
### <20><> 霈啣<E99C88><E595A3><EFBFBD>靽⊥<E99DBD>
霂瑕<EFBFBD>隞乩<EFBFBD>靽⊥<EFBFBD>靽嘥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>唳䲮嚗?
```
<EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD>霂閧㴓憓<EFBFBD><EFBFBD>?
<EFBFBD>𡒊垢<EFBFBD><EFBFBD>嚗冴ttp://雿删<E99BBF>SAE<41><EFBFBD>:3001
<EFBFBD>滨垢<EFBFBD><EFBFBD>嚗冴ttp://aiclinical-dev.oss-cn-hangzhou.aliyuncs.com
RDS餈墧𦻖靽⊥<EFBFBD>嚗?
- <20><EFBFBD>嚗鬏m-xxxx.mysql.rds.aliyuncs.com
- <20>唳旿摨橒<E691A8>aiclinical_dev
- <20><EFBFBD><E586BD><EFBFBD>aiclinical
- 撖<><E69296>嚗?**嚗<>窈靽嘥<E99DBD>嚗?
OSS靽⊥<EFBFBD>嚗?
- Bucket嚗惨iclinical-dev
- AccessKeyId嚗匁TAI5t***
- AccessKeySecret嚗?**嚗<>窈靽嘥<E99DBD>嚗?
ACR<EFBFBD>𨅯<EFBFBD>隞枏<EFBFBD>嚗?
- <20><EFBFBD>蝛粹𡢿嚗惨iclinical
- 隞枏<E99A9E>嚗颹ackend-dev, python-dev
- <20><EFBFBD><EFBFBD><E69296>嚗?**嚗<>窈靽嘥<E99DBD>嚗?
```
---
## <20><> 銝衤<E98A9D>甇?
1. **<2A><><EFBFBD><E8B392><EFBFBD>/<2F><><EFBFBD>函蔡嚗㇃I/CD嚗?*
- <20>滨蔭GitHub Actions<6E>銺enkins
- <20>芸𢆡<E88AB8><F0A286A1><EFBFBD><EFBFBD>蝵?
2. **<2A>烐綉<E78390>𡃏郎**
- 撘<><E69298>𡁻燵<F0A181BB><EFBFBD>ARMS<4D>烐綉
- <20>滨蔭<E6BBA8><EFBFBD>/<2F>桐辣<E6A190>𡃏郎
3. **甇<><E79487><EFBFBD><EFBFBD><E887AC>函蔡**
- <20>𥕦遣<F0A595A6>煺漣<E785BA><EFBFBD>Bucket嚗䫤aiclinical-prod`
- <20>𥕦遣<F0A595A6>煺漣<E785BA><EFBFBD>RDS嚗𡁶𡠺蝡见<E89DA1>靘?
- <20>𥕦遣<F0A595A6>煺漣<E785BA><EFBFBD>SAE摨𠉛鍂
- 韐凋僭Redis嚗𡁶鍂鈭𡒊<E988AD>鈭抒㴓憓<E3B493><E68693>摮?
- <20>滨蔭CDN嚗𡁜<E59A97><F0A1819C><EFBFBD><E7BDB8><EFBFBD><EFBFBD>皞?
4. **<EFBFBD><EFBFBD><EFBFBD>滨蔭**
- 韐凋僭<E5878B><EFBFBD>
- <20>滨蔭DNS閫<53><E996AB>
- <20>唾窈SSL霂<4C>
- <20>滨蔭HTTPS
---
## <20><20>鞉𧋦隡睃<E99AA1>撱箄悅
### 撘<><E69298><EFBFBD>霂閧㴓憓<E3B493><E68693>敶枏<E695B6><E69E8F>滨蔭嚗?
| <20>滚𦛚 | 閫<>聢 | <20><>晶 | 霂湔<E99C82> |
|------|------|------|------|
| SAE | 1C2G <20> 1摰硺<E691B0> | 瞼150 | <20><EFBFBD>隞䁅晶 |
| RDS | 2C4G <20>𡁶鍂<F0A181B6>?| 瞼300 | <20><><EFBFBD><EFBFBD><E6B8AF>?|
| OSS | 100GB摮睃<E691AE> | 瞼10 | <20><EFBFBD><E58CA7><EFBFBD><EFBFBD>?|
| ACR | <20>滩晶憸嘥漲 | 瞼0 | <20>𣳇<EFBFBD>隞䁅晶 |
| **<EFBFBD><EFBFBD>恣** | | **瞼460/<2F>?* | |
### <20><><EFBFBD><EFBFBD>鞉𧋦<E99E89><F0A78BA6>撌?
1. **RDS<44><53>僑隡䀹<E99AA1>**嚗朞揚銋?撟游虾<E6B8B8><E899BE><EFBFBD>15%
2. **<EFBFBD>脫𧒄<EFBFBD>喲𡡒SAE**嚗𡁏<E59A97>霂閧㴓憓<E3B493><E68693><EFBFBD>游虾<E6B8B8>喲𡡒嚗諹<E59A97><E8ABB9>?0%
3. **OSS<53>笔𦶢<E7AC94><EFBFBD>**嚗朞挽蝵?0憭拙<E686AD>頧砌<E9A0A7>憸穃<E686B8><E7A983>?
4. **銝滢蝙<E6BBA2>沖edis**嚗𡁶<E59A97>瞼200/<2F>?
---
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦嚗?* v1.0
**<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD><EFBFBD>** 2025-12-11
**蝏湔擪<E6B994><E693AA><EFBFBD>** <20><><EFBFBD>舀沲<E88880><E6B2B2><EFBFBD>
**<EFBFBD><EFBFBD>嚗?* 憒<><E68692><EFBFBD><EFBFBD>嚗諹窈<E8ABB9>𠉛頂<F0A0899B><E9A082><EFBFBD>臬𣪧<E887AC>?