Files
AIclinicalresearch/docs/05-部署文档/11-Node.js后端-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

300 lines
7.5 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.
# Node.js <20>𡒊垢 - SAE<41>函蔡<E587BD>滨蔭皜<E894AD><E79A9C>
> **<2A>𥕦遣<F0A595A6>園𡢿**嚗?025-12-24
> **<2A>函蔡<E587BD><EFBFBD>**嚗𡁏<E59A97>霂閧㴓憓<E3B493><E68693>Test嚗?
> **摨𠉛鍂<F0A0899B>滨妍**嚗䭰odejs-backend-test
> **<2A><EFBFBD><EFBFBD>聢**嚗?<3F>?GB
---
## <20><> <20><><EFBFBD><EFBFBD><EFBFBD>撩JWT撖<54>𤨎
**<EFBFBD>𩤃<EFBFBD> <20><EFBFBD>嚗朞窈憒亙<E68692>靽萘恣甇文<E79487><E69687><EFBFBD>銝滩<E98A9D><EFBFBD>蠧嚗?*
```bash
JWT_SECRET=146c2fd064a69aa026496ee60e20483d07e951eae8323a501126469583433415
```
**撖<>𤨎<EFBFBD><EFBFBD>?*嚗?
- <20>?64銝芸<E98A9D><E88AB8><EFBFBD><E5899B><EFBFBD>蝚佗<E89D9A>256雿滚撩摨佗<E691A8>
- <20>?摰<><E691B0><EFBFBD>𤩺㦤<F0A4A9BA><E3A6A4><EFBFBD>
- <20>?蝚血<E89D9A><E8A180>煺漣<E785BA><EFBFBD>摰匧<E691B0><E58CA7><EFBFBD><EFBFBD>
---
## <20><> 摰峕㟲<E5B395><EFBFBD><E887AC><EFBFBD><E3979B>滨蔭
### <20><EFBFBD>1嚗𡁻<E59A97>𣂷葵<F0A382B7>滨蔭嚗𠄎AE<41><EFBFBD><E689B9><EFBFBD>
<EFBFBD>沒AE<EFBFBD><EFBFBD><EFBFBD>?<3F>?摨𠉛鍂<F0A0899B>滨蔭 <20>?<3F><EFBFBD><E887AC><EFBFBD>銝哨<E98A9D><E593A8>𣂷葵瘛餃<E7989B>隞乩<E99A9E><E4B9A9>滨蔭嚗?
| <20><EFBFBD><E3979B>?| <20><EFBFBD><E3979B>?| 霂湔<E99C82> |
|--------|--------|------|
| `DATABASE_URL` | `postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research?connection_limit=18&pool_timeout=10` | RDS<44>唳旿摨栞<E691A8><E6A09E><EFBFBD>瘜冽<E7989C>@蝻𣇉<EFBFBD>銝?40嚗?|
| `JWT_SECRET` | `146c2fd064a69aa026496ee60e20483d07e951eae8323a501126469583433415` | <20><> <20><EFBFBD><E59581><EFBFBD>撘箏<E69298><E7AE8F>?|
| `JWT_EXPIRES_IN` | `7d` | JWT餈<54><E9A488><EFBFBD>園𡢿 |
| `DEEPSEEK_API_KEY` | `sk-7f8cc37a79fa4799860b38fc7ba2e150` | DeepSeek API撖<49>𤨎 |
| `DASHSCOPE_API_KEY` | `sk-75b4ff29a14a49e79667a331034f3298` | <20><EFBFBD><E8BCB8><EFBFBD>䔮API撖<49>𤨎 |
| `CLOSEAI_API_KEY` | `sk-cu0ienbXYGGx2jc7BqP6ogtSWmP6fk918qV3RUdtGC3Ed1po` | CloseAI隞<49><E99A9E><EFBFBD>𤨎 |
| `CLOSEAI_OPENAI_BASE_URL` | `https://api.openai-proxy.org/v1` | OpenAI隞<49><E99A9E><EFBFBD><EFBFBD> |
| `CLOSEAI_CLAUDE_BASE_URL` | `https://api.openai-proxy.org/anthropic` | Claude隞<65><E99A9E><EFBFBD><EFBFBD> |
| `DIFY_API_URL` | `http://localhost/v1` | Dify<66>滚𦛚<E6BB9A><EFBFBD><EFBFBD>𧊋<EFBFBD>函蔡嚗?|
| `DIFY_API_KEY` | `dataset-mfvdiKvQ2l3NvxWm7RoYMN3c` | Dify API撖<49>𤨎 |
| `PORT` | `3001` | <20>滚𦛚蝡臬藁 |
| `NODE_ENV` | `production` | 餈鞱<E9A488><E99EB1><EFBFBD> |
| `QUEUE_TYPE` | `pgboss` | <20><EFBFBD>蝐餃<E89D90> |
| `CACHE_TYPE` | `postgres` | 蝻枏<E89DBB>蝐餃<E89D90> |
| `OSS_REGION` | `oss-cn-beijing` | OSS<53><EFBFBD> |
| `OSS_BUCKET` | `ai-clinical-research` | OSS Bucket<65>滨妍 |
| `OSS_ACCESS_KEY_ID` | `LTAI5tB2Dt3NdvBL3G7nYGv7` | OSS霈輸䔮撖<E494AE>𤨎ID |
| `OSS_ACCESS_KEY_SECRET` | `1iSN9k39RkApP93QjUhC1DcPIeMG4V` | OSS霈輸䔮撖<E494AE>𤨎Secret |
| `OSS_ENDPOINT` | `oss-cn-beijing-internal.aliyuncs.com` | OSS<53><53><EFBFBD><EFBFBD><EFBFBD> |
| `PYTHON_SERVICE_URL` | `http://172.17.173.66:8000` | Python敺格<E695BA><E6A0BC>𧑐<E288AA><F0A79190> |
| `LOG_LEVEL` | `info` | <20><EFBFBD>蝥批<E89DA5> |
---
### <20><EFBFBD>2嚗𡁏鸌<F0A1818F>誩紡<E8AAA9><EFBFBD><E4BC90><EFBFBD>嚗?
<EFBFBD>誑銝见<EFBFBD>摰孵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>沒AE<EFBFBD><EFBFBD><EFBFBD>唬蝙<EFBFBD>?<3F><EFBFBD>撖澆<E69296>"<22><EFBFBD>嚗?
```env
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research?connection_limit=18&pool_timeout=10
JWT_SECRET=146c2fd064a69aa026496ee60e20483d07e951eae8323a501126469583433415
JWT_EXPIRES_IN=7d
DEEPSEEK_API_KEY=sk-7f8cc37a79fa4799860b38fc7ba2e150
DASHSCOPE_API_KEY=sk-75b4ff29a14a49e79667a331034f3298
CLOSEAI_API_KEY=sk-cu0ienbXYGGx2jc7BqP6ogtSWmP6fk918qV3RUdtGC3Ed1po
CLOSEAI_OPENAI_BASE_URL=https://api.openai-proxy.org/v1
CLOSEAI_CLAUDE_BASE_URL=https://api.openai-proxy.org/anthropic
DIFY_API_URL=http://localhost/v1
DIFY_API_KEY=dataset-mfvdiKvQ2l3NvxWm7RoYMN3c
PORT=3001
NODE_ENV=production
QUEUE_TYPE=pgboss
CACHE_TYPE=postgres
OSS_REGION=oss-cn-beijing
OSS_BUCKET=ai-clinical-research
OSS_ACCESS_KEY_ID=LTAI5tB2Dt3NdvBL3G7nYGv7
OSS_ACCESS_KEY_SECRET=1iSN9k39RkApP93QjUhC1DcPIeMG4V
OSS_ENDPOINT=oss-cn-beijing-internal.aliyuncs.com
PYTHON_SERVICE_URL=http://172.17.173.66:8000
LOG_LEVEL=info
```
---
## <20><> SAE摨𠉛鍂<F0A0899B>滨蔭<E6BBA8><E894AD>
### <20>箸𧋦靽⊥<E99DBD>
```yaml
摨𠉛鍂<EFBFBD>滨妍: nodejs-backend-test
<EFBFBD>函蔡<EFBFBD><EFBFBD>: 摰孵膥<EFBFBD>𨅯<EFBFBD>
<EFBFBD><EFBFBD>蝛粹𡢿: cn-beijing:test-airesearch
<EFBFBD><EFBFBD>: <EFBFBD>𤾸<EFBFBD>2嚗<EFBFBD><EFBFBD>鈭穿<EFBFBD>
```
### <20>𨅯<EFBFBD><F0A885AF>滨蔭
```yaml
<EFBFBD>𨅯<EFBFBD>蝐餃<EFBFBD>: <EFBFBD><EFBFBD><EFBFBD>𨅯<EFBFBD>
<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>: crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.0
<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>𧋦: v1.0
```
### ACR<43>𨅯<EFBFBD>隞枏<E99A9E>霈方<E99C88>
```yaml
Registry<EFBFBD><EFBFBD>: crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com
<EFBFBD><EFBFBD><EFBFBD>? gofeng117@163.com
<EFBFBD><EFBFBD>: fengzhibo117
```
### 韏<><E99F8F><EFBFBD>滨蔭
```yaml
CPU: 1<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD>: 2GB
摰硺<EFBFBD><EFBFBD>? 1銝迎<E98A9D><E8BF8E><EFBFBD>嚗?
```
### 蝵𤑳<E89DB5><F0A491B3>滨蔭
```yaml
VPC ID: vpc-2ze055cptkew9c38w4r06
摰匧<EFBFBD><EFBFBD>D: sg-2zedk6fi8sgmmcwdu7tu
```
### 蝡臬藁<E887AC>滨蔭
```yaml
摰孵膥蝡臬藁: 3001
<EFBFBD>讛悅: TCP
```
### <20>亙熒璉<E78692><E79289>仿<EFBFBD>蝵?
```yaml
<EFBFBD><EFBFBD>亦掩<EFBFBD>? HTTP
<EFBFBD><EFBFBD>亥楝敺? /health
<EFBFBD><EFBFBD>亦垢<EFBFBD>? 3001
<EFBFBD><EFBFBD>撱嗉<EFBFBD>: 30蝘?
<EFBFBD><EFBFBD>仿𡢿<EFBFBD>? 10蝘?
<EFBFBD>𧒄<EFBFBD>園𡢿: 3蝘?
銝滚<EFBFBD>摨琿<EFBFBD><EFBFBD>? 3甈?
<EFBFBD>亙熒<EFBFBD><EFBFBD><EFBFBD>? 2甈?
```
### <20>臬𢆡<E887AC>賭誘
```bash
node dist/server.js
```
**霂湔<E99C82>**嚗?
- <20>?銝漤<E98A9D><EFBFBD><E996AC>銵?`prisma migrate deploy`<EFBFBD><EFBFBD>桀歇<EFBFBD><EFBFBD>pg_dump撖澆<EFBFBD>嚗?
- <20>?銝漤<E98A9D><EFBFBD><E996AC>銵?`prisma generate`<EFBFBD><EFBFBD><EFBFBD>𤩺<EFBFBD>撱箸𧒄撌脩<EFBFBD><EFBFBD><EFBFBD>
- <20>?<3F>湔𦻖<E6B994>臬𢆡蝻𤥁<E89DBB><F0A4A581>𡒊<EFBFBD><F0A1928A>滚𦛚<E6BB9A>喳虾
---
## <20>?<3F>函蔡<E587BD>𡡞<EFBFBD><EFBFBD><E99C82><EFBFBD>?
<EFBFBD>函蔡<EFBFBD>𣂼<EFBFBD><EFBFBD>𠬍<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>誑銝钅★<EFBFBD><EFBFBD>
### 1. 摨𠉛鍂<F0A0899B><EFBFBD><E59786><EFBFBD><EFBFBD>?
- [ ] SAE<41><EFBFBD><E689B9>唳遬蝷箏<E89DB7><E7AE8F>函𠶖<E587BD><F0A0B696>蛹"餈鞱<E9A488>銝?
- [ ] <20>亙熒璉<E78692><E79289>交遬蝷箔蛹"<22><EFBFBD>"
- [ ] <20>𣳇<EFBFBD><F0A3B387><EFBFBD>撏拇<E6928F>霈啣<E99C88>
### 2. <20><EFBFBD><EFBFBD><E79289>?
<EFBFBD><EFBFBD>摰墧𧒄<EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂亦<EFBFBD><EFBFBD>啁掩隡潔誑銝贝<EFBFBD><EFBFBD><EFBFBD>
```
============================================================
<EFBFBD><EFBFBD> AI銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱 - <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A>典鍳<E585B8><EFBFBD><E586BD><EFBFBD><EFBFBD>
============================================================
<EFBFBD><EFBFBD> <20>滚𦛚<E6BB9A><EFBFBD>: http://0.0.0.0:3001
<EFBFBD><EFBFBD> <20>亙熒璉<E78692><E79289>? http://0.0.0.0:3001/health
<EFBFBD>摱 API<50>亙藁: http://0.0.0.0:3001/api/v1
<EFBFBD><EFBFBD> 餈鞱<E9A488><E99EB1><EFBFBD>: production
============================================================
```
### 3. <20>亙熒璉<E78692><E79289><EFBFBD>霂?
<EFBFBD><EFBFBD>摨𠉛鍂<EFBFBD><EFBFBD><EFBFBD>蝵穃𧑐<EFBFBD><EFBFBD><EFBFBD>𠬍<EFBFBD><EFBFBD><EFBFBD>嚗?
```bash
curl http://172.17.x.x:3001/health
```
<EFBFBD><EFBFBD><EFBFBD>餈𥪜<EFBFBD>嚗?
```json
{
"status": "ok",
"timestamp": "2025-12-24T12:00:00.000Z",
"database": "connected",
"uptime": 123
}
```
### 4. <20>唳旿摨栞<E691A8><E6A09E><EFBFBD>霂?
<EFBFBD><EFBFBD>交𠯫敹𦯀葉<EFBFBD>臬炏<EFBFBD>㗇㺭<EFBFBD><EFBFBD>餈墧𦻖<EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䭾𥁒<EFBFBD>嗘縑<EFBFBD><EFBFBD>?
### 5. 霈啣<E99C88><E595A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- [ ] 霈啣<E99C88>Node.js<6A>𡒊垢<F0A1928A><E59EA2><EFBFBD>蝵穃𧑐<E7A983><F0A79190><EFBFBD>聢撘𧶏<E69298>`http://172.17.x.x:3001`嚗?
- [ ] <20>湔鰵<E6B994><EFBFBD>蝵脫<E89DB5><EFBFBD>
---
## <20><20>𡒊賒甇仿炊
Node.js<6A>𡒊垢<F0A1928A>函蔡<E587BD>𣂼<EFBFBD><F0A382BC>𠬍<EFBFBD>
1. **<EFBFBD>湔鰵<EFBFBD>滨垢Nginx<EFBFBD>滨蔭**
-<>ode.js<6A>𡒊垢<F0A1928A><E59EA2><EFBFBD>蝵穃𧑐<E7A983><F0A79190><EFBFBD>滨蔭<E6BBA8><EFBFBD>蝡烤ginx
- <20><EFBFBD><E887AC><EFBFBD>嚗䫤VITE_API_BASE_URL=http://172.17.x.x:3001`
2. **<EFBFBD>函蔡<EFBFBD>滨垢Nginx**
- 雿輻鍂Node.js<6A>𡒊垢<F0A1928A><E59EA2><EFBFBD>蝵穃𧑐<E7A983><F0A79190>
- 摰峕<E691B0><E5B395>滨垢摨𠉛鍂<F0A0899B><E98D82>AE<41>函蔡
3. **<EFBFBD>券曎頝舀<EFBFBD>霂?*
- <20>滨垢 <20>?Node.js<6A>𡒊垢 <20>?Python敺格<E695BA><E6A0BC>?<3F>?RDS
- 撉諹<E69289>摰峕㟲<E5B395><E39FB2><EFBFBD><EFBFBD><EFBFBD>蝔?
---
## <20><> <20><><EFBFBD><EFBFBD>埝䰻
### <20><EFBFBD>1嚗𡁜<E59A97><F0A1819C><EFBFBD>瘜訫鍳<E8A8AB>?
**<2A><>𠶖**嚗𡁜<E59A97>摨瑟<E691A8><E7919F><EFBFBD><E4B9A9>游仃韐伐<E99F90>摨𠉛鍂<F0A0899B>曄內"撘<>虜"
**<EFBFBD>埝䰻甇仿炊**嚗?
1. <20><EFBFBD>"摰墧𧒄<E5A2A7><EFBFBD>"嚗峕<E59A97><E5B395>亙鍳<E4BA99><EFBFBD>霂?
2. 撣貉<E692A3><E8B289><EFBFBD>嚗?
- DATABASE_URL<52><EFBFBD><E6BE86>躰秤嚗㇀<E59A97><EFBFBD><E88AB0><EFBFBD><EFBFBD>
- 蝡臬藁<E887AC>滨蔭銝滚龪<E6BB9A>?
- <20><EFBFBD><E887AC><EFBFBD>蝻箏仃
### <20><EFBFBD>2嚗𡁏㺭<F0A1818F><EFBFBD>餈墧𦻖憭梯揖
**<2A><>𠶖**嚗𡁏𠯫敹埈遬蝷箸㺭<E7AEB8><EFBFBD>餈墧𦻖頞<F0A6BB96>𧒄
**<EFBFBD>埝䰻甇仿炊**嚗?
1.<><E79289>充DS<44><EFBFBD><E8B3A2>閙糓<E99699><EFBFBD><E8A180>侮PC蝵烐挾嚗?72.17.0.0/16嚗?
2.<><E79289>主ATABASE_URL銝剔<E98A9D><EFBFBD><E69296><EFBFBD>臬炏甇<E7828F>蝻𣇉<E89DBB>嚗㇀蝻𣇉<E89DBB>銝?40嚗?
3. <20>沒AE<41><45>ebshell銝剜<E98A9D>霂𤏪<E99C82>
```bash
curl -v telnet://pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432
```
### <20><EFBFBD>3嚗𡁜<E59A97>摨瑟<E691A8><E7919F>亥楝敺?04
**<2A><>𠶖**嚗𡁜<E59A97>摨瑟<E691A8><E7919F>交遬蝷慵TTP 404<30>躰秤
**閫<><E996AB><EFBFBD><EFBFBD>**嚗?
- 蝖株恕<E6A0AA>亙熒璉<E78692><E79289>亥楝敺<E6A59D>蛹 `/health`嚗<><E59A97><EFBFBD>?`/api/health`嚗?
- 蝖株恕<E6A0AA>亙熒璉<E78692><E79289>亦垢<E4BAA6><E59EA2>蛹 `3001`
---
## <20><> 摰匧<E691B0>瘜冽<E7989C>鈭钅★
1. **JWT撖<54>𤨎靽脲擪**嚗?
- <20>?撌脩<E6928C><E884A9>𣂼撩<F0A382BC>𤩺㦤撖<E3A6A4>𤨎
- <20>𩤃<EFBFBD> 銝滩<E98A9D><EFBFBD><E692A0><EFBFBD><EFBFBD>鈭文<E988AD>Git
- <20>𩤃<EFBFBD> 銝滩<E98A9D><E6BBA9>冽𠯫敹𦯀葉<F0A6AF80>枏㫲撖<E3ABB2>𤨎
2. **<EFBFBD>唳旿摨枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*嚗?
- <20>?雿輻鍂<E8BCBB><EFBFBD><E887AC><EFBFBD>蝞∠<E89D9E>
- <20>𩤃<EFBFBD> 瘜冽<E7989C>URL蝻𣇉<E89DBB>嚗㇀蝻𣇉<E89DBB>銝?40嚗?
3. **API撖<49>𤨎靽脲擪**嚗?
- <20>?<3F><><EFBFBD>𧜵LM API撖<49>𤨎撌脤<E6928C>蝵桐蛹<E6A190><EFBFBD><E887AC><EFBFBD>
- <20>𩤃<EFBFBD> 摰𡁏<E691B0>頧格揢撖<E68FA2>𤨎
---
**<EFBFBD><EFBFBD><EFBFBD>𥕦遣<EFBFBD>園𡢿**嚗?025-12-24
**蝏湔擪鈭箏<E988AD>**嚗朞<E59A97>蝏游𣪧<E6B8B8>?