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

20 KiB
Raw Blame History

<EFBFBD><EFBFBD> <20><EFBFBD>鈭騌AE<41>函蔡摰<E894A1><E691B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?

*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦嚗? v1.0
*<EFBFBD>𥕦遣<EFBFBD><EFBFBD>嚗? 2025-12-11
*<EFBFBD><EFBFBD>鍂鈭箇黎嚗? <20>𣳇<EFBFBD>蝵脩<E89DB5>撉𣬚<E69289>鈭批<E988AD>蝏讐<E89D8F><E8AE90><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*<EFBFBD><EFBFBD>園𡢿嚗? 2-3撠𤩺𧒄嚗<F0A79284><E59A97><EFBFBD><EFBFBD><EFBFBD>𧒄<EFBFBD><EFBFBD>
*<EFBFBD>曉漲蝑厩漣嚗? 潃鐥<E6BD83><><E89D9E>𤏪<EFBFBD>靽嘥<E99DBD>蝥扳<E89DA5>蝔页<E89D94>


<EFBFBD><EFBFBD> <20><EFBFBD>

  1. <EFBFBD>滨蔭<EFBFBD><EFBFBD><EFBFBD>
  2. <EFBFBD><EFBFBD>銝漤<EFBFBD><EFBFBD>揚銋訌edis
  3. 蝚砌<EFBFBD>甇伐<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Docker<EFBFBD>𨅯<EFBFBD>
  4. [蝚砌<E89D9A>甇伐<E79487><E4BC90>滨蔭<E6BBA8><EFBFBD>鈭烐<E988AD><E78390>(#蝚砌<E89D9A>甇仿<E79487>蝵桅燵<E6A185><EFBFBD><E494B6>滚𦛚)
  5. 蝚砌<EFBFBD>甇伐<EFBFBD><EFBFBD>函蔡<EFBFBD>訕AE
  6. [蝚砍<E89D9A>甇伐<E79487><E4BC90>函蔡<E587BD>滨垢](#蝚砍<E89D9A>甇仿<E79487>蝵脣<E89DB5>蝡?
  7. [蝚砌<E89D9A>甇伐<E79487>撉諹<E69289><E8ABB9>函蔡](#蝚砌<E89D9A>甇仿<E79487><EFBFBD><E99C82>蝵?
  8. 撣貉<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

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

<EFBFBD>?<3F>典歇蝏讛揚銋啁<E98A8B><E59581>滚𦛚

<EFBFBD>滚𦛚 <EFBFBD><EFBFBD>? 霂湔<EFBFBD>
<EFBFBD><EFBFBD>鈭騌AE <EFBFBD>?撌脰揚銋? Serverless摨𠉛鍂撘閙<EFBFBD>
鈭烐㺭<EFBFBD><EFBFBD>RDS PostgreSQL <EFBFBD>?撌脰揚銋? <EFBFBD>唳旿摨𤘪<EFBFBD><EFBFBD>?
撖寡情摮睃<EFBFBD>OSS <EFBFBD>?撌脰揚銋? <EFBFBD><EFBFBD>辣摮睃<EFBFBD><EFBFBD>滚𦛚

<EFBFBD><20><EFBFBD><EFBFBD><E996AC><EFBFBD><E98B86>撌亙<E6928C>

  1. Docker Desktop

    • 銝贝蝸<EFBFBD><EFBFBD>嚗冴ttps://www.docker.com/products/docker-desktop/
    • Windows蝟餌<EFBFBD><EFBFBD>㗇𥋘 "Docker Desktop for Windows"
    • 摰㕑<EFBFBD><EFBFBD>𡡞<EFBFBD><EFBFBD>舐㩞<EFBFBD>?
  2. <EFBFBD><EFBFBD>鈭飈LI嚗<EFBFBD><EFBFBD><EFBFBD>

    • <EFBFBD><EFBFBD>銝齿<EFBFBD><EFBFBD>典𦶢隞方<EFBFBD><EFBFBD>虾隞亙<EFBFBD>蝔衤蝙<EFBFBD>券燵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>憿菜<EFBFBD>雿?

<EFBFBD><EFBFBD>銝漤<EFBFBD><EFBFBD>揚銋訌edis嚗?

<EFBFBD><EFBFBD> 蝑娍<E89D91>嚗?<EFBFBD><EFBFBD>銝漤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>芣䔉<EFBFBD><EFBFBD><EFBFBD><EFBFBD>閬?

<EFBFBD>箸艶 <EFBFBD>臬炏<EFBFBD><EFBFBD><EFBFBD>edis 霂湔<EFBFBD>
*<EFBFBD><EFBFBD><EFBFBD>霂閧㴓憓? <EFBFBD>?銝漤<E98A9D>閬? 雿輻鍂<EFBFBD><EFBFBD><EFBFBD>蝻枏<EFBFBD><EFBFBD>喳虾
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><100鈭? <EFBFBD>?銝漤<E98A9D>閬? 雿輻鍂<EFBFBD><EFBFBD><EFBFBD>蝻枏<EFBFBD>頞喳<EFBFBD>
*銝剜<EFBFBD><EFBFBD><EFBFBD>100-1000鈭? <EFBFBD>𩤃<EFBFBD> 撱箄悅韐凋僭 <EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD>嚗𡐿?00/<2F>?
*<EFBFBD><EFBFBD><EFBFBD>毺鍂<EFBFBD>?1000鈭? <EFBFBD>?敹<>◆韐凋僭 <EFBFBD>◆雿輻鍂Redis

<EFBFBD><20>𤑳<EFBFBD>撱箄悅

<EFBFBD>啣銁<EFBFBD>𥕦遣撘<EFBFBD><EFBFBD><EFBFBD>霂閧㴓憓<EFBFBD><EFBFBD>銝滩<EFBFBD>韐凋僭Redis

<EFBFBD><EFBFBD>嚗?

  1. <EFBFBD>?<3F><EFBFBD><EFBFBD><E99A9E>撌脩<E6928C><E884A9><EFBFBD> CACHE_TYPE=memory<EFBFBD><EFBFBD>摮条<EFBFBD>摮矋<EFBFBD>
  2. <EFBFBD>?撘<><E69298><EFBFBD>霂閖𧫴畾蛛<E795BE><E89B9B><EFBFBD><EFBFBD>蝻枏<E89DBB><EFBFBD><E691B0>憭毺鍂
  3. <EFBFBD>?蝑厩<E89D91><EFBFBD><E79487>蝥踹<E89DA5>嚗峕覔<E5B395><EFBFBD><E6A180><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E89084><EFBFBD>
  4. <EFBFBD>?<3F><><EFBFBD><EFBFBD>鞉𧋦嚗<F0A78BA6><E59A97><EFBFBD><EFBFBD>瞼200/<2F><><EFBFBD>

*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滨蔭嚗?

# 銝滢蝙<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

蝚砌<EFBFBD>甇伐<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Docker<EFBFBD>𨅯<EFBFBD>

<EFBFBD>𣑐 1.1 <20>𥕦遣Dockerfile<6C><65>

<EFBFBD>?AIclinicalresearch/backend/ <20><EFBFBD>銝见<E98A9D>撱箸<E692B1>隞?Dockerfile<EFBFBD><EFBFBD><EFBFBD><EFBFBD>摮睃銁嚗㚁<EFBFBD>

# ==================== <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"]

<EFBFBD>𣑐 1.2 <20>𥕦遣 .dockerignore <20><>

<EFBFBD>?backend/ <20><EFBFBD>銝见<E98A9D>撱?.dockerignore嚗?

node_modules
dist
npm-debug.log
.env
.env.*
uploads
*.md
.git
.gitignore
tests

<EFBFBD>𣑐 1.3 <20><>遣Docker<65>𨅯<EFBFBD>

*<EFBFBD><EFBFBD>PowerShell嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗㚁<EFBFBD>餈𥕦<EFBFBD>backend<EFBFBD><EFBFBD>嚗?

# 餈𥕦<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"

*<EFBFBD><EFBFBD>颲枏枂嚗?

aiclinical-backend   dev    xxxx   2 minutes ago   xxx MB

蝚砌<EFBFBD>甇伐<EFBFBD><EFBFBD>滨蔭<EFBFBD><EFBFBD>鈭烐<EFBFBD><EFBFBD>?

<EFBFBD><EFBFBD>儭?2.1 <20>滨蔭RDS<44>唳旿摨?

Step 1: <20><EFBFBD><E9A483><EFBFBD>鈭烐綉<E78390>嗅蝱

  1. <EFBFBD><EFBFBD>瘚讛<EFBFBD><EFBFBD><EFBFBD>霈輸䔮 https://www.aliyun.com
  2. <EFBFBD>孵稬<EFBFBD><EFBFBD>閫鉝<EFBFBD>𣬚蒈敶𨰻<EFBFBD>?
  3. <EFBFBD>㗇𥋘<EFBFBD><EFBFBD><EFBFBD>唳旿摨?RDS<44>?

Step 2: <20>滨蔭<E6BBA8><EFBFBD><E8B3A2>?

  1. <EFBFBD>孵稬<EFBFBD><EFBFBD>RDS摰硺<EFBFBD>
  2. 撌虫儒<EFBFBD>𨅯<EFBFBD> <20>?<3F>峕㺭<E5B395><EFBFBD><E6A180><EFBFBD><EFBFBD>?<3F>?<3F>𣬚蒾<F0A3AC9A><EFBFBD>霈曄蔭<E69B84>?
  3. <EFBFBD>孵稬<EFBFBD>峕溶<EFBFBD>删蒾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
    • <EFBFBD><EFBFBD><EFBFBD><EFBFBD>滨妍嚗䫤SAE摨𠉛鍂`
    • <EFBFBD><EFBFBD><EFBFBD>𣗏P嚗𡁜<EFBFBD>憛?0.0.0.0/0<EFBFBD><EFBFBD>霈豢<EFBFBD><EFBFBD><EFBFBD>瘚贝<EFBFBD><EFBFBD><EFBFBD>
    • <EFBFBD>𩤃<EFBFBD><><E79487>銝羓瑪<E7BE93><EFBFBD><E88898>嫣蛹SAE<41><45>PC蝵烐挾

Step 3: <20>𥕦遣<F0A595A6>唳旿摨枏<E691A8><E69E8F><EFBFBD>

  1. 撌虫儒<EFBFBD>𨅯<EFBFBD> <20>?<3F>峕㺭<E5B395><EFBFBD>蝞∠<E89D9E><E288A0>?

  2. <EFBFBD>孵稬<EFBFBD><EFBFBD><EFBFBD>撱箸㺭<EFBFBD><EFBFBD><EFBFBD>?

    • <EFBFBD>唳旿摨枏<EFBFBD>蝘堆<EFBFBD>aiclinical_dev
    • 摮㛖泵<EFBFBD><EFBFBD><EFBFBD>UTF8
    • <EFBFBD>孵稬<EFBFBD>𣬚摰𠾼<EFBFBD>?
  3. 撌虫儒<EFBFBD>𨅯<EFBFBD> <20>?<3F>諹揭<E8ABB9>瑞恣<E7919E><E681A3><EFBFBD>?

  4. <EFBFBD>孵稬<EFBFBD><EFBFBD><EFBFBD>撱箄揭<EFBFBD><EFBFBD>?

    • 韐血噡<EFBFBD>滨妍嚗䫤aiclinical`
    • 韐血噡蝐餃<EFBFBD>嚗𡁏芦<EFBFBD>朞揭<EFBFBD>?
    • <EFBFBD><EFBFBD>嚗朞挽蝵桐<EFBFBD>銝芸撩撖<EFBFBD><EFBFBD><EFBFBD>扇雿誩<EFBFBD><EFBFBD><EFBFBD>
    • <EFBFBD><EFBFBD><EFBFBD><EFBFBD>唳旿摨橒<EFBFBD><EFBFBD>㗇𥋘 aiclinical_dev嚗峕<EFBFBD><EFBFBD><EFBFBD>諹粉<EFBFBD><EFBFBD>?
    • <EFBFBD>孵稬<EFBFBD>𣬚摰𠾼<EFBFBD>?

Step 4: <20><EFBFBD>餈墧𦻖<E5A2A7><EFBFBD>

  1. <EFBFBD>孵稬摰硺<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砌縑<EFBFBD><EFBFBD>漤△<EFBFBD>?
  2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵穃𧑐<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝐颱撮嚗䫤rm-xxxx.mysql.rds.aliyuncs.com`嚗?
  3. **憭滚<E686AD>撟嗡<E6929F>摮䁅<E691AE>銝芸𧑐<E88AB8><F0A79190>**嚗<><E59A97><EFBFBD><EFBFBD><EFBCB6><EFBFBD>嚗?

<EFBFBD>𣑐 2.2 <20>滨蔭OSS撖寡情摮睃<E691AE>

Step 1: <20>𥕦遣Bucket

  1. <EFBFBD><EFBFBD>鈭烐綉<EFBFBD>嗅蝱 <20>?<3F><>笆鞊<E99E8A><E288AA>汰SS<53>?
  2. <EFBFBD>孵稬<EFBFBD>𩱳ucket<EFBFBD>𡑒”<EFBFBD>?<3F>?<3F><><EFBFBD>撱慷ucket<65>?
    • Bucket<EFBFBD>滨妍嚗䫤aiclinical-dev`嚗<><E59A97><EFBFBD><EFBFBD>瘥?<3F><EFBFBD>+璅芣<E79285>嚗?
    • <EFBFBD><EFBFBD>嚗𡁻<EFBFBD>㗇𥋘銝竃DS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𦒘<EFBFBD>1嚗?
    • 摮睃<EFBFBD>蝐餃<EFBFBD>嚗𠾼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
    • 霂餃<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗𠾼<EFBFBD>𣬚<EFBFBD><EFBFBD><EFBFBD>?
    • <EFBFBD><EFBFBD><EFBFBD>厰★暺䁅恕
    • <EFBFBD>孵稬<EFBFBD>𣬚摰𠾼<EFBFBD>?

Step 2: <20>𥕦遣RAM<41><EFBFBD><EFBFBD>鍂鈭垾PI霈輸䔮嚗?

  1. <EFBFBD><EFBFBD>鈭烐綉<EFBFBD>嗅蝱 <20>?<3F>諹挪<E8ABB9>格綉<E6A0BC>買AM<41>?

  2. 撌虫儒<EFBFBD>𨅯<EFBFBD> <20>?<3F>𣬚鍂<F0A3AC9A><EFBFBD>?<3F>?<3F><><EFBFBD>撱箇鍂<E7AE87><EFBFBD>?

    • <EFBFBD><EFBFBD><EFBFBD>滨妍嚗䫤aiclinical-oss`
    • 霈輸䔮<EFBFBD><EFBFBD>嚗𡁜㗲<EFBFBD><EFBFBD>𣬚<EFBFBD>蝔贝挪<EFBFBD><EFBFBD>?
    • <EFBFBD>孵稬<EFBFBD>𣬚摰𠾼<EFBFBD>?
  3. <EFBFBD>𥕦遣<EFBFBD>𣂼<EFBFBD><EFBFBD>𠬍<EFBFBD>蝡见朖靽嘥<EFBFBD><EFBFBD>曄內<EFBFBD><EFBFBD>ccessKey嚗?

    AccessKeyId: LTAI5t...嚗<><E59A97><EFBFBD><EFBFBD>摮矋<E691AE>
    AccessKeySecret: xxxxxx嚗<78><E59A97><EFBFBD><EFBFBD>摮矋<E691AE><E79F8B>芣遬蝷箔<E89DB7>甈∴<E79488>嚗?
    
  4. 蝏嗵鍂<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

    • <EFBFBD>孵稬<EFBFBD><EFBFBD><EFBFBD>滨妍 <20>?<3F><EFBFBD><E5B395>鞟恣<E99E9F><E681A3><EFBFBD>?<3F>?<3F>峕溶<E5B395><EFBFBD><E4ADBE><EFBFBD>?
    • <EFBFBD>㗇𥋘<EFBFBD><EFBFBD><EFBFBD>嚗䫤AliyunOSSFullAccess`
    • <EFBFBD>孵稬<EFBFBD>𣬚摰𠾼<EFBFBD>?

<EFBFBD>閦 2.3 <20>滨蔭摰孵膥<E5ADB5>𨅯<EFBFBD><F0A885AF>滚𦛚嚗㇁CR嚗?

Step 1: 撘<><E69298>𡁏<EFBFBD><F0A1818F>?

  1. <EFBFBD><EFBFBD>鈭烐綉<EFBFBD>嗅蝱 <20>?<3F><><EFBFBD><EFBFBD><E588B8>𤩺<EFBFBD><F0A4A9BA><EFBFBD>?
  2. <EFBFBD><EFBFBD><EFBFBD>鞟內撘<EFBFBD><EFBFBD>𡄯<EFBFBD><EFBFBD>孵稬<EFBFBD>𣬚<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𠾼<EFBFBD><EFBFBD><EFBFBD>滩晶嚗?

Step 2: <20>𥕦遣<F0A595A6><EFBFBD>蝛粹𡢿

  1. 撌虫儒<EFBFBD>𨅯<EFBFBD> <20>?<3F><EFBFBD>霈文<E99C88>靘卝<E99D98>?<3F>?<3F><>𦶢<EFBFBD>滨征<E6BBA8><EFBFBD>?
  2. <EFBFBD>孵稬<EFBFBD><EFBFBD><EFBFBD>撱箏𦶢<EFBFBD>滨征<EFBFBD><EFBFBD>?
    • <EFBFBD><EFBFBD>蝛粹𡢿嚗䫤aiclinical`
    • <EFBFBD>孵稬<EFBFBD>𣬚摰𠾼<EFBFBD>?

Step 3: <20>𥕦遣<F0A595A6>𨅯<EFBFBD>隞枏<E99A9E>

  1. 撌虫儒<EFBFBD>𨅯<EFBFBD> <20>?<3F><EFBFBD><E5B1B8><EFBFBD>摨瓐<E691A8>?<3F>?<3F><><EFBFBD>撱粹<E692B1><E7B2B9><EFBFBD>摨瓐<E691A8>?
    • 隞枏<EFBFBD><EFBFBD>滨妍嚗䫤backend-dev`
    • <EFBFBD><EFBFBD>蝛粹𡢿嚗𡁻<EFBFBD>㗇𥋘 aiclinical
    • <EFBFBD><EFBFBD>嚗䫤AI銝游<EFBFBD><EFBFBD>𠉛弦撟喳蝱<EFBFBD>𡒊垢-撘<><E69298>𤑳㴓憓<E3B493>
    • 隞枏<EFBFBD>蝐餃<EFBFBD>嚗𠾼<EFBFBD>𣬚<EFBFBD><EFBFBD><EFBFBD>?
    • <EFBFBD><EFBFBD>皞琜<EFBFBD><EFBFBD>峕𧋦<EFBFBD><EFBFBD>摨瓐<EFBFBD>?
    • <EFBFBD>孵稬<EFBFBD><EFBFBD><EFBFBD>甇乓<EFBFBD>𨧀<EFBFBD><EFBFBD><EFBFBD><EFBFBD>撱箝<EFBFBD>?

Step 4: <20><EFBFBD><E79195><EFBFBD><EFBFBD><E69296>

  1. <EFBFBD><EFBFBD>閫垍<EFBFBD><EFBFBD>餌鍂<EFBFBD>瑕仍<EFBFBD>?<3F>?<3F>淾ccessKey蝞∠<E89D9E><E288A0>?
  2. <EFBFBD>𤥁<EFBFBD><EFBFBD><EFBFBD>摰孵膥<EFBFBD>𨅯<EFBFBD><EFBFBD>滚𦛚 <20>?<3F><EFBFBD>閫鉝<E996AB>諹挽蝵株挪<E6A0AA>桀鐯霂<E990AF><E99C82>?
  3. 霈曄蔭<EFBFBD>𨅯<EFBFBD>隞枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>扇雿誩<EFBFBD><EFBFBD><EFBFBD>

<EFBFBD>㨩 2.4 <20><EFBFBD><E588B8><EFBFBD><EFBFBD><EFBFBD><E8AAA9><EFBFBD>鈭?

<EFBFBD><EFBFBD>PowerShell嚗峕<EFBFBD>銵䔶誑銝见𦶢隞歹<EFBFBD>

# 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

蝚砌<EFBFBD>甇伐<EFBFBD><EFBFBD>函蔡<EFBFBD>訕AE

<EFBFBD><EFBFBD> 3.1 <20>𥕦遣SAE摨𠉛鍂

Step 1: 餈𥕦<E9A488>SAE<41><EFBFBD><E689B9>?

  1. <EFBFBD><EFBFBD>鈭烐綉<EFBFBD>嗅蝱 <20>?<3F>玺erverless摨𠉛鍂撘閙<E69298>SAE<41>?
  2. <EFBFBD>㗇𥋘<EFBFBD><EFBFBD><EFBFBD><EFBFBD>RDS<EFBFBD><EFBFBD>SS<EFBFBD><EFBFBD>嚗?

Step 2: <20>𥕦遣摨𠉛鍂

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

  2. **<2A>箸𧋦靽⊥<E99DBD>**嚗?

    • 摨𠉛鍂<EFBFBD>滨妍嚗䫤aiclinical-backend-dev`
    • <EFBFBD><EFBFBD>蝛粹𡢿嚗𡁻<EFBFBD>霈?
    • VPC嚗𡁻<EFBFBD>㗇𥋘銝竃DS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PC
    • vSwitch嚗帋遙<EFBFBD><EFBFBD>㗇𥋘銝<EFBFBD>銝?
  3. 摨𠉛鍂<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><EFBFBD><EFBFBD><EFBFBD> registry.cn-hangzhou.aliyuncs.com/aiclinical/backend-dev:v1.0.0
    • <EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>𧋦嚗䫤v1.0.0`
  4. 摰硺<EFBFBD><EFBFBD>嚗?

    • 摰硺<EFBFBD><EFBFBD>聢嚗䫤1<EFBFBD>?GB`
    • 摰硺<EFBFBD><EFBFBD><EFBFBD>1銝迎<EFBFBD><EFBFBD><EFBFBD>嚗?
  5. 蝵𤑳<EFBFBD><EFBFBD>滨蔭嚗?

    • <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵𤏸挪<EFBFBD><EFBFBD>?
    • 蝡臬藁嚗䫤3001`
  6. <EFBFBD>孵稬<EFBFBD><EFBFBD><EFBFBD>甇乓<EFBFBD>?


<EFBFBD><EFBFBD> 3.2 <20>滨蔭<E6BBA8><EFBFBD><E887AC><EFBFBD>

<EFBFBD><EFBFBD><EFBFBD>蝥扯挽蝵柴<EFBFBD>漤△<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣬚㴓憓<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

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

  • <EFBFBD>踵揢<EFBFBD><EFBFBD><EFBFBD>?雿删<EFBFBD>XXX 銝箇<E98A9D>摰䂿<E691B0><E482BF>?
  • JWT_SECRET <20>臭誑<E887AD>典銁蝥踹極<E8B8B9><EFBFBD><E7919E><EFBFBD>https://www.random.org/strings/
  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD>霈曄蔭<EFBFBD>躰秤<EFBFBD><EFBFBD>蝵脣仃韐亦<EFBFBD>銝餉<EFBFBD><EFBFBD><EFBFBD>嚗?

<EFBFBD>?3.3 <20>滨蔭<E6BBA8>亙熒璉<E78692><E79289>?

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>摨瑟<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

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


<EFBFBD><EFBFBD> 3.4 撉諹<E69289><E8ABB9>函蔡

Step 1: <20><EFBFBD><E4BAA6>函蔡<E587BD><EFBFBD>?

  1. 摨𠉛鍂<EFBFBD>𡑒”銝剜𪄳<EFBFBD>?aiclinical-backend-dev
  2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
    • <EFBFBD>?<3F>臬𢆡銝?<3F>?蝑匧<E89D91>
    • <EFBFBD>?撘<><20>?<3F><EFBFBD><E4BAA6><EFBFBD><E4BA99>埝䰻<E59F9D><EFBFBD>
    • <EFBFBD>?餈鞱<E9A488>銝?<3F>?<3F>𣂼<EFBFBD>嚗?

Step 2: <20><EFBFBD><E79195><EFBFBD><E7A589><EFBFBD>

  1. <EFBFBD>孵稬摨𠉛鍂<EFBFBD>滨妍餈𥕦<EFBFBD>霂行<EFBFBD>
  2. <EFBFBD><EFBFBD><EFBFBD>砌縑<EFBFBD><EFBFBD>漤△<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵騌LB<EFBFBD><EFBFBD><EFBFBD>?
  3. 憭滚<EFBFBD><EFBFBD><EFBFBD><EFBFBD>掩隡潘<EFBFBD>http://123.456.789.0:3001嚗?

Step 3: 瘚贝<E7989A><E8B49D>亙藁

<EFBFBD><EFBFBD>瘚讛<EFBFBD><EFBFBD><EFBFBD>霈輸䔮嚗?

http://<雿删<E99BBF>SAE<41><EFBFBD><E7A589><EFBFBD>>/health

*<EFBFBD><EFBFBD>餈𥪜<EFBFBD>嚗?

{
  "status": "ok",
  "database": "connected",
  "timestamp": "2025-12-11T10:30:00.000Z"
}

蝚砍<EFBFBD>甇伐<EFBFBD><EFBFBD>函蔡<EFBFBD>滨垢

<EFBFBD><EFBFBD> 4.1 <20><><EFBFBD>滨垢<E6BBA8><EFBFBD><E8B9B1><EFBFBD>隞?

*<EFBFBD><EFBFBD>PowerShell嚗諹<EFBFBD><EFBFBD>卯rontend-v2<76><EFBFBD>嚗?

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

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

npm run build

<EFBFBD><EFBFBD>遣摰峕<EFBFBD><EFBFBD>𠬍<EFBFBD><EFBFBD>?dist/ <20><EFBFBD><E6A180><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B9B1><EFBFBD>隞嗚<E99A9E>?


<EFBFBD><EFBFBD> 4.2 <20>函蔡<E587BD>滨垢<E6BBA8>記SS

<EFBFBD><EFBFBD>A嚗帋蝙<EFBFBD>券燵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?

  1. <EFBFBD><EFBFBD>OSS<EFBFBD><EFBFBD><EFBFBD>?
  2. 餈𥕦<EFBFBD> aiclinical-dev Bucket
  3. <EFBFBD>孵稬<EFBFBD><EFBFBD>隞嗥恣<EFBFBD><EFBFBD><EFBFBD>?<3F>?<3F><EFBFBD>隡䭾<E99AA1>隞嗚<E99A9E>?
  4. <EFBFBD>㗇𥋘 frontend-v2/dist/ <20><EFBFBD>銝讠<E98A9D>**<2A><><EFBFBD><EFBFBD>隞?*
  5. 銝𠹺<EFBFBD>摰峕<EFBFBD><EFBFBD>𠬍<EFBFBD>霈曄蔭 index.html 銝粹<E98A9D>霈日<E99C88>憿?

<EFBFBD><EFBFBD>B嚗帋蝙<EFBFBD>汰SS<EFBFBD>賭誘銵<EFBFBD><EFBFBD>?

*摰㕑<EFBFBD>ossutil嚗<EFBFBD><EFBFBD><EFBFBD>嚗?

# 銝贝蝸 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

<EFBFBD><EFBFBD> 4.3 <20>滨蔭OSS<53><EFBFBD><E8B9B1><EFBFBD>蝡蹱<E89DA1>蝞?

  1. OSS<EFBFBD><EFBFBD><EFBFBD>?<3F>?aiclinical-dev Bucket

  2. 撌虫儒<EFBFBD>𨅯<EFBFBD> <20>?<3F><>抅蝖<E68A85>霈曄蔭<E69B84>?<3F>?<3F><EFBFBD><E5B1B8><EFBFBD><EFBFBD><EFBFBD>?

  3. <EFBFBD>孵稬<EFBFBD>諹挽蝵柴<EFBFBD><EFBFBD>

    • 暺䁅恕擐㚚△嚗䫤index.html`
    • 暺䁅恕404憿蛛<EFBFBD>index.html
    • <EFBFBD>孵稬<EFBFBD><EFBFBD>摮塩<EFBFBD>?
  4. <EFBFBD><EFBFBD>霈輸䔮<EFBFBD><EFBFBD>嚗?


蝚砌<EFBFBD>甇伐<EFBFBD>撉諹<EFBFBD><EFBFBD>函蔡

<EFBFBD>?5.1 <20>券曎頝舀<E9A09D>霂?

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

霈輸䔮嚗冴ttp://雿删<E99BBF>SAE<41><EFBFBD>:3001/health
憸<><E686B8>嚗朞<E59A97><E69C9E>?{"status":"ok"}

瘚贝<EFBFBD>2嚗𡁏㺭<EFBFBD><EFBFBD>餈墧𦻖

# <20>沒AE<41><EFBFBD><E689B9>?<3F>?摨𠉛鍂霂行<E99C82> <20>?摰墧𧒄<E5A2A7><EFBFBD>
# <20><EFBFBD><E4BAA6>臬炏<E887AC>?"<22>?<3F>唳旿摨栞<E691A8><E6A09E><EFBFBD><E4BAA4>? <20><EFBFBD>

瘚贝<EFBFBD>3嚗鐾SS摮睃<EFBFBD>

霈輸䔮嚗冴ttp://雿删<E99BBF>SAE<41><EFBFBD>:3001/api/v1/test/upload
銝𠹺<E98A9D><EFBFBD>銝芣<E98A9D>霂閙<E99C82>隞塚<E99A9E><E5A19A><EFBFBD><E4BAA6>臬炏<E887AC>𣂼<EFBFBD>

瘚贝<EFBFBD>4嚗𡁜<EFBFBD>蝡航挪<EFBFBD>?

霈輸䔮嚗冴ttp://aiclinical-dev.oss-cn-hangzhou.aliyuncs.com/
<0A><EFBFBD>憿菟𢒰<E88F9F>臬炏甇<E7828F><EFBFBD>曄內

<EFBFBD><EFBFBD> 5.2 <20><EFBFBD><E4BAA6>烐綉<E78390>唳旿

  1. SAE<EFBFBD><EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?<3F>𣬚<EFBFBD><F0A3AC9A>批之<E689B9><EFBFBD>?
  2. <EFBFBD><EFBFBD>嚗?
    • CPU雿輻鍂<EFBFBD>?
    • <EFBFBD><EFBFBD><EFBFBD>雿輻鍂<EFBFBD>?
    • QPS嚗<EFBFBD><EFBFBD>蝘坿窈瘙<EFBFBD>㺭嚗?
    • <EFBFBD><EFBFBD><EFBFBD>園𡢿

撣貉<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

<EFBFBD>?<3F><EFBFBD>1嚗𡁜<E59A97><F0A1819C>典鍳<E585B8>典仃韐?

*<EFBFBD><EFBFBD>𠶖嚗?

  • 摨𠉛鍂<EFBFBD><EFBFBD><EFBFBD>遬蝷箝<EFBFBD><EFBFBD><EFBFBD>撣詻<EFBFBD>?
  • <EFBFBD>亙熒璉<EFBFBD><EFBFBD>亙仃韐?

*<EFBFBD><EFBFBD>甇仿炊嚗?

  1. *<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?

    SAE<EFBFBD><EFBFBD><EFBFBD>?<3F>?摨𠉛鍂霂行<E99C82> <20>?摰墧𧒄<E5A2A7><EFBFBD>
    <0A><EFBFBD>𠧧<EFBCBA>?ERROR <20><EFBFBD>
    
  2. *撣貉<EFBFBD><EFBFBD>躰秤嚗?

    <EFBFBD>躰秤A嚗𡁏㺭<EFBFBD><EFBFBD>餈墧𦻖憭梯揖

    Error: Connection refused
    
    • <EFBFBD><EFBFBD>?DATABASE_URL <20><EFBFBD><E6BE86>臬炏甇<E7828F>
    • <EFBFBD><EFBFBD>?RDS <20><EFBFBD><E8B3A2>閙糓<E99699><EFBFBD><E8A180>?SAE <20>?IP
    • <EFBFBD><EFBFBD>?RDS <20><EFBFBD><E586BD><EFBFBD><E6BB9A><EFBFBD><EFBFBD>行迤蝖?

    *<EFBFBD>躰秤B嚗𡁶㴓憓<EFBFBD><EFBFBD><EFBFBD>讐撩憭?

    DATABASE_URL is required
    
    • <EFBFBD><EFBFBD>亦㴓憓<EFBFBD><EFBFBD><EFBFBD>𤩺糓<EFBFBD><EFBFBD>蝵桀<EFBFBD><EFBFBD>?
    • <EFBFBD>齿鰵<EFBFBD>函蔡摨𠉛鍂

    <EFBFBD>躰秤C嚗䥪risma 餈墧𦻖憭梯揖

    Prisma Client initialization failed
    
    • <EFBFBD><EFBFBD><EFBFBD><EFBFBD>銵峕㺭<EFBFBD><EFBFBD><EFBFBD>宏嚗?
      # <20>砍𧑐<E7A08D><EFBFBD><EFBFBD>宏嚗𣬚<E59A97><F0A3AC9A>擧綫<E693A7><E7B6AB><EFBFBD>RDS
      npx prisma migrate deploy
      

<EFBFBD>?<3F><EFBFBD>2嚗鐾SS銝𠹺<E98A9D>憭梯揖

*<EFBFBD><EFBFBD>𠶖嚗?

  • <EFBFBD><EFBFBD>辣銝𠹺<EFBFBD>餈𥪜<EFBFBD> 403 Forbidden

*<EFBFBD><EFBFBD>甇仿炊嚗?

  1. <EFBFBD><EFBFBD>?RAM <20><EFBFBD><E586BD><EFBFBD><EFBFBD>嚗?

    • <EFBFBD><EFBFBD><EFBFBD>?<3F>?RAM <20>?<3F><EFBFBD> <20>?<3F><><EFBFBD>
    • 蝖桐<EFBFBD><EFBFBD>?AliyunOSSFullAccess
  2. <EFBFBD><EFBFBD>亦㴓憓<EFBFBD><EFBFBD><EFBFBD>𧶏<EFBFBD>

    OSS_ACCESS_KEY_ID=<EFBFBD><EFBFBD><EFBFBD>D
    OSS_ACCESS_KEY_SECRET=<EFBFBD><EFBFBD><EFBFBD>ecret
    OSS_BUCKET=<EFBFBD><EFBFBD><EFBFBD>ucket<EFBFBD>滨妍
    
  3. 瘚贝<EFBFBD> OSS 餈墧𦻖嚗?

    // <20><EFBFBD><E585B8>冽𠯫敹𦯀葉<F0A6AF80><EFBFBD>
    console.log('OSS<53>滨蔭:', {
      region: process.env.OSS_REGION,
      bucket: process.env.OSS_BUCKET
    })
    

<EFBFBD>?<3F><EFBFBD>3嚗𡁜<E59A97>蝡舀<E89DA1>瘜閗挪<E99697><EFBFBD>蝡?

*<EFBFBD><EFBFBD>𠶖嚗?

  • <EFBFBD>滨垢<EFBFBD>曄內<EFBFBD>𣬚<EFBFBD>蝏𣈯<EFBFBD>霂胯<EFBFBD>?
  • API 霂瑟<E99C82>憭梯揖

*<EFBFBD><EFBFBD>甇仿炊嚗?

  1. <EFBFBD><EFBFBD>丘ORS<EFBFBD>滨蔭嚗?

    # <20>沒AE<41><EFBFBD><E887AC><EFBFBD>銝剔霈?
    CORS_ORIGIN=*  # <20><><EFBFBD><E68D82><EFBFBD>㗇䔉皞琜<E79A9E><EFBFBD><E69298>𤑳㴓憓<E3B493><E68693>
    
  2. <EFBFBD><EFBFBD><EFBFBD>蝡臬𧑐<EFBFBD><EFBFBD>嚗?

    // frontend-v2/vite.config.ts
    proxy: {
      '/api': {
        target: 'http://甇<><EFBFBD><EFBC86>AE<41><EFBFBD>:3001',
        changeOrigin: true
      }
    }
    
  3. 瘚贝<EFBFBD><EFBFBD>𡒊垢餈鮋<EFBFBD>𡁏<EFBFBD><EFBFBD>

    # <20>冽𧋦<E586BD>訐owerShell<6C><EFBFBD>
    curl http://雿删<E99BBF>SAE<41><EFBFBD>:3001/health
    

<EFBFBD>?<3F><EFBFBD>4嚗䥪ython敺格<E695BA><E6A0BC><EFBFBD>瘜閗<E7989C><E99697>?

*<EFBFBD><EFBFBD>𠶖嚗?

  • <EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD>憭梯揖
  • <EFBFBD><EFBFBD><EFBFBD>曄內 Connection refused to extraction service

*銝湔𧒄<EFBFBD><EFBFBD>嚗?

<EFBFBD><EFBFBD>Python敺格<EFBFBD><EFBFBD><EFBFBD><EFBFBD>冽𧋦<EFBFBD><EFBFBD>銵䕘<EFBFBD><EFBFBD><EFBFBD><EFBFBD>誑銝衤舅蝘齿䲮獢<EFBFBD><EFBFBD><EFBFBD>嚗?

<EFBFBD><EFBFBD>A嚗䥪ython<EFBFBD>滚𦛚銋罸<EFBFBD>蝵脣<EFBFBD>SAE嚗<EFBFBD><EFBFBD><EFBFBD>

  1. <EFBFBD>𥕦遣 extraction_service/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. <EFBFBD><EFBFBD>遣撟嗆綫<EFBFBD><EFBFBD><EFBFBD>

    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. <EFBFBD>沒AE<EFBFBD>𥕦遣<EFBFBD><EFBFBD><EFBFBD>?aiclinical-python-dev

  4. 靽格㺿Node<EFBFBD>𡒊垢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?

    EXTRACTION_SERVICE_URL=http://python<6F>滚𦛚<E6BB9A><F0A69B9A>AE<41><45><EFBFBD><EFBFBD><EFBFBD>:8000
    

<EFBFBD><EFBFBD>B嚗帋蝙<EFBFBD><EFBFBD>蝵𤑳忽<EFBFBD>𧶏<EFBFBD>銝湔𧒄撘<EFBFBD><EFBFBD>𡢅<EFBFBD>

  1. 雿輻鍂ngrok<EFBFBD>餻rp蝑匧極<EFBFBD>?
  2. <EFBFBD>𧋦<EFBFBD>?000蝡臬藁<E887AC>湧蠧<E6B9A7><EFBFBD>蝵?
  3. 靽格㺿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝箏<EFBFBD>蝵穃𧑐<EFBFBD><EFBFBD>

<EFBFBD><EFBFBD> <20>函蔡摰峕<E691B0><EFBFBD><E79289><EFBFBD><E4BAA4>?

<EFBFBD>?<3F>𡒊垢<F0A1928A>函蔡

  • Docker<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD>
  • <EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鈭飊CR
  • RDS<EFBFBD>唳旿摨㯄<EFBFBD>蝵桀<EFBFBD><EFBFBD>?
  • RDS<EFBFBD><EFBFBD><EFBFBD>訫歇瘛餃<EFBFBD>
  • OSS Bucket<65>𥕦遣摰峕<E691B0>
  • RAM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滨蔭甇<EFBFBD>
  • SAE摨𠉛鍂<EFBFBD>𥕦遣<EFBFBD>𣂼<EFBFBD>
  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滨蔭摰峕㟲
  • <EFBFBD>亙熒璉<EFBFBD><EFBFBD>仿<EFBFBD><EFBFBD>
  • /health <20>亙藁餈𥪜<E9A488><EFBFBD>

<EFBFBD>?<3F>滨垢<E6BBA8>函蔡

  • <EFBFBD>滨垢隞<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD>
  • API<EFBFBD><EFBFBD><EFBFBD>滨蔭甇<EFBFBD>
  • <EFBFBD><EFBFBD>辣銝𠹺<EFBFBD><EFBFBD>記SS
  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝡蹱<EFBFBD><EFBFBD><EFBFBD>?
  • <EFBFBD>滨垢憿菟𢒰<EFBFBD>航挪<EFBFBD>?
  • <EFBFBD><EFBFBD>蝡舫<EFBFBD>帋縑甇<EFBFBD>

<EFBFBD>?<3F>唳旿摨?

  • <EFBFBD>唳旿摨栞<EFBFBD>蝘餅<EFBFBD>銵峕<EFBFBD><EFBFBD>?
  • Schema<EFBFBD>𥕦遣摰峕<EFBFBD>
  • 瘚贝<EFBFBD><EFBFBD>唳旿<EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD>

<EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E59A97>蝵脣<E89DB5><E884A3><EFBFBD>

<EFBFBD><EFBFBD> 霈啣<E99C88><E595A3><EFBFBD>靽⊥<E99DBD>

霂瑕<EFBFBD>隞乩<EFBFBD>靽⊥<EFBFBD>靽嘥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>唳䲮嚗?

<EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD>霂閧㴓憓<EFBFBD><EFBFBD>?

<0A>𡒊垢<F0A1928A><EFBFBD>嚗冴ttp://雿删<E99BBF>SAE<41><EFBFBD>:3001
<0A>滨垢<E6BBA8><EFBFBD>嚗冴ttp://aiclinical-dev.oss-cn-hangzhou.aliyuncs.com

RDS餈墧𦻖靽⊥<E99DBD>嚗?
- <20><EFBFBD>嚗鬏m-xxxx.mysql.rds.aliyuncs.com
- <20>唳旿摨橒<E691A8>aiclinical_dev
- <20><EFBFBD><E586BD><EFBFBD>aiclinical
- 撖<><E69296>嚗?**嚗<>窈靽嘥<E99DBD>嚗?

OSS靽⊥<E99DBD>嚗?
- Bucket嚗惨iclinical-dev
- AccessKeyId嚗匁TAI5t***
- AccessKeySecret嚗?**嚗<>窈靽嘥<E99DBD>嚗?

ACR<43>𨅯<EFBFBD>隞枏<E99A9E>嚗?
- <20><EFBFBD>蝛粹𡢿嚗惨iclinical
- 隞枏<E99A9E>嚗颹ackend-dev, python-dev
- <20><EFBFBD><EFBFBD><E69296>嚗?**嚗<>窈靽嘥<E99DBD>嚗?

<EFBFBD><EFBFBD> 銝衤<E98A9D>甇?

  1. *<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>函蔡嚗㇃I/CD嚗?

    • <EFBFBD>滨蔭GitHub Actions<6E>銺enkins
    • <EFBFBD>芸𢆡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵?
  2. <EFBFBD>烐綉<EFBFBD>𡃏郎

    • <EFBFBD><EFBFBD>𡁻燵<EFBFBD><EFBFBD>ARMS<EFBFBD>烐綉
    • <EFBFBD>滨蔭<EFBFBD><EFBFBD>/<2F>桐辣<E6A190>𡃏郎
  3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>函蔡

    • <EFBFBD>𥕦遣<EFBFBD>煺漣<EFBFBD><EFBFBD>Bucket嚗䫤aiclinical-prod`
    • <EFBFBD>𥕦遣<EFBFBD>煺漣<EFBFBD><EFBFBD>RDS嚗𡁶𡠺蝡见<EFBFBD>靘?
    • <EFBFBD>𥕦遣<EFBFBD>煺漣<EFBFBD><EFBFBD>SAE摨𠉛鍂
    • 韐凋僭Redis嚗𡁶鍂鈭𡒊<EFBFBD>鈭抒㴓憓<EFBFBD><EFBFBD>摮?
    • <EFBFBD>滨蔭CDN嚗𡁜<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>皞?
  4. <EFBFBD><EFBFBD><EFBFBD>滨蔭

    • 韐凋僭<EFBFBD><EFBFBD>
    • <EFBFBD>滨蔭DNS閫<EFBFBD><EFBFBD>
    • <EFBFBD>唾窈SSL霂<EFBFBD>
    • <EFBFBD>滨蔭HTTPS

<EFBFBD><20>鞉𧋦隡睃<E99AA1>撱箄悅

<EFBFBD><EFBFBD><EFBFBD>霂閧㴓憓<EFBFBD><EFBFBD>敶枏<EFBFBD><EFBFBD>滨蔭嚗?

<EFBFBD>滚𦛚 <EFBFBD> <EFBFBD><EFBFBD> 霂湔<EFBFBD>
SAE 1C2G <20> 1摰硺<E691B0> 瞼150 <EFBFBD><EFBFBD>隞䁅晶
RDS 2C4G <20>𡁶鍂<F0A181B6>? 瞼300 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
OSS 100GB摮睃<EFBFBD> 瞼10 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
ACR <EFBFBD>滩晶憸嘥漲 瞼0 <EFBFBD>𣳇<EFBFBD>隞䁅晶
<EFBFBD><EFBFBD> *瞼460/<2F>?

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>鞉𧋦<EFBFBD><EFBFBD>撌?

  1. **RDS<44><53>僑隡䀹<E99AA1>**嚗朞揚銋?撟游虾<E6B8B8><E899BE><EFBFBD>15%
  2. <EFBFBD>脫𧒄<EFBFBD>喲𡡒SAE嚗𡁏<EFBFBD>霂閧㴓憓<EFBFBD><EFBFBD><EFBFBD>游虾<EFBFBD>喲𡡒嚗諹<EFBFBD><EFBFBD>?0%
  3. **OSS<53>笔𦶢<E7AC94><EFBFBD>**嚗朞挽蝵?0憭拙<E686AD>頧砌<E9A0A7>憸穃<E686B8><E7A983>?
  4. 銝滢蝙<EFBFBD>沖edis嚗𡁶<EFBFBD>瞼200/<2F>?

*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦嚗? v1.0
<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD><EFBFBD> 2025-12-11
蝏湔擪<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>舀沲<E88880><E6B2B2><EFBFBD>
*<EFBFBD><EFBFBD>嚗?<><E68692><EFBFBD><EFBFBD>嚗諹窈<E8ABB9>𠉛頂<F0A0899B><E9A082><EFBFBD>臬𣪧<E887AC>?