Files
AIclinicalresearch/docs/07-运维文档/01-环境配置指南.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

700 lines
16 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><EFBFBD><E887AC>滨蔭<E6BBA8><E894AD><EFBFBD>
> **<2A><><EFBFBD><EFB99D>𧋦嚗?* v1.0
> **<2A>𥕦遣<F0A595A6><EFBFBD>嚗?* 2025-11-09
> **蝏湔擪<E6B994><E693AA><EFBFBD>** <20><><EFBFBD>臬𣪧<E887AC>?
> **<2A><><EFBFBD>擧凒<E693A7><EFBFBD>** 2025-11-09
---
## <20><> <20><>﹝霂湔<E99C82>
<EFBFBD><EFBFBD><EFBFBD>扇敶閧頂蝏蠘<EFBFBD>銵峕<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>函㴓憓<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵殷<EFBFBD><EFBFBD><EFBFBD>𡠺嚗?- <20>唳旿摨栞<E691A8><E6A09E>乩縑<E4B9A9>?- LLM API撖<49>𤨎<EFBFBD>滨蔭
- 蝚砌<E89D9A><E7A08C><EFBFBD><E5AF9E><EFBFBD>蝵?- 摰匧<E691B0><E58CA7><EFBFBD><E8A9A8>滨蔭
---
## <20><>儭?<3F>唳旿摨㯄<E691A8>蝵?
### PostgreSQL餈墧𦻖靽⊥<E99DBD>
**敶枏<E695B6><E69E8F>滨蔭嚗?*
```env
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/ai_clinical_research
```
**餈墧𦻖<E5A2A7><F0A6BB96>㺭霂湔<E99C82>嚗?*
| <20><>㺭 | 敶枏<E695B6><E69E8F>?| 霂湔<E99C82> |
|------|--------|------|
| <20><EFBFBD><E586BD>?| postgres | PostgreSQL暺䁅恕<E48185><EFBFBD> |
| 撖<><E69296> | postgres | <20>砍𧑐撘<F0A79190><E69298><EFBFBD><E7A983>?|
| 銝餅㦤 | localhost | <20>砍𧑐<E7A08D>唳旿摨?|
| 蝡臬藁 | 5432 | PostgreSQL暺䁅恕蝡臬藁 |
| <20>唳旿摨枏<E691A8> | ai_clinical_research | 憿寧𤌍<E5AFA7>唳旿摨?|
**Schema靽⊥<E99DBD>嚗?*
- **敶枏<E695B6>Schema嚗?* `public`<EFBFBD><EFBFBD><EFBFBD>?3銝芾”嚗?- **霈<E99C88>Schema嚗?* 10銝芷<E98A9D>蝳艋chema嚗Áeek 1摰墧鴌嚗? - platform_schema
- common_schema
- asl_schema
- aia_schema
- pkb_schema
- dc_schema
- rvw_schema
- admin_schema
- ssa_schema
- st_schema
---
## <20><> LLM API<50>滨蔭
### 1. DeepSeek API
**<EFBFBD><EFBFBD><EFBFBD>** 銝餃<E98A9D>憭扳芋<E689B3><EFBFBD><E9A1B5><EFBFBD><E587BD><EFBFBD>笆霂腈<E99C82><E88588>鸌憭<E9B88C><E686AD>嚗?
**<EFBFBD>滨蔭嚗?*
```env
DEEPSEEK_API_KEY=sk-your-deepseek-key
```
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?*
1. 霈輸䔮嚗冴ttps://platform.deepseek.com
2. 瘜典<E7989C>/<2F><EFBFBD>韐血噡
3. 餈𥕦<E9A488>API Keys憿菟𢒰
4. <20>𥕦遣<F0A595A6><EFBFBD>API Key
**雿輻鍂<E8BCBB>箸艶嚗?*
- AI<41><EFBFBD><E7AE84><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD><EFBFBD><E981A0>ICO璇喟<E79287>蝑㚁<E89D91>
- <20><EFBFBD><E5ADB5><EFBFBD><EFBFBD>?- <20><><EFBFBD><EFBFBD><EFBFBD><E48185><EFBFBD>
- <20><EFBFBD>憭滨<E686AD>
**摰帋遠嚗?*
- DeepSeek-V3: 瞼1/M tokens嚗<73><E59A97><EFBFBD><EFBFBD>嚗𡐿?/M tokens嚗<73><E59A97><EFBFBD><EFBFBD>
---
### 2. <20><EFBFBD><E5B88B><EFBFBD>䔮嚗㇋wen嚗𡅅PI
**<EFBFBD><EFBFBD><EFBFBD>** 憭<>鍂璅<E79285><E288AA><EFBFBD>鸌摰𡁜㦤<F0A1819C><EFBFBD><E887AD>?
**<EFBFBD>滨蔭嚗?*
```env
DASHSCOPE_API_KEY=sk-your-qwen-key
```
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?*
1. 霈輸䔮嚗冴ttps://dashscope.console.aliyun.com
2.<><E69298>鋽ashScope<70>滚𦛚
3. <20>𥕦遣API Key
**雿輻鍂<E8BCBB>箸艶嚗?*
- <20><EFBFBD><E8B8B5><EFBFBD><E7A08D><EFBFBD><EFBFBD>Qwen-Long嚗?- <20><EFBFBD><EFBFBD><E686B8>隞餃𦛚
-<E79285>撖寞<E69296>蝑偦<E89D91>?
**摰帋遠嚗?*
- Qwen-Max: 瞼0.04/1K tokens
- Qwen-Long: 瞼0.005/1K tokens
---
### 3. CloseAI<41>滨蔭嚗<E894AD><EFBFBD><E8AAA8>penAI<41>龦laude嚗争<E59A97>潃鐥<E6BD83>
**<EFBFBD><EFBFBD><EFBFBD>** <20><EFBFBD><EFBFBD><E99A9E>撟喳蝱蝔喳<E89D94>霈輸䔮OpenAI<41>龦laude API
**銝箔<E98A9D><EFBFBD><EFBFBD>每loseAI嚗?*
- <20>?<3F><EFBFBD>蝔喳<E89D94>霈輸䔮嚗峕<E59A97><E5B395><EFBFBD>蝘穃郎銝羓<E98A9D>
- <20>?銝<>銝芾揭<E88ABE><EFBFBD><E79195>嗡蝙<E597A1>汰penAI<41>龦laude
- <20>?<3F>澆捆OpenAI SDK<44><4B><EFBFBD><EFBFBD>亙藁
- <20>?<3F><><EFBFBD>唳芋<E594B3>𧢲𣈲<F0A7A2B2><F0A388B2><EFBFBD>GPT-5-Pro<72><6F>laude-Sonnet-4.5
**<EFBFBD>滨蔭嚗?*
```env
# CloseAI蝏煺<E89D8F>API Key
CLOSEAI_API_KEY=sk-cu0iepbXYGGx2jc7BqP6ogtSWmP6fk918qV3RUdtGC3Edlpo
# OpenAI蝡舐<E89DA1><EFBFBD><E59A97><EFBFBD>CloseAI隞<49><E99A9E>嚗?CLOSEAI_OPENAI_BASE_URL=https://api.openai-proxy.org/v1
# Claude蝡舐<E89DA1><EFBFBD><E59A97><EFBFBD>CloseAI隞<49><E99A9E>嚗?CLOSEAI_CLAUDE_BASE_URL=https://api.openai-proxy.org/anthropic
```
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
| 璅<E79285>蝟餃<E89D9F> | <20><><EFBFBD>唳芋<E594B3>?| 霂湔<E99C82> |
|---------|---------|------|
| **OpenAI** | `gpt-5-pro` | <20><><EFBFBD>蚣PT-5璅<E79285> 潃?|
| OpenAI | `gpt-4-turbo-preview` | GPT-4擃䀹<E69383><EFBFBD><E689AF><EFBFBD>𧋦 |
| OpenAI | `gpt-3.5-turbo` | 敹恍<E695B9><EFBFBD>瘚𡒊<E7989A><F0A1928A>?|
| **Claude** | `claude-sonnet-4-5-20250929` | <20><><EFBFBD>蚓laude-4.5 潃?|
| Claude | `claude-3-5-sonnet-20241022` | Claude-3.5蝔喳<EFBFBD><EFBFBD>?|
| Claude | `claude-3-opus-20240229` | Claude-3<><33>撘箇<E69298><E7AE87>?|
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?*
1. 霈輸䔮嚗冴ttps://platform.openai-proxy.org
2. 瘜典<E7989C>韐血噡撟嗅<E6929F><E59785>?3. <20>冽綉<E586BD>嗅蝱<E59785><EFBFBD>API Key
4.<>銝服PI Key<65><EFBFBD><E887AC><EFBFBD><E59789>汰penAI<41>龦laude
**隞<><E99A9E>蝷箔<E89DB7>嚗㇍ypeScript嚗㚁<E59A97>**
```typescript
import OpenAI from 'openai';
// OpenAI (<28><EFBFBD>CloseAI)
const openaiClient = new OpenAI({
apiKey: process.env.CLOSEAI_API_KEY,
baseURL: 'https://api.openai-proxy.org/v1',
});
const gptResponse = await openaiClient.chat.completions.create({
model: 'gpt-5-pro',
messages: [{ role: 'user', content: '雿惩末' }],
});
// Claude (<28><EFBFBD>CloseAI)
const claudeClient = new OpenAI({
apiKey: process.env.CLOSEAI_API_KEY,
baseURL: 'https://api.openai-proxy.org/anthropic',
});
const claudeResponse = await claudeClient.chat.completions.create({
model: 'claude-sonnet-4-5-20250929',
messages: [{ role: 'user', content: '雿惩末' }],
});
```
**雿輻鍂<E8BCBB>箸艶嚗㇁I<E38781><EFBFBD><E7AE84><EFBFBD>讃 潃琜<E6BD83>嚗?*
- **GPT-5-Pro嚗?* <20><>讃蝎曉<E89D8E>蝑偦<E89D91><EFBFBD><E589B9><EFBFBD>𤩺綉<F0A4A9BA>?- **Claude-4.5嚗?* 蝚砌<E89D9A><E7A08C>嫣輔鋆<E8BC94><E98B86><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>颲枏枂
- **<2A>峕芋<E5B395>见笆瘥䈑<E798A5>** DeepSeek + GPT-5-Pro 敹恍<E695B9>?擃䁅捶<E48185>?- **銝㗇芋<E39787><EFBFBD><EFBFBD><E99C82>** <20><EFBFBD><E884A9>嗅鍳<E59785>每laude隞脰<E99A9E>
**摰帋遠嚗<E981A0><E59A97><EFBFBD><EFBFBD><EFBFBD>嚗?*
- GPT-5-Pro: ~瞼0.10/1K tokens嚗<73><E59A97><EFBFBD><EFBFBD>嚗斋瞼0.20/1K tokens嚗<73><E59A97><EFBFBD><EFBFBD>
- Claude-4.5-Sonnet: ~瞼0.021/1K tokens嚗<73><E59A97><EFBFBD><EFBFBD>嚗斋瞼0.105/1K tokens嚗<73><E59A97><EFBFBD><EFBFBD>
**瘜冽<E7989C>鈭钅★嚗?*
- <20>𩤃<EFBFBD> API Key<65><79><EFBFBD>𤩺<EFBFBD>靽⊥<E99DBD>嚗䔶<E59A97><EFBFBD><E996AC>鈭文<E988AD>Git
- <20>𩤃<EFBFBD> 撱箄悅摰𡁏<E691B0><F0A1818F>湔揢API Key
- <20>𩤃<EFBFBD> <20>煺漣<E785BA><EFBFBD>雿輻鍂<E8BCBB><EFBFBD><E7A589><EFBFBD>PI Key
---
## <20>圲 Dify<66>滨蔭嚗㇌AG撘閙<E69298>嚗?
**<2A><EFBFBD><EFBFBD>** <20><EFBFBD>摨枏<E691A8><E69E8F>𤩺<EFBFBD><E89D9D><EFBCB5>AG<41><EFBFBD>
**<EFBFBD>滨蔭嚗?*
```env
DIFY_API_KEY=app-your-dify-key
DIFY_API_URL=http://localhost/v1
```
**<EFBFBD>函蔡靽⊥<EFBFBD>嚗?*
- **<2A>砍𧑐<E7A08D>函蔡嚗?* Docker Compose
- **霈輸䔮<E8BCB8><EFBFBD>嚗?* http://localhost
- **蝞∠<E89D9E><E288A0>𤾸蝱嚗?* http://localhost/install
- **<2A><EFBFBD><E785BE>唳旿摨橒<E691A8>** Qdrant嚗<74><E59A97>蝵殷<E89DB5>
**<EFBFBD><EFBFBD>API Key嚗?*
1. 霈輸䔮 Dify 蝞∠<E89D9E><E288A0>𤾸蝱
2. 餈𥕦<E9A488>"摨𠉛鍂"憿菟𢒰
3. <20>𥕦遣"<22><EFBFBD>摨枏<E691A8><E69E8F>?
4. 憭滚<E686AD>API Key
**雿輻鍂<E8BCBB>箸艶嚗?*
- 銝芯犖<E88AAF><EFBFBD>摨𤘪<E691A8><EFBFBD><E78DA2>隡?- @<40><EFBFBD>摨㯄䔮蝑?- <20><EFBFBD>撘閧鍂<E996A7><EFBFBD>
---
## <20><> 摰匧<E691B0><E58CA7>滨蔭
### JWT撖<54>𤨎
**<EFBFBD>滨蔭嚗?*
```env
JWT_SECRET=your-secret-key-change-in-production
JWT_EXPIRES_IN=7d
```
**霂湔<E99C82>嚗?*
- <20><EFBFBD><E585B6><EFBFBD>霈方<E99C88>Token蝑曉<E89D91>
- 撱箄悅雿輻鍂32雿滢誑銝𢠃<E98A9D><F0A2A083><EFBFBD>蝚虫葡
-<><E9A488><EFBFBD>園𡢿嚗?憭?
**<2A><><EFBFBD>撘箏<E69298><E7AE8F><EFBFBD><E4BC90><EFBFBD><EFBFBD>嚗?*
```bash
# Node.js<6A><73><EFBFBD>
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# OpenSSL<53><4C><EFBFBD>
openssl rand -hex 32
```
---
## <20><> <20>滚𦛚<E6BB9A>滨蔭
### <20>𡒊垢<F0A1928A>滚𦛚
**<EFBFBD>滨蔭嚗?*
```env
PORT=3001
HOST=0.0.0.0
NODE_ENV=development
LOG_LEVEL=info
```
**霂湔<E99C82>嚗?*
| <20><>㺭 | <20>?| 霂湔<E99C82> |
|------|-----|------|
| PORT | 3001 | <20>𡒊垢<F0A1928A>滚𦛚蝡臬藁 |
| HOST | 0.0.0.0 | <20>穃𨯬<E7A983><F0A8AFAC><EFBFBD><EFBFBD><E58EA9>?|
| NODE_ENV | development | 撘<><E69298>𤑳㴓憓?|
| LOG_LEVEL | info | <20><EFBFBD>蝥批<E89DA5> |
---
### CORS<52>滨蔭
**<EFBFBD>滨蔭嚗?*
```env
CORS_ORIGIN=http://localhost:5173
```
**霂湔<E99C82>嚗?*
- <20><><EFBFBD>滨垢頝典<E9A09D>霈輸䔮
- <20>滨垢撘<E59EA2><E69298><EFBFBD><E78390>膥嚗冴ttp://localhost:5173
---
### Redis<69>滨蔭嚗<E894AD><EFBFBD><EFBFBD>
**<EFBFBD>滨蔭嚗?*
```env
REDIS_URL=redis://localhost:6379
```
**霂湔<E99C82>嚗?*
- <20><EFBFBD>蝻枏<E89DBB><E69E8F><EFBFBD>霂萘恣<E89098>?- 敶枏<E695B6><E69E8F>芸撩<E88AB8><EFBFBD>瘙?
---
## <20><> <20><>辣銝𠹺<E98A9D><F0A0B9BA>滨蔭
**<EFBFBD>滨蔭嚗?*
```env
UPLOAD_MAX_SIZE=10485760
UPLOAD_DIR=./uploads
```
**霂湔<E99C82>嚗?*
| <20><>㺭 | <20>?| 霂湔<E99C82> |
|------|-----|------|
| UPLOAD_MAX_SIZE | 10485760 | 10MB嚗<42><E59A97><EFBFBD><EFBFBD><EFBFBD> |
| UPLOAD_DIR | ./uploads | 銝𠹺<E98A9D><F0A0B9BA><EFBFBD>辣摮睃<E691AE><E79D83><EFBFBD> |
---
## <20><> <20>滨蔭甇仿炊
### 1. 璉<><E79289>亦㴓憓<E3B493><E68693><EFBFBD>𤩺<EFBFBD>隞?
**雿滨蔭嚗?* `backend/.env`
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>辣銝滚<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>誑銝𧢲芋<EFBFBD><EFBFBD>撱綽<EFBFBD>
```env
# ==================== <20>滚𦛚<E6BB9A><EFBFBD>蝵?====================
PORT=3001
HOST=0.0.0.0
NODE_ENV=development
LOG_LEVEL=info
# ==================== <20>唳旿摨㯄<E691A8>蝵?====================
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/ai_clinical_research
# ==================== Redis<69>滨蔭 ====================
REDIS_URL=redis://localhost:6379
# ==================== JWT<57>滨蔭 ====================
JWT_SECRET=your-secret-key-change-in-production
JWT_EXPIRES_IN=7d
# ==================== LLM API<50>滨蔭 ====================
# DeepSeek
DEEPSEEK_API_KEY=sk-your-deepseek-key
# <20><EFBFBD><E5B88B><EFBFBD>䔮嚗<E494AE><EFBFBD><EFBFBD>DashScope嚗?DASHSCOPE_API_KEY=sk-your-qwen-key
# Gemini嚗<69><EFBFBD><EFBFBD>
GEMINI_API_KEY=your-gemini-key
# ==================== Dify<66>滨蔭 ====================
DIFY_API_KEY=app-your-dify-key
DIFY_API_URL=http://localhost/v1
# ==================== <20><>辣銝𠹺<E98A9D><F0A0B9BA>滨蔭 ====================
UPLOAD_MAX_SIZE=10485760
UPLOAD_DIR=./uploads
# ==================== CORS<52>滨蔭 ====================
CORS_ORIGIN=http://localhost:5173
```
---
### 2. 撉諹<E69289><E8ABB9>滨蔭
**<EFBFBD>臬𢆡<EFBFBD>𡒊垢<EFBFBD>滚𦛚嚗?*
```bash
cd backend
npm run dev
```
**璉<><E79289>亙鍳<E4BA99>冽𠯫敹梹<E695B9>**
```
<EFBFBD>?Prisma schema loaded
<EFBFBD>?Environment variables loaded from .env
<EFBFBD>?Datasource "db": PostgreSQL database "ai_clinical_research"
<EFBFBD>?Server running on http://0.0.0.0:3001
```
**撉諹<E69289><E8ABB9>唳旿摨栞<E691A8><E6A09E><EFBFBD>**
```bash
cd backend
npx prisma migrate status
```
**憸<><E686B8>颲枏枂嚗?*
```
Environment variables loaded from .env
Datasource "db": PostgreSQL database "ai_clinical_research", schema "public" at "localhost:5432"
Database schema is up to date!
```
---
### 3. 撣貉<E692A3><E8B289><EFBFBD><E6A185>埝䰻
#### <20><EFBFBD>1嚗𡁏㺭<F0A1818F><EFBFBD>餈墧𦻖憭梯揖
**<EFBFBD>躰秤靽⊥<EFBFBD>嚗?*
```
Error: Can't reach database server at localhost:5432
```
**閫<><E996AB><EFBFBD><EFBFBD>嚗?*
1.<><E79289>仙ostgreSQL<51>臬炏<E887AC>臬𢆡
2. 撉諹<E69289>蝡臬藁5432<33>臬炏鋡怠<E98BA1><E680A0>?3. 蝖株恕<E6A0AA><EFBFBD><E586BD><EFBFBD><E6BB9A><EFBFBD><EFBFBD>行迤蝖?
**璉<><E79289>仙ostgreSQL<51><EFBFBD><E59786><EFBFBD>Windows嚗㚁<E59A97>**
```bash
# <20><EFBFBD><E4BAA6>滚𦛚<E6BB9A><EFBFBD>?Get-Service postgresql*
# <20>臬𢆡<E887AC>滚𦛚
Start-Service postgresql-x64-15
```
---
#### <20><EFBFBD>2嚗匁LM API靚<49>鍂憭梯揖
**<EFBFBD>躰秤靽⊥<EFBFBD>嚗?*
```
Error: Invalid API key
```
**閫<><E996AB><EFBFBD><EFBFBD>嚗?*
1.<><E79289>丕PI Key<65>臬炏甇<E7828F>憭滚<E686AD>
2. 蝖株恕API Key<65>臬炏撌脫<E6928C>瘣?3. 璉<><E79289>亥揭<E4BAA5><EFBFBD>憸脲糓<E884B2><EFBFBD>頞?
---
#### <20><EFBFBD>3嚗鋽ify餈墧𦻖憭梯揖
**<EFBFBD>躰秤靽⊥<EFBFBD>嚗?*
```
Error: connect ECONNREFUSED 127.0.0.1:80
```
**閫<><E996AB><EFBFBD><EFBFBD>嚗?*
1.<><E79289>主ify<66>臬炏<E887AC>臬𢆡嚗䫤docker-compose ps`
2. <20>臬𢆡Dify嚗䫤docker-compose up -d`
3. 撉諹<E69289>霈輸䔮嚗𡁏<E59A97><EFBFBD><EFBFBD><EFBFBD> http://localhost
---
## <20><> 撟喳蝱<E596B3><EFBFBD>霈暹鴌<E69AB9>滨蔭嚗?025-11-16 <20><EFBFBD>嚗?
> **潃?<3F><EFBFBD><E6BBA9>湔鰵**嚗帋蛹<E5B88B><EFBFBD>鈭穃<E988AD><E7A983><EFBFBD>蝵莎<E89DB5><E88E8E><EFBFBD>撟喳蝱<E596B3><EFBFBD>霈暹鴌<E69AB9><EFBFBD><E887AC><EFBFBD>
> **霂衣<E99C82><E8A1A3><EFBFBD>﹝**嚗靀撟喳蝱<E596B3><EFBFBD>霈暹鴌閫<E9B48C><E996AB>](../09-<2D><EFBFBD>摰墧鴌/04-撟喳蝱<E596B3><EFBFBD>霈暹鴌閫<E9B48C><E996AB>.md)
---
### 1. 摮睃<E691AE><E79D83>滚𦛚<E6BB9A>滨蔭
#### **<2A>砍𧑐撘<F0A79190><E69298>𤑳㴓憓?*
```bash
# backend/.env.development
STORAGE_TYPE=local
BASE_URL=http://localhost:3001
```
#### **<2A>煺漣<E785BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OSS嚗?*
```bash
# SAE<41><EFBFBD><E689B9>?-> <20><EFBFBD><E887AC><EFBFBD><E3979B>滨蔭
STORAGE_TYPE=oss
OSS_REGION=oss-cn-hangzhou
OSS_BUCKET=aiclinical-prod
OSS_ACCESS_KEY_ID=LTAI5t***
OSS_ACCESS_KEY_SECRET=***
OSS_ENDPOINT=https://oss-cn-hangzhou.aliyuncs.com
```
#### **<2A>滨蔭霂湔<E99C82>**
| <20><EFBFBD><E3979B>?| 敹<><E695B9> | 暺䁅恕<E48185>?| 霂湔<E99C82> |
|--------|------|--------|------|
| `STORAGE_TYPE` | <20>?| `local` | 摮睃<E691AE>蝐餃<E89D90>嚗䫤local` <20>?`oss` |
| `BASE_URL` | <20>砍𧑐 | `http://localhost:3001` | <20>砍𧑐摮睃<E691AE>霈輸䔮URL |
| `OSS_REGION` | <20>煺漣 | - | OSS<53><EFBFBD><EFBFBD><E59A97>嚗駅ss-cn-hangzhou嚗?|
| `OSS_BUCKET` | <20>煺漣 | - | OSS Bucket<65>滨妍 |
| `OSS_ACCESS_KEY_ID` | <20>煺漣 | - | <20><EFBFBD>鈭飊ccessKey ID |
| `OSS_ACCESS_KEY_SECRET` | <20>煺漣 | - | <20><EFBFBD>鈭飊ccessKey Secret |
---
### 2. 蝻枏<E89DBB><E69E8F>滚𦛚<E6BB9A>滨蔭
#### **<2A>砍𧑐撘<F0A79190><E69298>𤑳㴓憓?*
```bash
# backend/.env.development
CACHE_TYPE=memory
```
#### **<2A>煺漣<E785BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Redis嚗?*
```bash
# SAE<41><EFBFBD><E689B9>?-> <20><EFBFBD><E887AC><EFBFBD><E3979B>滨蔭
CACHE_TYPE=redis
REDIS_HOST=r-***.redis.aliyuncs.com
REDIS_PORT=6379
REDIS_PASSWORD=***
REDIS_DB=0
```
#### **<2A>滨蔭霂湔<E99C82>**
| <20><EFBFBD><E3979B>?| 敹<><E695B9> | 暺䁅恕<E48185>?| 霂湔<E99C82> |
|--------|------|--------|------|
| `CACHE_TYPE` | <20>?| `memory` | 蝻枏<E89DBB>蝐餃<E89D90>嚗䫤memory` <20>?`redis` |
| `REDIS_HOST` | Redis | - | Redis銝餅㦤<E9A485><EFBFBD> |
| `REDIS_PORT` | Redis | `6379` | Redis蝡臬藁 |
| `REDIS_PASSWORD` | Redis | - | Redis撖<73><E69296> |
| `REDIS_DB` | Redis | `0` | Redis<69>唳旿摨梶<E691A8><E6A2B6>?|
---
### 3. <20>唳旿摨栞<E691A8><E6A09E><EFBFBD><E4BAA4>滨蔭
#### **<2A>砍𧑐撘<F0A79190><E69298>𤑳㴓憓?*
```bash
# backend/.env.development
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/ai_clinical_research
# <20>砍𧑐撘<F0A79190><E69298><EFBFBD><E78390><EFBFBD><EFBFBD>滨蔭餈墧𦻖瘙?```
#### **<2A>煺漣<E785BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RDS嚗?*
```bash
# SAE<41><EFBFBD><E689B9>?-> <20><EFBFBD><E887AC><EFBFBD><E3979B>滨蔭
DATABASE_URL=postgresql://user:password@rm-xxx.aliyuncs.com:5432/prod_db
DB_MAX_CONNECTIONS=400 # RDS<44><53>憭扯<E686AD><E689AF>交㺭
MAX_INSTANCES=20 # SAE<41><45>憭批<E686AD>靘𧢲㺭
```
#### **<2A>滨蔭霂湔<E99C82>**
| <20><EFBFBD><E3979B>?| 敹<><E695B9> | 暺䁅恕<E48185>?| 霂湔<E99C82> |
|--------|------|--------|------|
| `DATABASE_URL` | <20>?| - | PostgreSQL餈墧𦻖摮㛖泵銝?|
| `DB_MAX_CONNECTIONS` | <20>煺漣 | `400` | RDS<44><53>憭扯<E686AD><E689AF>交㺭 |
| `MAX_INSTANCES` | <20>煺漣 | `20` | SAE<41><45>憭批<E686AD>靘𧢲㺭 |
**餈墧𦻖<E5A2A7>啗恣蝞?*嚗?```
瘥誩<EFBFBD>靘贝<EFBFBD><EFBFBD>交㺭 = DB_MAX_CONNECTIONS / MAX_INSTANCES
蝷箔<EFBFBD>嚗?00 / 20 = 20餈墧𦻖/摰硺<E691B0>
```
---
### 4. <20><EFBFBD><E4BA99>滨蔭
```bash
# <20>𡁶鍂<F0A181B6>滨蔭
LOG_LEVEL=info # debug | info | warn | error
NODE_ENV=development # development | production | test
```
#### **<2A>滨蔭霂湔<E99C82>**
| <20><EFBFBD><E3979B>?| 敹<><E695B9> | 暺䁅恕<E48185>?| 霂湔<E99C82> |
|--------|------|--------|------|
| `LOG_LEVEL` | <20>?| `info` | <20><EFBFBD>蝥批<E89DA5> |
| `NODE_ENV` | <20>?| `development` | 餈鞱<E9A488><E99EB1><EFBFBD> |
---
### 5. <20><EFBFBD><EFBFBD><E69298><EFBFBD>蝵?
```bash
# <20>舐鍂<E88890><E98D82><EFBFBD><EFBFBD>⊥芋<E28AA5><EFBFBD><E6A2B9>堒噡<E5A092><E599A1><EFBFBD>嚗?ENABLED_MODULES=ASL,AIA,PKB,DC,SSA,ST
# <20>硋鍳<E7A18B><EFBFBD><E585B8>?ENABLED_MODULES=*
```
#### **<2A>滨蔭霂湔<E99C82>**
| 璅<E79285><EFBFBD><E99A9E> | 璅<E79285><E288AA>滨妍 | <20><EFBFBD>?|
|---------|---------|------|
| `ASL` | AI<41><EFBFBD><E7AE84><EFBFBD>讃 | 撘<><E69298>睲葉 |
| `AIA` | AI<41><EFBFBD><E7AE84><EFBFBD> | 撌脣<E6928C><E884A3>?|
| `PKB` | 銝芯犖<E88AAF><EFBFBD>摨?| 撌脣<E6928C><E884A3>?|
| `DC` | <20>唳旿皜<E697BF><E79A9C> | 霈<E99C88>銝?|
| `SSA` | <20><EFBFBD>蝏蠘恣<E8A098><E681A3><EFBFBD> | 霈<E99C88>銝?|
| `ST` | 蝏蠘恣撌亙<E6928C> | 霈<E99C88>銝?|
---
### 6. 摨𠉛鍂<F0A0899B>滨蔭
```bash
# 摨𠉛鍂<F0A0899B><EFBFBD><E7AE87>滨蔭
PORT=3001 # 摨𠉛鍂蝡臬藁
BASE_URL=http://localhost:3001
# JWT<57>滨蔭
JWT_SECRET=your-secret-key-here
JWT_EXPIRES_IN=7d
# CORS<52>滨蔭
CORS_ORIGIN=http://localhost:5173
```
---
## <20><> 摰峕㟲<E5B395><EFBFBD><E887AC><EFBFBD>璅⊥踎
### **backend/.env.development嚗<74>𧋦<EFBFBD><EFBFBD><E595A3>𡢅<EFBFBD>**
```bash
# ==================== 摨𠉛鍂<F0A0899B>滨蔭 ====================
NODE_ENV=development
PORT=3001
BASE_URL=http://localhost:3001
# ==================== <20>唳旿摨㯄<E691A8>蝵?====================
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/ai_clinical_research
# ==================== 摮睃<E691AE><E79D83>滚𦛚 ====================
STORAGE_TYPE=local
# ==================== 蝻枏<E89DBB><E69E8F>滚𦛚 ====================
CACHE_TYPE=memory
# ==================== <20><EFBFBD><E4BA99>滨蔭 ====================
LOG_LEVEL=debug
# ==================== LLM<4C>滨蔭 ====================
DEEPSEEK_API_KEY=sk-***
QWEN_API_KEY=sk-***
# ==================== RAG<41>滨蔭 ====================
DIFY_API_BASE_URL=http://localhost/v1
DIFY_API_KEY=app-***
# ==================== JWT<57>滨蔭 ====================
JWT_SECRET=dev-secret-key-change-in-production
JWT_EXPIRES_IN=7d
# ==================== CORS<52>滨蔭 ====================
CORS_ORIGIN=http://localhost:5173
# ==================== <20><EFBFBD><EFBFBD><E69298>?====================
ENABLED_MODULES=*
```
### **backend/.env.production嚗<6E><E59A97>鈭抒㴓憓<E3B493><E68693>**
```bash
# ==================== 摨𠉛鍂<F0A0899B>滨蔭 ====================
NODE_ENV=production
PORT=3001
# ==================== <20>唳旿摨㯄<E691A8>蝵?====================
DATABASE_URL=postgresql://user:password@rm-xxx.aliyuncs.com:5432/prod_db
DB_MAX_CONNECTIONS=400
MAX_INSTANCES=20
# ==================== 摮睃<E691AE><E79D83>滚𦛚 ====================
STORAGE_TYPE=oss
OSS_REGION=oss-cn-hangzhou
OSS_BUCKET=aiclinical-prod
OSS_ACCESS_KEY_ID=LTAI5t***
OSS_ACCESS_KEY_SECRET=***
# ==================== 蝻枏<E89DBB><E69E8F>滚𦛚 ====================
CACHE_TYPE=redis
REDIS_HOST=r-***.redis.aliyuncs.com
REDIS_PORT=6379
REDIS_PASSWORD=***
REDIS_DB=0
# ==================== <20><EFBFBD><E4BA99>滨蔭 ====================
LOG_LEVEL=info
# ==================== LLM<4C>滨蔭 ====================
DEEPSEEK_API_KEY=sk-***
QWEN_API_KEY=sk-***
# ==================== RAG<41>滨蔭 ====================
DIFY_API_BASE_URL=https://api.dify.ai/v1
DIFY_API_KEY=app-***
# ==================== JWT<57>滨蔭 ====================
JWT_SECRET=<<3C>煺漣<E785BA><EFBFBD>撘箏<E69298><E7AE8F>?
JWT_EXPIRES_IN=7d
# ==================== CORS<52>滨蔭 ====================
CORS_ORIGIN=https://app.yourdomain.com
# ==================== <20><EFBFBD><EFBFBD><E69298>?====================
ENABLED_MODULES=ASL,AIA,PKB,DC,SSA,ST
```
---
## <20><> <20>滨蔭璉<E894AD><E79289><EFBFBD><E4BAA4>?
雿輻鍂隞乩<EFBFBD><EFBFBD><EFBFBD>撉諹<EFBFBD><EFBFBD>滨蔭摰峕㟲<EFBFBD><EFBFBD>
### **<2A><EFBFBD><E7AE87>滨蔭嚗<E894AD><E59A97><EFBFBD><EFBFBD>嚗?*
- [ ] <20>?<3F>唳旿摨栞<E691A8><E6A09E><EFBFBD><E4BAA4><EFBFBD><EFBFBD>`npx prisma migrate status`嚗?- [ ] <20>?摮睃<E691AE>蝐餃<E89D90>撌脤<E6928C>蝵殷<E89DB5>`STORAGE_TYPE`嚗?- [ ] <20>?<3F><EFBFBD>蝥批<E89DA5>撌脤<E6928C>蝵殷<E89DB5>`LOG_LEVEL`嚗?- [ ] <20>?JWT撖<54>𤨎撌脤<E6928C>蝵?
### **LLM<4C>滨蔭嚗<E894AD><E59A97><EFBFBD><EFBFBD>嚗?*
- [ ] <20>?DeepSeek API Key<65>滨蔭銝𥪜虾<F0A5AA9C>?- [ ] <20>?Qwen API Key<65>滨蔭銝𥪜虾<F0A5AA9C>?- [ ] <20>?Dify<66>滚𦛚餈鞱<E9A488>銝哨<E98A9D>`docker-compose ps`嚗?- [ ] <20>?Dify API Key撌脤<E6928C>蝵?
### **撟喳蝱<E596B3><EFBFBD>霈暹鴌嚗<E9B48C><E59A97><EFBFBD><EFBFBD>嚗?*
- [ ] <20>?摮睃<E691AE><E79D83>滚𦛚<E6BB9A>滨蔭甇<E894AD><EFBC86>𧋦<EFBFBD>?OSS嚗?- [ ] <20>?蝻枏<E89DBB><E69E8F>滚𦛚<E6BB9A>滨蔭甇<E894AD>嚗㇈emory/Redis嚗?- [ ] <20>?餈墧𦻖瘙惩<E79899><E683A9>啣歇<E595A3>滨蔭嚗<E894AD><E59A97>鈭抒㴓憓<E3B493><E68693>
- [ ] <20>?<3F><EFBFBD><EFBFBD><E69298>喳歇<E596B3>滨蔭嚗𠄌NABLED_MODULES嚗?
### **摨𠉛鍂餈鞱<E9A488><EFBFBD><E59A97><EFBFBD><EFBFBD>嚗?*
- [ ] <20>?<3F>𡒊垢<F0A1928A>滚𦛚<E6BB9A>臬𢆡<E887AC>𣂼<EFBFBD><EFBFBD><EFBFBD>?001嚗?- [ ] <20>?<3F>滨垢<E6BBA8>滚𦛚<E6BB9A>臬𢆡<E887AC>𣂼<EFBFBD><EFBFBD><EFBFBD>?173嚗?- [ ] <20>?CORS<52>滨蔭甇<E894AD><EFBC86><E59A97>蝡臬虾霈輸䔮<E8BCB8>𡒊垢API嚗?- [ ] <20>?<3F>舀迤撣訾蝙<E8A8BE>典像<E585B8><EFBFBD><E594B3><EFBFBD>storage/logger/cache蝑㚁<E89D91>
---
## <20><> <20>滨蔭<E6BBA8>湔鰵霈啣<E99C88>
| <20><EFBFBD> | <20>湔鰵<E6B994><E9B0B5>捆 | <20>湔鰵鈭?|
|------|---------|--------|
| 2025-11-09 | <20><EFBFBD><E598A5>滨蔭<E6BBA8><E894AD><EFBFBD>𥕦遣 | <20><><EFBFBD>臬𣪧<E887AC>?|
| 2025-11-16 | <20><EFBFBD>撟喳蝱<E596B3><EFBFBD>霈暹鴌<E69AB9>滨蔭蝡㰘<E89DA1> | <20><><EFBFBD>臬𣪧<E887AC>?|
---
## <20><> <20><EFBFBD><E8A9A8><EFBFBD>
- [<5B>唳旿摨栞<E691A8><E6A09E>仿<EFBFBD>蝵孫(../09-<2D><EFBFBD>摰墧鴌/02-<2D>唳旿摨栞<E691A8><E6A09E>仿<EFBFBD>蝵?md)
- [<EFBFBD>函蔡<EFBFBD><EFBFBD>霈曇恣](../05-<2D>函蔡<E587BD><E894A1>﹝/01-<2D>函蔡<E587BD><EFBFBD>霈曇恣.md)
- [蝟餌<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](../00-憿寧𤌍璁<F0A48C8D>膩/<2F><><EFBFBD>舀沲<E88880><E6B2B2><EFBFBD><EFBFBD>.md)
---
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦嚗?* v1.0
**<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD><EFBFBD>** 2025-11-09
**蝏湔擪<E6B994><E693AA><EFBFBD>** <20><><EFBFBD>臬𣪧<E887AC>?