Files
AIclinicalresearch/docs/07-运维文档/03-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

414 lines
7.7 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.
# SAE<41><EFBFBD><E887AC><EFBFBD><E3979B>滨蔭<E6BBA8><E894AD><EFBFBD>
> **<2A><><EFBFBD><EFB99D>𧋦嚗?* v1.0
> **<2A>𥕦遣<F0A595A6><EFBFBD>嚗?* 2025-12-11
> **<2A><><EFBFBD>箸艶嚗?* <20><EFBFBD>鈭騌AE<41>函蔡<E587BD><EFBFBD><E887AC><EFBFBD><E3979B>滨蔭
> **雿輻鍂<E8BCBB><EFBFBD>嚗?* <20>沒AE<41><EFBFBD><E689B9><EFBFBD><EFBFBD><E99EB1>滨蔭
---
## <20><> <20>滨蔭霂湔<E99C82>
<EFBFBD>券燵<EFBFBD><EFBFBD>SAE<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵桃㴓憓<EFBFBD><EFBFBD><EFBFBD>𤩺𧒄嚗峕<EFBFBD><EFBFBD>找誑銝钅◇摨誯<EFBFBD><EFBFBD>瘛餃<EFBFBD>嚗?
### <20><EFBFBD>甇仿炊
1. <20><EFBFBD><E9A483><EFBFBD>鈭烐綉<E78390>嗅蝱
2. 餈𥕦<E9A488> Serverless摨𠉛鍂撘閙<E69298>SAE
3. <20>㗇𥋘摨𠉛鍂 <20>?<3F>滨蔭蝞∠<E89D9E> <20>?<3F><EFBFBD><E887AC><EFBFBD>
4. <20>孵稬<E5ADB5>峕溶<E5B395>删㴓憓<E3B493><E68693><EFBFBD><EFBFBD>?
5. <20><EFBFBD>憭滚<E686AD>隞乩<E99A9E><E4B9A9><EFBFBD>捆嚗<E68D86>𤜯<EFBFBD><EFBFBD><EFBCB8>?雿删<E99BBF>XXX"嚗?
---
## <20><><><EFBFBD><EFBFBD><E887AC><EFBFBD>
### <20><EFBFBD><E7AE87>滨蔭
```bash
NODE_ENV=development
PORT=3001
SERVICE_NAME=aiclinical-backend-dev
LOG_LEVEL=debug
```
### <20>唳旿摨㯄<E691A8>蝵?
```bash
# <20><EFBFBD>嚗䮝ostgresql://<2F><EFBFBD><E586BD>?撖<><E69296>@<40><EFBFBD>:蝡臬藁/<2F>唳旿摨枏<E691A8>
# 蝷箔<E89DB7>嚗䮝ostgresql://aiclinical:MyPass123@rm-bp1xxxx.mysql.rds.aliyuncs.com:5432/aiclinical_dev
DATABASE_URL=postgresql://aiclinical:雿删<E99BBF><EFBFBD><E69296>@雿删<E99BBF>RDS<44><53><EFBFBD><EFBFBD><EFBFBD>:5432/aiclinical_dev
# Serverless餈墧𦻖瘙牐<E79899><E78990>?
DB_MAX_CONNECTIONS=400
MAX_INSTANCES=10
```
**<EFBFBD><EFBFBD>RDS<EFBFBD><EFBFBD>嚗?*
1. RDS<44><EFBFBD><E689B9>?<3F>?摰硺<E691B0><E7A1BA>𡑒” <20>?<3F>孵稬摰硺<E691B0>ID
2. <20>箸𧋦靽⊥<E99DBD> <20>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD>
3. 蝷箔<E89DB7>嚗䫤rm-bp1abcd1234.mysql.rds.aliyuncs.com`
### OSS摮睃<E691AE><E79D83>滨蔭
```bash
STORAGE_TYPE=oss
OSS_REGION=oss-cn-hangzhou
OSS_BUCKET=aiclinical-dev
OSS_ACCESS_KEY_ID=雿删<EFBFBD>AccessKeyId
OSS_ACCESS_KEY_SECRET=雿删<EFBFBD>AccessKeySecret
```
**<EFBFBD><EFBFBD>OSS撖<EFBFBD>𤨎嚗?*
1. 霈輸䔮<E8BCB8><EFBFBD>RAM <20>?<3F><EFBFBD> <20>?`aiclinical-oss`
2.<><E68692>敹䁅扇撖<E68987>𤨎嚗屸<E59A97><EFBFBD><E996AC><EFBFBD><EFBFBD>撱態ccessKey
3. **<EFBFBD><EFBFBD>嚗?* 撖<>𤨎<EFBFBD>芣遬蝷箔<E89DB7>甈∴<E79488>蝡见朖靽嘥<E99DBD>嚗?
### LLM API<50>滨蔭
```bash
# DeepSeek嚗<6B><EFBFBD><EFBFBD>
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DEEPSEEK_BASE_URL=https://api.deepseek.com
# <20><EFBFBD><E5B88B><EFBFBD>䔮嚗<E494AE><EFBFBD><EFBFBD>嚗?
DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# CloseAI隞<49><E99A9E><EFBFBD><EFBFBD><EFBFBD>
CLOSEAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CLOSEAI_OPENAI_BASE_URL=https://api.openai-proxy.org/v1
CLOSEAI_CLAUDE_BASE_URL=https://api.openai-proxy.org/anthropic
```
**<EFBFBD><EFBFBD><EFBFBD>滨蔭銝<EFBFBD>銝林LM API Key嚗?*
### 摰匧<E691B0><E58CA7>滨蔭
```bash
# JWT撖<54>𤨎嚗<F0A4A88E><E59A97>憿颱耨<E9A2B1><EFBFBD>嚗?
# <20><><EFBFBD>撌亙<E6928C>嚗冴ttps://www.random.org/strings/
JWT_SECRET=霂瑟㺿銝?2雿滢誑銝𢠃<E98A9D><F0A2A083><EFBFBD>蝚虫葡abcdefg123456
JWT_EXPIRES_IN=7d
# CORS<52>滨蔭
CORS_ORIGIN=*
```
**<EFBFBD>𩤃<EFBFBD> JWT_SECRET 蝏嘥笆銝滩<E98A9D>雿輻鍂暺䁅恕<E48185><EFBFBD>**
---
## <20><EFBFBD> <20><EFBFBD><E588BB>滨蔭
### 蝻枏<E89DBB><E69E8F>滨蔭嚗<E894AD><E59A97><EFBFBD><EFBFBD>雿輻鍂Redis嚗?
```bash
CACHE_TYPE=memory
QUEUE_TYPE=memory
```
**霂湔<E99C82>嚗?* <20><EFBFBD><E884B2><EFBFBD><E586BD><EFBFBD>嚗䔶蝙<E494B6><EFBFBD>摮条<E691AE>摮䁅雲憭?
**<EFBFBD>芣䔉<EFBFBD><EFBFBD><EFBFBD>edis<EFBFBD><EFBFBD><EFBFBD>嫣蛹嚗?*
```bash
CACHE_TYPE=redis
REDIS_HOST=r-bp1xxxx.redis.rds.aliyuncs.com
REDIS_PORT=6379
REDIS_PASSWORD=雿删<EFBFBD>Redis撖<EFBFBD><EFBFBD>
REDIS_DB=0
```
### Dify<66>滨蔭嚗<E894AD><EFBFBD><EFBFBD>
```bash
DIFY_API_KEY=app-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DIFY_API_URL=https://api.dify.ai/v1
```
**霂湔<E99C82>嚗?* 憒<><E68692>雿輻鍂Dify<66>𣂷<EFBFBD>RAG<41>滚𦛚嚗屸<E59A97><EFBFBD><E996AC>蝵?
### Python敺格<E695BA><E6A0BC><EFBFBD>蝵?
```bash
# 銝湔𧒄<E6B994><EFBFBD>嚗𡁜<E59A97><F0A1819C><EFBFBD>蝵穃𧑐<E7A983><F0A79190>
EXTRACTION_SERVICE_URL=http://雿删<E99BBF>銝湔𧒄<E6B994><EFBFBD>:8000
# 甇<><E79487><EFBFBD><EFBFBD>嚗𡁻<E59A97>蝵涯ython<6F>訕AE<41>𦒘蝙<F0A69298><EFBFBD>蝵穃𧑐<E7A983><F0A79190>
# EXTRACTION_SERVICE_URL=http://aiclinical-python-dev.default:8000
```
### <20><>辣銝𠹺<E98A9D><F0A0B9BA>滨蔭
```bash
UPLOAD_MAX_SIZE=104857600
```
**霂湔<E99C82>嚗?* 100MB = 104857600 bytes
---
## <20>?<3F>滨蔭璉<E894AD><E79289><EFBFBD><E4BAA4>?
### 蝚砌<E89D9A>甇伐<E79487>憭滚<E686AD>蝎䁅斐璉<E69690><E79289>?
- [ ] <20><><EFBFBD>厩㴓憓<E3B493><E68693><EFBFBD>誩歇瘛餃<E7989B><E9A483>訕AE
- [ ] <20><><EFBFBD>?雿删<E99BBF>XXX"撌脫𤜯<E884AB><EFBCB6><EFBFBD><E7AC94>?
- [ ] 瘝⊥<E7989D><E28AA5><EFBFBD>隞颱<E99A9E><EFBFBD>憿?
### 蝚砌<E89D9A>甇伐<E79487><E4BC90><EFBFBD><EFBFBD><E79289>?
- [ ] DATABASE_URL <20><EFBFBD><EFBFBD>
```
postgresql://<2F><EFBFBD><E586BD>?撖<><E69296>@<40><EFBFBD>:蝡臬藁/<2F>唳旿摨?
<20>?甇<>嚗䮝ostgresql://aiclinical:MyPass@rm-xxx.com:5432/db
<20>?<3F>躰秤嚗䮝ostgresql://aiclinical@rm-xxx.com:5432/db嚗<62>撩撠穃<E692A0><E7A983><EFBFBD><EFBFBD>
```
- [ ] 撖<><E69296>銝剜瓷<E5899C>厩鸌畾𠰴<E795BE>蝚佗<E89D9A>`@ # $ % & 蝛箸聢`嚗?
```
<20>?<3F><EFBFBD>嚗鐝yPassword123
<20>?<3F><EFBFBD>嚗鐝y@Pass#123嚗<33><E59A97><EFBFBD><EFBFBD>?嚗?
```
- [ ] JWT_SECRET 撌脖耨<E88496><EFBFBD>銝齿糓暺䁅恕<E48185><EFBFBD>
- [ ] OSS_REGION <20><EFBFBD><EFBFBD><EFBC86>蒂 `oss-` <20><EFBFBD>嚗?
```
<20>?甇<>嚗駅ss-cn-hangzhou
<20>?<3F>躰秤嚗䬙n-hangzhou
```
### 蝚砌<E89D9A>甇伐<E79487><EFBFBD>𤨎<EFBFBD><EFBFBD><E39787><EFBFBD><E689B3>?
- [ ] RDS撖<53><E69296><EFBFBD><EFBC86>虾隞亦鍂<E4BAA6>唳旿摨枏恥<E69E8F>瑞垢瘚贝<E7989A>餈墧𦻖嚗?
- [ ] OSS AccessKey<65><EFBFBD><EFBFBD>銁RAM<41><EFBFBD><E689B9>霈歹<E99C88>
- [ ] LLM API Key<65><EFBFBD><EFBFBD>虾隞亦鍂curl瘚贝<E7989A>嚗?
**瘚贝<E7989A>LLM API Key嚗?*
```bash
curl https://api.deepseek.com/v1/models \
-H "Authorization: Bearer sk-雿删<E99BBF><EFBFBD>𤨎"
```
---
## <20><> <20>滨蔭蝷箔<E89DB7><EFBFBD><E59A97><EFBFBD><EFBFBD>嚗?
```bash
NODE_ENV=development
PORT=3001
SERVICE_NAME=aiclinical-backend-dev
LOG_LEVEL=debug
DATABASE_URL=postgresql://aiclinical:MySecurePass123@rm-bp1abc123.mysql.rds.aliyuncs.com:5432/aiclinical_dev
DB_MAX_CONNECTIONS=400
MAX_INSTANCES=10
STORAGE_TYPE=oss
OSS_REGION=oss-cn-hangzhou
OSS_BUCKET=aiclinical-dev
OSS_ACCESS_KEY_ID=LTAI5t12345678901234
OSS_ACCESS_KEY_SECRET=abcdefghijk1234567890123456789012
CACHE_TYPE=memory
QUEUE_TYPE=memory
DEEPSEEK_API_KEY=sk-1234567890abcdef1234567890abcdef
DEEPSEEK_BASE_URL=https://api.deepseek.com
DASHSCOPE_API_KEY=sk-abcdef1234567890abcdef1234567890
JWT_SECRET=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0
JWT_EXPIRES_IN=7d
CORS_ORIGIN=*
EXTRACTION_SERVICE_URL=http://123.456.789.0:8000
UPLOAD_MAX_SIZE=104857600
```
---
## <20><> 摰匧<E691B0><E58CA7><EFBFBD>雿喳<E99BBF>頝?
### 撖<>𤨎蝞∠<E89D9E>
1. **銝滩<E98A9D><EFBFBD><E692A0><EFBFBD><EFBFBD>鈭文<E988AD>Git**
- <20>?銝滩<E98A9D><E6BBA9>𥕦遣 `.env.production` <20><>
- <20>?銝滩<E98A9D><E6BBA9>其誨<E585B6><E8AAA8>葉蝖祉<E89D96><E7A589><EFBFBD><EFBFBD><EFBFBD>?
- <20>?<3F>芸銁SAE<41><EFBFBD><E689B9><EFBFBD>蝵?
2. **摰𡁏<E691B0><F0A1818F>湔揢撖<E68FA2>𤨎**
- 瘥?-6銝芣<E98A9D><E88AA3>湔揢銝<E68FA2>甈?
- <20>𤑳緵瘜<E7B7B5>蠧蝡见朖<E8A781>湔揢
3. **雿輻鍂撖<E98D82><E69296>蝞∠<E89D9E><E288A0>?*
- <20><EFBFBD>嚗?Password<72><64>astPass<73><73>itwarden
- 靽嘥<E99DBD><E598A5><EFBFBD><EFBFBD><EFBFBD><E58CA7><EFBFBD><E4BA99>滨蔭靽⊥<E99DBD>
### <20><EFBFBD><E887AC>𠉛氖
```
<EFBFBD><EFBFBD>𤑳㴓憓<EFBFBD><EFBFBD>
- Bucket: aiclinical-dev
- Database: aiclinical_dev
- JWT_SECRET: <20><EFBFBD><E7A589><EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD>煺漣<EFBFBD><EFBFBD>嚗?
- Bucket: aiclinical-prod
- Database: aiclinical_prod
- JWT_SECRET: 銝滚<E98A9D><E6BB9A><EFBFBD><EFBFBD><EFBFBD>?
```
**瘞貉<E7989E>銝滩<E98A9D><E6BBA9><EFBFBD>鈭抒㴓憓<E3B493><EFBFBD><EFBFBD><E585B8>𤑳㴓憓<E3B493><E68693><EFBFBD>𤨎嚗?*
---
## <20><> 撣貉<E692A3><E8B289><EFBFBD>
### Q1: 敹䁅扇鈭<E68987>DS撖<53><E69296><EFBFBD>𦒘<EFBFBD><F0A69298><EFBFBD>
**閫<><E996AB><EFBFBD><EFBFBD>嚗?*
1. RDS<44><EFBFBD><E689B9>?<3F>?韐血噡蝞∠<E89D9E>
2. <20><EFBFBD><E69B89><EFBFBD> `aiclinical`
3. <20>孵稬<E5ADB5><EFBFBD>蝵桀<E89DB5><E6A180><EFBFBD><EFBFBD>?
4. 霈曄蔭<E69B84><EFBFBD><E595A3>?
5. <20>湔鰵SAE<41><EFBFBD><E887AC><EFBFBD>銝剔<E98A9D> `DATABASE_URL`
### Q2: OSS AccessKey瘜<79>蠧鈭<E8A0A7><E988AD>𦒘<EFBFBD><F0A69298><EFBFBD>
**閫<><E996AB><EFBFBD><EFBFBD>嚗?*
1. RAM<41><EFBFBD><E689B9>?<3F>?<3F><EFBFBD> <20>?`aiclinical-oss`
2. 蝳<><EFBFBD><EFBFBD><E7A18B><EFBFBD><E69697><EFBFBD>AccessKey
3. <20>𥕦遣<F0A595A6><EFBFBD>AccessKey
4. <20>湔鰵SAE<41><EFBFBD><E887AC><EFBFBD>
### Q3: 憒<><E68692>撉諹<E69289><E8ABB9><EFBFBD><E887AC><EFBFBD><E3979B>滨蔭甇<E894AD>嚗?
**閫<><E996AB><EFBFBD><EFBFBD>嚗?*
1. <20>函蔡摨𠉛鍂<F0A0899B>𠬍<EFBFBD><F0A0AC8D><EFBFBD>摰墧𧒄<E5A2A7><EFBFBD>
2. <20><EFBFBD>隞乩<E99A9E><E4B9A9><EFBFBD>銵函內<E587BD>滨蔭甇<E894AD>嚗?
```
<20>?[Config] Environment validation passed
<20>?[Database] <20>唳旿摨栞<E691A8><E6A09E><EFBFBD><E4BAA4>?
<20>𣑐 [Storage] 雿輻鍂<E8BCBB><EFBFBD>鈭?OSS 摮睃<E691AE>
```
### Q4: DATABASE_URL銝剖<E98A9D><E58996><EFBFBD><EFBFBD><EFBFBD>怎鸌畾𠰴<E795BE>蝚行<E89D9A>𦒘<EFBFBD><F0A69298><EFBFBD>
**閫<><E996AB><EFBFBD><EFBFBD>嚗?*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鉄 `@ # $ % & 蝛箸聢` 蝑厩鸌畾𠰴<E795BE>蝚佗<E89D9A><E4BD97><EFBFBD><EFBFBD>RL蝻𣇉<E89DBB>嚗?
```
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>My@Pass#123
蝻𣇉<EFBFBD><EFBFBD>𠬍<EFBFBD>My%40Pass%23123
摰峕㟲URL嚗?
postgresql://aiclinical:My%40Pass%23123@rm-xxx.com:5432/aiclinical_dev
```
**蝻𣇉<E89DBB>撖寧<E69296>銵剁<E98AB5>**
```
@ <20>?%40
# <20>?%23
$ <20>?%24
% <20>?%25
& <20>?%26
蝛箸聢 <20>?%20
```
**<2A><EFBFBD>嚗?* <20>齿鰵霈曄蔭銝滚<E98A9D><E6BB9A>怎鸌畾𠰴<E795BE>蝚衣<E89D9A><EFBFBD><E69296><EFBFBD><EFBFBD><E6B8A1>?
---
## <20><> <20>滨蔭摰峕<E691B0>撉諹<E69289>
### <20>芸𢆡撉諹<E69289>
<EFBFBD>函蔡<EFBFBD>𠬍<EFBFBD>摨𠉛鍂隡朞䌊<EFBFBD><EFBFBD><EFBFBD>㴓憓<EFBFBD><EFBFBD><EFBFBD>𧶏<EFBFBD>
```typescript
// backend/src/config/env.ts
// 隡朞䌊<E69C9E><EFBFBD><E586BD><EFBFBD><E4BAA4><EFBFBD>憛恍★
```
**<2A><EFBFBD>颲枏枂蝷箔<E89DB7>嚗?*
```
<EFBFBD>?[Config] Environment validation passed
[Config] Application configuration:
- Environment: development
- Port: 3001
- Storage: oss
- Cache: memory
- Queue: memory
- Log Level: debug
```
### <20>见𢆡撉諹<E69289>
```bash
# 霈輸䔮<E8BCB8>亙熒璉<E78692><E79289>交𦻖<E4BAA4>?
curl http://雿删<E99BBF>SAE<41><EFBFBD>:3001/health
# 憸<><E686B8>餈𥪜<E9A488>
{
"status": "ok",
"database": "connected",
"storage": "oss",
"cache": "memory",
"timestamp": "2025-12-11T10:30:00.000Z"
}
```
---
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦嚗?* v1.0
**<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD><EFBFBD>** 2025-12-11
**蝏湔擪<E6B994><E693AA><EFBFBD>** <20><><EFBFBD>舀沲<E88880><E6B2B2><EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>﹝嚗?* [SAE<EFBFBD>函蔡摰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](../05-<2D>函蔡<E587BD><E894A1>﹝/02-SAE<41>函蔡摰<E894A1><E691B0><EFBFBD><EFBFBD><EFBFBD>(鈭批<E988AD>蝏讐<E89D8F><E8AE90>?.md)