Files
AIclinicalresearch/docs/05-部署文档/08-PostgreSQL数据库部署操作手册.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

1201 lines
26 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.
# PostgreSQL 15 <20>唳旿摨㯄<E691A8>蝵脫<E89DB5>雿𨀣<E99BBF><F0A880A3>?
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦**: v1.0
**<EFBFBD>𥕦遣<EFBFBD>園𡢿**: 2025-12-24
**<EFBFBD><EFBFBD><EFBFBD>箸艶**: <20>砍𧑐PostgreSQL<51>唳旿摨栞<E691A8>蝘餃<E89D98><E9A483><EFBFBD>鈭駵DS
**<EFBFBD>唳旿摨梶<EFBFBD><EFBFBD>?*: PostgreSQL 15
**<EFBFBD>函蔡<EFBFBD><EFBFBD>**: pg_dump<6D><EFBFBD>撖澆<E69296>
**憸<><EFBFBD>園𡢿**: 30<33><30><EFBFBD>
---
## <20><> <20><EFBFBD>
1. [<EFBFBD>函蔡璁<EFBFBD>](#1-<2D>函蔡璁<E894A1>)
2. [<5B>滨蔭<E6BBA8>∩辣璉<E8BEA3><E79289>包(#2-<2D>滨蔭<E6BBA8>∩辣璉<E8BEA3><E79289>?
3. [<EFBFBD>函蔡甇仿炊](#3-<2D>函蔡甇仿炊)
4. [撉諹<EFBFBD>瘚贝<EFBFBD>](#4-撉諹<E69289>瘚贝<E7989A>)
5. [摰匧<EFBFBD><EFBFBD>惩𤐄](#5-摰匧<E691B0><E58CA7>惩𤐄)
6. [撣貉<EFBFBD><EFBFBD><EFBFBD>](#6-撣貉<E692A3><E8B289><EFBFBD>)
7. [<EFBFBD><EFBFBD><EFBFBD><EFBFBD>](#7-<2D><EFBFBD><E5A2A7><EFBFBD>)
8. [<5B><>雿喳<E99BBF>頝琶(#8-<2D><>雿喳<E99BBF>頝?
---
## 1. <20>函蔡璁<E894A1>
### 1.1 <20>函蔡<E587BD><EFBFBD>
```yaml
<EFBFBD><EFBFBD>: <EFBFBD>𧋦<EFBFBD>蚤ocker PostgreSQL<51>唳旿摨枏<E691A8><E69E8F><EFBFBD>蝘餃<E89D98><E9A483><EFBFBD>鈭駵DS PostgreSQL 15
<EFBFBD><EFBFBD>: pg_dump<EFBFBD><EFBFBD>撖澆枂 + psql撖澆<E69296>
隡睃飵:
<EFBFBD>?100%摰峕㟲嚗<E39FB2><E59A97><EFBFBD>?<3F>唳旿+蝝<E89D9D>+憭㚚睸嚗?
<EFBFBD>?銝<>甈⊥<E79488><EFBFBD><E689B9>?
<EFBFBD>?<3F><EFBFBD>憭齿<E686AD>銵?
<EFBFBD>?蝞<><E89D9E>訫虾<E8A8AB>?
<EFBFBD>?<3F><>鉄pg-boss銵剁<E98AB5>銝漤<E98A9D><EFBFBD><E996AC><EFBFBD><EFBFBD><E7A08D><EFBFBD><EFBFBD>
```
### 1.2 <20>函蔡<E587BD><EFBFBD>
```
<EFBFBD>砍𧑐<EFBFBD><EFBFBD> <20><EFBFBD>鈭駵DS
<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><EFBFBD><EFBFBD>? <20>𢞖<EFBFBD><F0A29E96><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>? <20>? <20>? <20>?
<EFBFBD>? Docker <20>? pg_dump撖澆枂 <20>? RDS PostgreSQL <20>?
<EFBFBD>? PostgreSQL 15 <20>?<3F><><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>><3E>? 15.14 <20>?
<EFBFBD>? <20>? psql撖澆<E69296> <20>? <20>?
<EFBFBD>? 26 MB<4D>唳旿 <20>? <20>? VPC<50><43><EFBFBD> <20>?
<EFBFBD>? 10銝杵chema <20>? <20>? 2<>?GB <20>?
<EFBFBD>? 34銝芾” <20>? <20>? 50GB摮睃<E691AE> <20>?
<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><EFBFBD><EFBFBD>? <20><EFBFBD><E5A999><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>?
```
### 1.3 <20>唳旿摨㮖縑<E3AE96>?
#### <20>砍𧑐<E7A08D>唳旿摨?
```yaml
摰孵膥<EFBFBD>滨妍: ai-clinical-postgres
<EFBFBD>𨅯<EFBFBD>: postgres:15-alpine
<EFBFBD>唳旿摨枏<EFBFBD>: ai_clinical_research
<EFBFBD><EFBFBD><EFBFBD>? postgres
<EFBFBD><EFBFBD>: postgres
蝡臬藁: 5432
<EFBFBD>唳旿憭批<EFBFBD>: 蝥?6 MB
```
#### RDS<44>唳旿摨?
```yaml
摰硺<EFBFBD>ID: pgm-2zex1m2y3r23hdn5
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432
<EFBFBD>唳旿摨枏<EFBFBD>: ai_clinical_research
<EFBFBD><EFBFBD><EFBFBD>? airesearch
<EFBFBD><EFBFBD>: Xibahe@fengzhibo117
<EFBFBD><EFBFBD>𧋦: PostgreSQL 15.14
<EFBFBD>: 2<EFBFBD>?GB
摮睃<EFBFBD>: 50GB SSD
<EFBFBD><EFBFBD>: <EFBFBD>𤾸<EFBFBD>2嚗<EFBFBD><EFBFBD>鈭穿<EFBFBD>
VPC: vpc-2ze055cptkew9c38w4r06 (172.17.0.0/16)
<EFBFBD><EFBFBD><EFBFBD>? 172.17.0.0/16嚗ĀPC蝵烐挾嚗?
<EFBFBD>嗅躹: Asia/Shanghai
```
---
## 2. <20>滨蔭<E6BBA8>∩辣璉<E8BEA3><E79289>?
### 2.1 <20>砍𧑐<E7A08D><EFBFBD><EFBFBD><E79289>?
```powershell
# 1. 璉<><E79289>主ocker<65>臬炏餈鞱<E9A488>
docker --version
# 2. 璉<><E79289>仙ostgreSQL摰孵膥<E5ADB5><EFBFBD>?
docker ps --filter "name=ai-clinical-postgres"
# 憸<><E686B8>颲枏枂: 摰孵膥<E5ADB5><EFBFBD><E59786>蛹 Up嚗<70><E59A97>摨瑞𠶖<E7919E><F0A0B696>蛹 healthy
# 3. 撉諹<E69289><E8ABB9>砍𧑐<E7A08D>唳旿摨栞<E691A8><E6A09E>?
docker exec ai-clinical-postgres psql -U postgres -d ai_clinical_research -c "SELECT version();"
# 憸<><E686B8>颲枏枂: PostgreSQL 15.x
# 4. 璉<><E79289>交㺭<E4BAA4><EFBFBD>憭批<E686AD>
docker exec ai-clinical-postgres psql -U postgres -d ai_clinical_research -c "SELECT pg_size_pretty(pg_database_size('ai_clinical_research'));"
# 憸<><E686B8>颲枏枂: 蝥?6 MB
```
### 2.2 RDS<44><EFBFBD><EFBFBD><E79289>?
```yaml
<EFBFBD>𡢅<EFBFBD> RDS摰硺<E691B0>撌脣<E6928C>撱箔<E692B1>餈鞱<E9A488>銝?
<EFBFBD>𡢅<EFBFBD> VPC<50>䔶漱<E494B6>㦤撌脤<E6928C>蝵?
<EFBFBD>𡢅<EFBFBD> <20><EFBFBD><E8B3A2>訫歇<E8A8AB>滨蔭: 172.17.0.0/16
<EFBFBD>𡢅<EFBFBD> <20>嗅躹撌脰挽蝵? Asia/Shanghai
<EFBFBD>𡢅<EFBFBD> <20>唳旿摨梶鍂<E6A2B6>瑕歇<E79195>𥕦遣: airesearch
<EFBFBD>𡢅<EFBFBD> <20>唳旿摨枏<E691A8><E69E8F><EFBFBD>歇霈啣<E99C88>: Xibahe@fengzhibo117
```
### 2.3 蝵𤑳<E89DB5>餈墧𦻖璉<F0A6BB96><E79289>?
```yaml
<EFBFBD><EFBFBD>A: <EFBFBD><EFBFBD>CS頝單踎<EFBFBD>?
- <EFBFBD><EFBFBD><EFBFBD>ECS<EFBFBD><EFBFBD>IP
- <EFBFBD><EFBFBD><EFBFBD>SSH撖<EFBFBD>𤨎<EFBFBD><EFBFBD><EFBFBD>?
- 蝖桐<EFBFBD>ECS<EFBFBD><EFBFBD><EFBFBD>VPC
<EFBFBD><EFBFBD>B: 銝湔𧒄憭𣇉<EFBFBD>霈輸䔮嚗<EFBFBD>𧋦<EFBFBD><EFBFBD><EFBFBD><EFBFBD>鍂嚗?
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>爹DS憭𣇉<EFBFBD><EFBFBD><EFBFBD>
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵桃蒾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嗡蝙<EFBFBD>?.0.0.0/0嚗?
- <EFBFBD>𩤃<EFBFBD> 摰峕<E691B0><E5B395>𡒊<EFBFBD><F0A1928A><EFBFBD><E596B3><EFBFBD>蝵𤏸挪<F0A48FB8>?
```
---
## 3. <20>函蔡甇仿炊
### 甇仿炊1: 撖澆枂<E6BE86>砍𧑐<E7A08D>唳旿摨橒<E691A8>5<EFBFBD><35><EFBFBD>嚗?
#### 1.1 撖澆枂<E6BE86>唳旿摨?
```powershell
# <20>券★<E588B8>格覔<E6A0BC><EFBFBD><E6A180><EFBFBD>
cd D:\MyCursor\AIclinicalresearch
# 撖澆枂摰峕㟲<E5B395>唳旿摨橒<E691A8><E6A992><EFBFBD>𡠺蝏𤘪<E89D8F><F0A498AA><EFBFBD><EFBFBD><EFBFBD><E69FB4>揣撘𨰻<E69298><F0A8B0BB><EFBFBD><EFBFBD><EFBFBD>
docker exec ai-clinical-postgres pg_dump `
-U postgres `
-d ai_clinical_research `
--format=plain `
--no-owner `
--no-acl `
--encoding=UTF8 `
> "rds_init_$(Get-Date -Format 'yyyyMMdd_HHmmss').sql"
```
**<EFBFBD><EFBFBD>㺭霂湔<EFBFBD>嚗?*
```yaml
-U postgres: 雿輻鍂postgres<EFBFBD><EFBFBD>
-d ai_clinical_research: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>唳旿摨枏<EFBFBD>
--format=plain: 蝥舀<EFBFBD><EFBFBD>昤QL<EFBFBD><EFBFBD>
--no-owner: 銝滚紡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
--no-acl: 銝滚紡<EFBFBD><EFBFBD><EFBFBD>𣂷縑<EFBFBD><EFBFBD>雿輻鍂RDS暺䁅恕<EFBFBD><EFBFBD><EFBFBD>嚗?
--encoding=UTF8: UTF-8蝻𣇉<E89DBB><EFBFBD><EFBFBD><E89189>𣈲<EFBFBD><F0A388B2><EFBFBD>
```
#### 1.2 撉諹<E69289>撖澆枂<E6BE86><E69E82>
```powershell
# 璉<><E79289><EFBFBD>隞嗅之撠誩<E692A0><E8AAA9>𥕦遣<F0A595A6>園𡢿
Get-ChildItem rds_init_*.sql |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1 |
Format-Table Name, @{Name="Size(MB)";Expression={[math]::Round($_.Length/1MB,2)}}, LastWriteTime -AutoSize
```
**憸<><E686B8>蝏𤘪<E89D8F>嚗?*
```
Name Size(MB) LastWriteTime
---- -------- -------------
rds_init_20251224_154529.sql 88.23 2025/12/24 15:45:30
```
**璉<><E79289><EFBFBD><E4BAA5><EFBFBD>**
```yaml
<EFBFBD>?<3F><>辣憭批<E686AD><E689B9><EFBFBD><EFBFBD>嚗?0-100 MB嚗?
<EFBFBD>?<3F><><EFBFBD>𥕦遣<F0A595A6>園𡢿銝箏<E98A9D><E7AE8F>?
<EFBFBD>?<3F><><EFBFBD><EFBFBD><E6BB9A>急𧒄<E680A5><EFBFBD>
```
---
### 甇仿炊2: 撘<><E69298>爹DS憭𣇉<E686AD>霈輸䔮嚗?<3F><><EFBFBD>嚗?
<EFBFBD>𩤃<EFBFBD> **<EFBFBD><EFBFBD>摰匧<EFBFBD><EFBFBD>鞟內嚗?* 甇斗郊撉支<E69289>銝湔𧒄撘<F0A79284><E69298>暹㺭<E69AB9><EFBFBD><E6A180><EFBFBD><EFBFBD>蝵𤏸挪<F0A48FB8><EFBFBD>摮睃銁摰匧<E691B0>憌𡡞埯<F0A1A19E><E59FAF><EFBFBD>憿餃銁撖澆<E69296>摰峕<E691B0><E5B395>𡒊<EFBFBD><F0A1928A><EFBFBD><E596B3><EFBFBD>
#### 2.1 <20><EFBFBD>RDS<44><EFBFBD><E689B9>?
```
霈輸䔮: https://rdsnext.console.aliyun.com/
<EFBFBD><EFBFBD>: <20>𤾸<EFBFBD>2嚗<32><E59A97>鈭穿<E988AD>
```
#### 2.2 <20>唾窈憭𣇉<E686AD><F0A38789><EFBFBD>
1. <20><EFBFBD>摰硺<E691B0>嚗䫤pgm-2zex1m2y3r23hdn5`
2. <20>孵稬摰硺<E691B0>ID嚗諹<E59A97><E8ABB9><EFBFBD>靘贝祕<E8B49D>?
3. 撌虫儒<E899AB>𨅯<EFBFBD>嚗?*<2A>唳旿摨栞<E691A8><E6A09E>?* <20>?**<2A>唾窈憭𣇉<E686AD><F0A38789><EFBFBD>**
4. 蝡臬藁嚗䫤5432`嚗<><E59A97>霈歹<E99C88>
5. <20>孵稬 **蝖桀<E89D96>**
6. 蝑匧<E89D91>30-60蝘𡜐<E89D98>憭𣇉<E686AD><F0A38789><EFBFBD><E595A3><EFBFBD><EFBFBD>
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵穃𧑐<EFBFBD><EFBFBD>蝷箔<EFBFBD>嚗?*
```
pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com
```
<EFBFBD>𩤃<EFBFBD> **霈啣<E99C88>甇文𧑐<E69687><F0A79190><EFBFBD><E59A97>蝏剜郊撉日<E69289><EFBFBD><EFBFBD><EFBFBD>**
#### 2.3 <20>滨蔭<E6BBA8><EFBFBD><E8B3A2>?
**<EFBFBD><EFBFBD>鈭睲<EFBFBD>撘寧<EFBFBD>䔮嚗?*
```
<EFBFBD>臬炏撠?0.0.0.0/0 <20><EFBFBD><E683A9><EFBFBD><E8B3A2>𤏪<EFBFBD>
```
**<EFBFBD>㗇𥋘嚗𡁶<EFBFBD><EFBFBD><EFBFBD>峕糓<EFBFBD>?*
**憌𡡞埯霂湔<E99C82>嚗?*
```yaml
憌𡡞埯: <EFBFBD><EFBFBD><EFBFBD>䔶遙雿蓥犖<EFBFBD>賢虾隞亙<EFBFBD>霂閗<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DS
蝻栞圾<EFBFBD>芣鴌:
<EFBFBD>?撖<><E69296>撘箏漲擃矋<E69383>Xibahe@fengzhibo117嚗?
<EFBFBD>?隞<>鍂10<31><30><EFBFBD>摰峕<E691B0>撖澆<E69296>
<EFBFBD>?撖澆<E69296><E6BE86>𡒊<EFBFBD><F0A1928A><EFBFBD><E596B3><EFBFBD>蝵𤏸挪<F0A48FB8>?
<EFBFBD>?摰鮋<E691B0><E9AE8B>湧蠧<E6B9A7>園𡢿<E59C92><F0A1A2BF><EFBFBD>
<EFBFBD>舀𦻖<EFBFBD><EFBFBD>? <20>?銝湔𧒄靚<F0A79284><E99D9A><EFBFBD><EFBFBD><EFBFBD>
```
---
### 甇仿炊3: <20>𥕦遣<F0A595A6>唳旿摨橒<E691A8>1<EFBFBD><31><EFBFBD>嚗?
#### 3.1 餈墧𦻖<E5A2A7>訌DS
```powershell
# 瘚贝<E7989A>餈墧𦻖嚗<F0A6BB96><E59A97><EFBFBD><EFBFBD>暺䁅恕postgres<65>唳旿摨橒<E691A8>
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d postgres `
-c "SELECT version();"
```
**憸<><E686B8>颲枏枂嚗?*
```
version
------------------------------------------------------------
PostgreSQL 15.14 on x86_64-pc-linux-gnu, compiled by gcc
(1 row)
```
#### 3.2 <20>𥕦遣<F0A595A6>唳旿摨?
```powershell
# <20>𥕦遣ai_clinical_research<63>唳旿摨?
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d postgres `
-c "CREATE DATABASE ai_clinical_research WITH ENCODING='UTF8' LC_COLLATE='en_US.utf8' LC_CTYPE='en_US.utf8' TEMPLATE=template0;"
```
**憸<><E686B8>颲枏枂嚗?*
```
CREATE DATABASE
```
#### 3.3 撉諹<E69289><E8ABB9>唳旿摨枏<E691A8>撱?
```powershell
# 撉諹<E69289><E8ABB9>唳旿摨枏<E691A8><E69E8F>?
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d postgres `
-c "\l ai_clinical_research"
```
---
### 甇仿炊4: 撖澆<E69296><E6BE86>唳旿<E594B3>訌DS嚗?-8<><38><EFBFBD>嚗争<E59A97>潃鐥<E6BD83>
<EFBFBD>?**餈蹱糓<E8B9B1><E7B393><EFBFBD>喲睸<E596B2><E79DB8>郊撉歹<E69289>霂瑁<E99C82>𣂼<EFBFBD>蝑匧<E89D91>嚗?*
#### 4.1 <20><EFBFBD>撖澆<E69296>
```powershell
# <20><EFBFBD>蝞⊿<E89D9E><EFBFBD>QL<51><4C>辣撖澆<E69296>RDS
$env:PGPASSWORD="Xibahe@fengzhibo117"
Get-Content "rds_init_20251224_154529.sql" | `
docker exec -i -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d ai_clinical_research
```
**瘜冽<E7989C>嚗?* 霂瑕<E99C82><E79195><EFBFBD><EFBFBD>?`rds_init_20251224_154529.sql` <20>踵揢銝箏<E98A9D><E7AE8F><EFBFBD><EFBFBD><EFBFBD><E7AE87><EFBFBD><EFBFBD><EFBFBD>?
#### 4.2 撖澆<E69296><EFBFBD><E9A488>颲枏枂蝷箔<E89DB7>
```
SET
SET
CREATE SCHEMA
CREATE SCHEMA
...嚗<><EFBFBD><EFBFBD><E6B8A1>交㺭<E4BAA4><EFBFBD>嚗?..
CREATE TABLE
CREATE TABLE
COPY 1204 <20>?撖澆<E69296>1204銵峕㺭<E5B395>?
COPY 783
COPY 3
...
CREATE INDEX
CREATE INDEX
ALTER TABLE
...
```
**撖澆<E69296><E6BE86>園𡢿隡啁<E99AA1>嚗?*
```yaml
<EFBFBD><EFBFBD>辣憭批<EFBFBD>: 88 MB
<EFBFBD><EFBFBD>園𡢿: 5-8 <EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>鈭? 蝵𤑳<E89DB5>撣血捐<E8A180>朙DS<44><EFBFBD><E59D94>笔漲
餈𥕦漲<EFBFBD><EFBFBD>:
- <EFBFBD><EFBFBD> CREATE SCHEMA <20>?Schema<6D>𥕦遣銝?
- <EFBFBD><EFBFBD> CREATE TABLE <20>?銵典<E98AB5>撱箔葉
- <EFBFBD><EFBFBD> COPY <20><EFBFBD> <20>?<3F>唳旿撖澆<E69296>銝哨<E98A9D><E593A8><EFBFBD><E595A3><EFBFBD><E888AA><EFBFBD>
- <EFBFBD><EFBFBD> CREATE INDEX <20>?蝝<E89D9D><EFBCB7>𥕦遣銝?
- <EFBFBD><EFBFBD> ALTER TABLE <20>?憭㚚睸<E39A9A>𥕦遣銝?
```
#### 4.3 撖澆<E69296>摰峕<E691B0><E5B395><EFBFBD><EFBFBD>
敶枏𦶢隞斗<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝷箇泵<EFBFBD><EFBFBD>霂湔<EFBFBD>撖澆<EFBFBD>摰峕<EFBFBD><EFBFBD>?
---
### 甇仿炊5: 撉諹<E69289>撖澆<E69296>蝏𤘪<E89D8F>嚗?<3F><><EFBFBD>嚗?
#### 5.1 撉諹<E69289>Schema
```powershell
# 璉<><E79289>兄chema<6D><EFBFBD>
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d ai_clinical_research `
-c "SELECT nspname FROM pg_namespace WHERE nspname LIKE '%_schema' ORDER BY nspname;"
```
**憸<><E686B8>颲枏枂嚗?*
```
nspname
--------------------
admin_schema
aia_schema
asl_schema
common_schema
dc_schema
pkb_schema
platform_schema
rvw_schema
ssa_schema
st_schema
(10 rows)
```
<EFBFBD>?**摨磰砲<E7A3B0><EFBFBD>10銝杵chema**
#### 5.2 撉諹<E69289>銵冽㺭<E586BD>?
```powershell
# 璉<><E79289><EFBFBD>銝杵chema<6D><61><EFBFBD><EFBFBD>
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d ai_clinical_research `
-c "SELECT schemaname, COUNT(*) as table_count FROM pg_tables WHERE schemaname NOT IN ('pg_catalog', 'information_schema') GROUP BY schemaname ORDER BY schemaname;"
```
**憸<><E686B8>颲枏枂嚗?*
```
schemaname | table_count
-----------------+-------------
aia_schema | 5
asl_schema | 6
dc_schema | 6
pkb_schema | 5
platform_schema | 8
public | 4
(6 rows)
```
<EFBFBD>?**<2A>餉恣嚗?4銝芾”**
#### 5.3 撉諹<E69289>pg-boss銵剁<E98AB5><E58981>喲睸嚗?
```powershell
# 璉<><E79289>叼g-boss<73>?銝芾”<E88ABE>臬炏摮睃銁
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d ai_clinical_research `
-c "SELECT tablename FROM pg_tables WHERE schemaname = 'platform_schema' AND tablename IN ('job', 'queue', 'schedule', 'subscription', 'job_common', 'version') ORDER BY tablename;"
```
**憸<><E686B8>颲枏枂嚗?*
```
tablename
--------------
job
job_common
queue
schedule
subscription
version
(6 rows)
```
<EFBFBD>?**pg-boss<73>?銝芾”<E88ABE><EFBFBD>摮睃銁**
**霂湔<E99C82>嚗?*
```yaml
pg-boss銵函<E98AB5>雿𦦵鍂:
- job: 隞餃𦛚<EFBFBD><EFBFBD>銵?
- queue: <EFBFBD><EFBFBD><EFBFBD>滨蔭銵?
- schedule: 摰𡁏𧒄隞餃𦛚銵?
- subscription: <EFBFBD>銵?
- job_common: 隞餃𦛚<EFBFBD>𡁶鍂<EFBFBD>滨蔭銵?
- version: pg-boss<73><73>𧋦銵?
銝箔<EFBFBD><EFBFBD><EFBFBD>閬?
- backend摨𠉛鍂靘肽<EFBFBD>pg-boss餈𥡝<E9A488><EFBFBD>郊隞餃𦛚憭<F0A69B9A><E686AD>
- <EFBFBD><EFBFBD>餈嗘<EFBFBD>銵其<EFBFBD>摮睃銁嚗𠩯ackend<EFBFBD>臬𢆡隡𡁜仃韐?
- <EFBFBD><EFBFBD>pg_dump撖澆<EFBFBD>嚗諹<EFBFBD>鈭𥡝”隡朞䌊<EFBFBD><EFBFBD><EFBFBD>?
- 銝漤<EFBFBD><EFBFBD>銁Prisma Schema銝剖<E98A9D>銋?
```
#### 5.4 撉諹<E69289><E8ABB9>唳旿<E594B3>?
```powershell
# 璉<><E79289><EFBFBD><E4BA99>株”<E6A0AA><E2809D><EFBFBD><EFBFBD>
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d ai_clinical_research `
-c "SELECT COUNT(*) as user_count, 'platform_schema.users' as table_name FROM platform_schema.users UNION ALL SELECT COUNT(*), 'aia_schema.projects' FROM aia_schema.projects UNION ALL SELECT COUNT(*), 'asl_schema.literatures' FROM asl_schema.literatures;"
```
**憸<><E686B8>颲枏枂蝷箔<E89DB7>嚗?*
```
user_count | table_name
------------+------------------------
3 | platform_schema.users
2 | aia_schema.projects
1204 | asl_schema.literatures
(3 rows)
```
<EFBFBD>?**<2A>唳旿<E594B3><EFBFBD><E8AD8D>砍𧑐銝<F0A79190><E98A9D>?*
#### 5.5 撉諹<E69289><E89D9D><EFBCB7><EFBFBD><EFBFBD><EFBFBD>?
```powershell
# 璉<><E79289>亦揣撘閙㺭<E99699>?
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d ai_clinical_research `
-c "SELECT schemaname, COUNT(*) as index_count FROM pg_indexes WHERE schemaname NOT IN ('pg_catalog', 'information_schema') GROUP BY schemaname ORDER BY schemaname;"
```
```powershell
# 璉<><E79289><EFBFBD><E4BA99>桃漲<E6A183><E6BCB2><EFBFBD>?
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d ai_clinical_research `
-c "SELECT COUNT(*) as fk_count FROM pg_constraint WHERE contype = 'f';"
```
---
### 甇仿炊6: <20>喲𡡒憭𣇉<E686AD>霈輸䔮嚗?<3F><><EFBFBD>嚗争<E59A97>潃鐥<E6BD83>潃鐥<E6BD83>
<EFBFBD>𩤃<EFBFBD> **餈蹱糓<E8B9B1><E7B393><EFBFBD><EFBFBD><E6BBA9><EFBFBD><EFBFBD><EFBFBD>冽郊撉歹<E69289><EFBFBD>◆蝡见朖<E8A781><EFBFBD>嚗?*
#### 6.1 <20>𦠜𦆮憭𣇉<E686AD><F0A38789><EFBFBD>
1. **<EFBFBD>𧼮<EFBFBD>RDS<EFBFBD><EFBFBD><EFBFBD>?*
- 摰硺<E691B0>霂行<E99C82>憿菟𢒰
2. **<EFBFBD><EFBFBD><EFBFBD>峕㺭<EFBFBD><EFBFBD>餈墧𦻖<EFBFBD>?*
3. **<EFBFBD><EFBFBD>憭𣇉<EFBFBD><EFBFBD><EFBFBD>**
```
pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com
```
4. **<2A>孵稬<E5ADB5><EFBFBD><E5B1B8><EFBFBD>蝵穃𧑐<E7A983><F0A79190><EFBFBD>?*
5. **<2A>霈文笆霂脲<E99C82>銝剔<E98A9D><E58994><EFBFBD>𣬚摰𠾼<E691B0>?*
6. **蝑匧<E89D91><E58CA7><EFBFBD><E588A0>?*
7. **蝖株恕<E6A0AA><EFBFBD><E59786><EFBFBD>銝箝<E98A9D>峕𧊋<E5B395>唾窈<E594BE>?* <20>?
#### 6.2 撉諹<E69289>憭𣇉<E686AD>霈輸䔮撌脣<E6928C><E884A3>?
```powershell
# 撠肽<E692A0>隞擧𧋦<E693A7><EFBFBD><E59597><EFBFBD>蝵穃𧑐<E7A983><F0A79190><EFBFBD><E59A97>霂亙仃韐伐<E99F90>
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d ai_clinical_research `
-c "SELECT 1;" `
--connect-timeout=5
# 憸<><E686B8>蝏𤘪<E89D8F>: 餈墧𦻖頞<F0A6BB96>𧒄<EFBFBD>𤥁<EFBFBD><F0A4A581>亙仃韐?
```
**憸<><E686B8><EFBFBD>躰秤嚗?*
```
psql: error: connection timed out
```
<EFBFBD>?**餈嗘葵<E59798>躰秤霂湔<E99C82>憭𣇉<E686AD>霈輸䔮撌脫<E6928C><E884AB><EFBFBD><E7AC94><EFBFBD>**
#### 6.3 <20><><EFBFBD><E89D8F><EFBFBD>函𠶖<E587BD>?
```yaml
RDS餈墧𦻖<EFBFBD>滨蔭:
<20><><EFBFBD><EFBFBD><EFBFBD>: pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com <20>?(靽萘<E99DBD>)
憭𣇉<E686AD><F0A38789><EFBFBD>: 撌脣<E6928C><E884A3>?<3F>?
<20><EFBFBD><E8B3A2>? 172.17.0.0/16 (VPC蝵烐挾) <20>?
摰匧<EFBFBD><EFBFBD><EFBFBD>?
<20>?憭𣇉<E686AD><F0A38789><EFBFBD>霈輸䔮
<20>?<3F><EFBFBD>VPC<50><43><EFBFBD>SAE摨𠉛鍂<F0A0899B>臭誑餈墧𦻖
<20>?摰匧<E691B0>憌𡡞埯撌脫<E6928C><E884AB>?
<20>?<3F>唳旿摨枏<E691A8>鈭擧<E988AD>摰匧<E691B0><E58CA7><EFBFBD>?
```
---
## 4. 撉諹<E69289>瘚贝<E7989A>
### 4.1 <20>砍𧑐摨𠉛鍂餈墧𦻖瘚贝<E7989A><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦<EFBFBD><EFBFBD>霂閗<EFBFBD><EFBFBD>充DS嚗屸<EFBFBD><EFBFBD>遣蝡喹SH<EFBFBD><EFBFBD>嚗?
```powershell
# <20>齿<EFBFBD>: <20><><EFBFBD><E996AC>ECS頝單踎<E596AE>?
# 撱箇<E692B1>SSH<53><EFBFBD>
ssh -N -L 5433:pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432 root@ECS<43><EFBFBD>IP
# <20>典𡖂銝<F0A19682>銝芰<E98A9D>蝡舀<E89DA1>霂閗<E99C82><E99697>?
$env:PGPASSWORD="Xibahe@fengzhibo117"
psql -h localhost -p 5433 -U airesearch -d ai_clinical_research -c "SELECT version();"
```
### 4.2 <20>滨蔭backend餈墧𦻖RDS
```bash
# backend/.env
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research?connection_limit=10&pool_timeout=10&connect_timeout=10
# <20>𩤃<EFBFBD> 瘜冽<E7989C>: 撖<><E69296>銝剔<E98A9D> @ 蝚血噡敹<E599A1>◆頧砌<E9A0A7>銝?%40
```
**URL蝻𣇉<E89DBB><EFBFBD><E996AB>嚗?*
```yaml
<EFBFBD><EFBFBD>摮㛖泵頧砌<EFBFBD>:
@ -> %40
# -> %23
$ -> %24
% -> %25
& -> %26
+ -> %2B
蝛箸聢 -> %20
```
### 4.3 backend<6E>臬𢆡瘚贝<E7989A>
```powershell
cd backend
npm run dev
# 憸<><E686B8><EFBFBD><EFBFBD>:
# <20>?<3F>唳旿摨栞<E691A8><E6A09E><EFBFBD><E4BAA4>?
# <20>?pg-boss started
# <20>?Server listening on 0.0.0.0:3001
```
---
## 5. 摰匧<E691B0><E58CA7>惩𤐄
### 5.1 撖<><E69296>摰匧<E691B0>
```yaml
敶枏<EFBFBD><EFBFBD><EFBFBD>: Xibahe@fengzhibo117
撘箏漲霂<EFBFBD>摯:
<20>?<3F>踹漲: 21銝芸<E98A9D>蝚?
<20>?憭批<E686AD>摮埈<E691AE>: Xibahe, X, S
<20>?撠誩<E692A0>摮埈<E691AE>: ibahe, fengzhibo
<20>?<3F><EFBFBD>: 117
<20>?<3F><EFBFBD>蝚血噡: @
<20>?撘箏漲: 擃?
撱箄悅:
- 摰𡁏<E691B0>頧格揢撖<E68FA2><E69296><EFBFBD><E59A97>3-6銝芣<E98A9D>嚗?
- 銝滩<E98A9D><E6BBA9>其誨<E585B6><E8AAA8>葉蝖祉<E89D96><E7A589><EFBFBD><EFBFBD><EFBFBD>?
- <20>芸銁SAE<41><EFBFBD><E887AC><EFBFBD>銝剝<E98A9D>蝵?
- 銝滩<E98A9D><E6BBA9>𣂷漱<F0A382B7>蚣it隞枏<E99A9E>
```
### 5.2 <20><EFBFBD><E8B3A2><EFBFBD>蝵?
```yaml
敶枏<EFBFBD><EFBFBD>滨蔭: 172.17.0.0/16 (VPC蝵烐挾)
<EFBFBD><EFBFBD>雿喳<EFBFBD>頝?
<20>?雿輻鍂VPC蝵烐挾嚗䔶<E59A97><E494B6><EFBFBD><E585B8>截P
<20>?SAE摰硺<E691B0>IP隡𡁜<E99AA1><F0A1819C><EFBFBD><E59094>閙㦤IP隡𡁜紡<F0A1819C><EFBFBD><E6B8B2>亙仃韐?
<20>?銝滩<E98A9D><E6BBA9>滨蔭 0.0.0.0/0嚗<30><E59A97>蝵穃<E89DB5><E7A983><EFBFBD>
<20>?銝滩<E98A9D><E6BBA9>滨蔭憭帋葵<E5B88B>閙㦤IP嚗<50><EFBFBD>文𤌴<E69687><EFBFBD>
撉諹<EFBFBD>:
- RDS<44><EFBFBD><E689B9>?> <20>唳旿摰匧<E691B0><E58CA7>?> <20><EFBFBD><E8B3A2>閗挽蝵?
- 蝖株恕<E6A0AA><EFBFBD> 172.17.0.0/16
- 蝖株恕瘝⊥<E7989D> 0.0.0.0/0
```
### 5.3 霈輸䔮<E8BCB8><EFBFBD>
```yaml
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
airesearch: 摨𠉛鍂銝梶鍂<E6A2B6><EFBFBD>
- <20><><EFBFBD>: SELECT, INSERT, UPDATE, DELETE
- 銝滩<E98A9D><E6BBA9><EFBFBD>蝥抒鍂<E68A92>?postgres
- <20><>撠𤩺<E692A0><F0A4A9BA>𣂼<EFBFBD><F0A382BC>?
餈墧𦻖<EFBFBD>𣂼<EFBFBD>:
- <20>滨蔭 connection_limit=10嚗<30><E59A97>銝杵AE摰硺<E691B0>嚗?
- <20><EFBFBD>餈墧𦻖瘙㰘<E79899>堒偷
- RDS<44><53>憭扯<E686AD><E689AF>交㺭: 400
```
### 5.4 憭<>遢蝑𣇉裦
```yaml
RDS<EFBFBD>芸𢆡憭<EFBFBD>遢嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
<20>唳旿憭<E697BF>遢: 瘥誩予銝<E4BA88>甈?
<20><EFBFBD><EFBFBD>遢: 摰墧𧒄嚗㇊ITR<54><EFBFBD>嚗?
靽萘<E99DBD><E89098>園𡢿: 7憭抬<E686AD><E68AAC>滩晶嚗?
<><EFBFBD>園𡢿: <20>峕膥2:00-4:00
<EFBFBD>见𢆡敹怎<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿𨅯<EFBFBD>嚗?
- Schema<6D>䀹凒<E480B9>?
- 憭抒<E686AD><E68A92><EFBFBD>蝥批<E89DA5>
- <20>𣳇膄憭折<E686AD><E68A98>唳旿<E594B3>?
- 靽萘<E99DBD>30-60憭?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
<20>?<3F>園𡢿<E59C92><EFBFBD>憭㵪<E686AD>PITR嚗?
<20>?<3F><EFBFBD>憭滚<E686AD>隞餅<E99A9E>蝘?
<20>?憭<>遢摮睃<E691AE><E79D83>汰SS
```
---
## 6. 撣貉<E692A3><E8B289><EFBFBD>
### <20><EFBFBD>1: 撖澆枂<E6BE86><EFBFBD>蝷箸<E89DB7><E7AEB8>𣂷<EFBFBD>頞?
**<2A><>𠶖嚗?*
```
pg_dump: error: permission denied for table xxx
```
**<2A><EFBFBD>嚗?* 雿輻鍂<E8BCBB><E98D82><EFBFBD>瑟瓷<E7919F>㕑雲憭<E99BB2><E686AD><EFBFBD>?
**閫<><E996AB>嚗?*
```bash
# 雿輻鍂頞<E98D82><EFBFBD><EFBFBD>postgres
docker exec ai-clinical-postgres pg_dump -U postgres -d ai_clinical_research ...
# <20><EFBFBD><E494B6>舀芦<E88880>𡁶鍂<F0A181B6>?
```
---
### <20><EFBFBD>2: 撖澆<E69296><E6BE86><EFBFBD><E59789><EFBFBD><E4BAA5>?
**<2A><>𠶖嚗?*
```
psql: error: connection timed out
```
**<2A><EFBFBD>嚗?*
1. 憭𣇉<E686AD><F0A38789><EFBFBD><E595A3><EFBFBD><E88AB8>?
2. <20><EFBFBD><E8B3A2>閙𧊋<E99699>滨蔭
3. 蝵𤑳<E89DB5><F0A491B3><EFBFBD>
**<2A>埝䰻甇仿炊嚗?*
```bash
# 1. 蝖株恕憭𣇉<E686AD><F0A38789><EFBFBD>撌脣<E6928C><E884A3>?
# RDS<44><EFBFBD><E689B9>?> <20>唳旿摨栞<E691A8><E6A09E>?> <20><EFBFBD>憭𣇉<E686AD><F0A38789><EFBFBD>
# 2. 蝖株恕<E6A0AA><EFBFBD><E8B3A2><EFBFBD>蝵?
# RDS<44><EFBFBD><E689B9>?> <20>唳旿摰匧<E691B0><E58CA7>?> <20><EFBFBD><E8B3A2>閗挽蝵?
# 摨磰砲<E7A3B0><E7A0B2>鉄 0.0.0.0/0嚗<30><EFBFBD><EFBFBD><E5A19A><EFBFBD><E7A2B6><EFBFBD><EFBFBD>蝵飡P
# 3. 瘚贝<E7989A>蝵𤑳<E89DB5>餈鮋<E9A488>𡁏<EFBFBD>?
ping pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com
# 4. 瘚贝<E7989A>蝡臬藁餈鮋<E9A488>𡁏<EFBFBD>?
Test-NetConnection -ComputerName pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com -Port 5432
```
---
### <20><EFBFBD>3: 撖澆<E69296><E6BE86><EFBFBD>蝷箸㺭<E7AEB8><EFBFBD>銝滚<E98A9D><E6BB9A>?
**<2A><>𠶖嚗?*
```
psql: error: database "ai_clinical_research" does not exist
```
**<2A><EFBFBD>嚗?* 敹䁅扇<E48185>𥕦遣<F0A595A6>唳旿摨?
**閫<><E996AB>嚗?*
```bash
# <20><><EFBFBD>撱箸㺭<E7AEB8><EFBFBD>
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d postgres `
-c "CREATE DATABASE ai_clinical_research WITH ENCODING='UTF8';"
# <20><EFBFBD><E59785>滚紡<E6BB9A>?
```
---
### <20><EFBFBD>4: 撖澆<E69296><E6BE86>簵g-boss銵函撩憭?
**<2A><>𠶖嚗?*
```
backend<EFBFBD>臬𢆡<EFBFBD><EFBFBD><EFBFBD>曄內:
Error: relation "platform_schema.job" does not exist
```
**<2A><EFBFBD>嚗?* 撖澆枂<E6BE86>嗆𧊋<E59786><F0A78A8B>鉄pg-boss銵?
**<2A>埝䰻嚗?*
```bash
# 1. 璉<><E79289>亙紡<E4BA99><EFBFBD>SQL<51><4C>
Get-Content rds_init_*.sql | Select-String "CREATE TABLE.*job"
# 摨磰砲<E7A3B0><EFBFBD>:
# CREATE TABLE platform_schema.job ...
# CREATE TABLE platform_schema.queue ...
# 蝑?銝芾”
# 2. 憒<><E68692>瘝⊥<E7989D>嚗屸<E59A97><E5B1B8>啣紡<E595A3>?
docker exec ai-clinical-postgres pg_dump -U postgres -d ai_clinical_research --format=plain --no-owner --no-acl > rds_init_new.sql
# 3. <20>齿鰵撖澆<E69296>
```
**憸<>俈嚗?*
```yaml
蝖桐<EFBFBD>雿輻鍂甇<EFBFBD><EFBFBD><EFBFBD><EFBFBD>箏𦶢隞?
<EFBFBD>?雿輻鍂 pg_dump嚗<70><EFBFBD>箸㟲銝芣㺭<E88AA3><EFBFBD>嚗?
<EFBFBD>?銝滩<E98A9D><E6BBA9>?prisma migrate嚗<65>蘨撖澆枂Prisma摰帋<E691B0><E5B88B><EFBFBD>”嚗?
```
---
### <20><EFBFBD>5: 撖<><E69296>銝剔<E98A9D><E58994><EFBFBD>摮㛖泵撖潸稲餈墧𦻖憭梯揖
**<EFBFBD><EFBFBD>𠶖嚗?*
```
backend<EFBFBD>臬𢆡憭梯揖:
Error: password authentication failed for user "airesearch"
```
**<EFBFBD><EFBFBD>嚗?* DATABASE_URL銝剔<E98A9D><EFBFBD><E69296><EFBFBD>芣迤蝖株蓮銋?
**閫<><E996AB>嚗?*
```bash
# <20>躰秤蝷箔<E89DB7>嚗㇀ <20>芾蓮銋㚁<E98A8B>
DATABASE_URL=postgresql://airesearch:Xibahe@fengzhibo117@host:5432/db
# 甇<>蝷箔<E89DB7>嚗㇀ 頧砌<E9A0A7>銝?%40嚗?
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@host:5432/db
```
**URL蝻𣇉<E89DBB>撌亙<E6928C>嚗?*
```javascript
// <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E689B9><EFBFBD>銵?
encodeURIComponent("Xibahe@fengzhibo117")
// 颲枏枂: Xibahe%40fengzhibo117
```
---
### <20><EFBFBD>6: SAE摨𠉛鍂<F0A0899B><EFBFBD>餈墧𦻖RDS
**<EFBFBD><EFBFBD>𠶖嚗?*
```
SAE<EFBFBD><EFBFBD><EFBFBD>曄內:
connection to server failed: Connection timed out
```
**<EFBFBD><EFBFBD>嚗?*
1. 雿輻鍂鈭<E98D82><E988AD>蝵穃𧑐<E7A983><F0A79190><EFBFBD><EFBFBD>𣳇膄嚗?
2. <20><EFBFBD><E8B3A2>閙𧊋<E99699><F0A78A8B>鉄VPC蝵烐挾
3. SAE<41>朙DS銝滚銁<E6BB9A><EFBFBD>VPC
**<EFBFBD>埝䰻甇仿炊嚗?*
```yaml
1. 蝖株恕雿輻鍂<E8BCBB><E98D82><EFBFBD><EFBFBD><EFBFBD>:
<EFBFBD>?pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com嚗<6D><E59A97>蝵𡢅<E89DB5>
<EFBFBD>?pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com嚗<6D><E59A97>蝵𡢅<E89DB5>撌脣<E6928C><E884A3><EFBFBD>
2. 蝖株恕<E6A0AA><EFBFBD><E8B3A2><EFBFBD>蝵?
RDS<EFBFBD><EFBFBD><EFBFBD>?> <20>唳旿摰匧<E691B0><E58CA7>?> <20><EFBFBD><E8B3A2>閗挽蝵?
摨磰砲<EFBFBD><EFBFBD>: 172.17.0.0/16
3. 蝖株恕VPC銝<43><E98A9D>?
- RDS VPC: vpc-2ze055cptkew9c38w4r06
- SAE VPC: 摨磰砲<EFBFBD><EFBFBD>
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: SAE<EFBFBD><EFBFBD><EFBFBD>?> 摨𠉛鍂霂行<E99C82> > 蝵𤑳<E89DB5><F0A491B3>滨蔭
4. 蝖株恕SAE<41><EFBFBD><E887AC><EFBFBD>:
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research
瘜冽<EFBFBD>: 銝滩<EFBFBD><EFBFBD>?-ko <20>𡒊<EFBFBD>
```
---
## 7. <20><EFBFBD><E5A2A7><EFBFBD>
### 7.1 <20><EFBFBD><E5A2A7>箸艶
```yaml
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>皛𡁶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
- 撖澆<EFBFBD><EFBFBD>𤾸<EFBFBD><EFBFBD>唳㺭<EFBFBD><EFBFBD>摰峕㟲
- 撖澆<EFBFBD><EFBFBD><EFBFBD>銝剜鱏
- <EFBFBD>唳旿撉諹<EFBFBD>憭梯揖
- 摨𠉛鍂餈墧𦻖撘<EFBFBD>
```
### 7.2 <20><EFBFBD>甇仿炊
```bash
# <20><EFBFBD>A: <20>𣳇膄<F0A3B387>唳旿摨㯄<E691A8><E3AF84>啣紡<E595A3><EFBFBD><E4BC90><EFBFBD>嚗?
# 1. 餈墧𦻖<E5A2A7>訌DS
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h pgm-2zex1m2y3r23hdn5ko.pg.rds.aliyuncs.com `
-p 5432 `
-U airesearch `
-d postgres
# 2. 蝏<><EFBFBD><E8BFAB><EFBFBD><EFBFBD><E39591>?
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'ai_clinical_research' AND pid <> pg_backend_pid();
# 3. <20>𣳇膄<F0A3B387>唳旿摨?
DROP DATABASE ai_clinical_research;
# 4. <20>齿鰵<E9BDBF>𥕦遣撟嗅紡<E59785>?
CREATE DATABASE ai_clinical_research WITH ENCODING='UTF8';
\q
# 5. <20>齿鰵撖澆<E69296>
Get-Content rds_init_*.sql | docker exec -i -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql -h ... -d ai_clinical_research
```
```bash
# <20><EFBFBD>B: 雿輻鍂RDS敹怎<E695B9><E6808E><EFBFBD><EFBFBD><E59A97><EFBFBD>𨅯<EFBFBD>撱箔<E692B1>敹怎<E695B9>嚗?
# 1. <20><EFBFBD>RDS<44><EFBFBD><E689B9>?
# 2. 憭<><EFBFBD><EFBFBD> > 憭<><EFBFBD>𡑒”
# 3. <20><EFBFBD>撖澆<E69296><E6BE86><EFBFBD>敹怎<E695B9>
# 4. <20>孵稬<E5ADB5><EFBFBD>憭溻<E686AD>?
# 5. <20>㗇𥋘<E39787><EFBFBD><EFBCB7><EFBFBD>:
# - <20><EFBFBD>隞賡<E99A9E><E8B3A1><EFBFBD><EFBFBD><E59A97>憭滚<E686AD>敹怎<E695B9><E6808E>園𡢿<E59C92><EFBFBD>
# - <20>㗇𧒄<E39787><EFBFBD><E6B8A1><EFBFBD>嚗㇊ITR嚗峕<E59A97>憭滚<E686AD>隞餅<E99A9E><E9A485>園𡢿嚗?
# 6. 蝖株恕<E6A0AA><EFBFBD>
```
### 7.3 <20><EFBFBD>撉諹<E69289>
```bash
# 撉諹<E69289><E8ABB9><EFBFBD><E5A2A7>𡒊<EFBFBD><F0A1928A>唳旿
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" ai-clinical-postgres psql `
-h ... `
-d ai_clinical_research `
-c "SELECT schemaname, COUNT(*) FROM pg_tables WHERE schemaname NOT IN ('pg_catalog', 'information_schema') GROUP BY schemaname;"
```
---
## 8. <20><>雿喳<E99BBF>頝?
### 8.1 <20>函蔡<E587BD><EFBFBD>憭?
```yaml
<EFBFBD>𡢅<EFBFBD> <20><><EFBFBD><EFBFBD><E79289><EFBFBD><E4BAA4>?
1. <20>砍𧑐<E7A08D>唳旿摨枏歇憭<E6AD87>
2. RDS摰硺<E691B0>撌脣<E6928C>撱箏僎<E7AE8F>滨蔭摰峕<E691B0>
3. VPC蝵𤑳<E89DB5>撌脰<E6928C><E884B0>?
4. <20><EFBFBD><E8B3A2>訫歇<E8A8AB>滨蔭嚗ĀPC蝵烐挾嚗?
5. <20>唳旿摨梶鍂<E6A2B6><EFBFBD><EFBFBD><E69296>撌脰扇敶?
6. <20>嗅躹撌脰挽蝵殷<E89DB5>Asia/Shanghai嚗?
7. <20>芸𢆡憭<F0A286A1>遢撌脣<E6928C><E884A3>?
<EFBFBD>𡢅<EFBFBD> <20>園𡢿蝒堒藁<E5A092>㗇𥋘:
- 銝𡁜𦛚雿𤾸陸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝?1<><EFBFBD>嚗?
- <EFBFBD><EFBFBD>頞喳<EFBFBD><EFBFBD>園𡢿嚗?0-60<36><30><EFBFBD>嚗?
- <EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD><EFBFBD>函瑪<EFBFBD><EFBFBD>
```
### 8.2 <20><EFBFBD><EFBFBD><E9A488>銝?
```yaml
<EFBFBD>𡢅<EFBFBD> <20><EFBFBD><EFBFBD><E996AB>:
1. <20>鞉郊<E99E89><EFBFBD>嚗䔶<E59A97><EFBFBD>歲甇仿炊
2. 瘥𤩺郊撉諹<E69289>蝏𤘪<E89D8F><F0A498AA>滨誧蝏?
3. 霈啣<E99C88>瘥𤩺郊<F0A4A9BA><E9838A><EFBFBD><EFBFBD><EFBFBD><E7AE8F>園𡢿
4. <20><><EFBFBD><EFBFBD>躰秤蝡见朖<E8A781>𨀣迫<F0A880A3>埝䰻
5. 銝滩<E98A9D><E6BBA9>峕𧒄<E5B395><EFBFBD>憭帋葵<E5B88B><EFBFBD>
<EFBFBD>𡢅<EFBFBD> 摰匧<E691B0><E58CA7><EFBFBD>:
1. 憭𣇉<E686AD>霈輸䔮<E8BCB8><E494AE>撠誩<E692A0>嚗?0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2. 撖澆<E69296>摰峕<E691B0>蝡见朖<E8A781>喲𡡒憭𣇉<E686AD>
3. 銝滩<E98A9D><E6BBA9><EFBFBD><E585B8><EFBFBD>蝏𨀣<E89D8F>雿?
4. 銝滩<E98A9D><EFBFBD>蠧餈墧𦻖靽⊥<E99DBD>
```
### 8.3 <20>函蔡<E587BD><EFBFBD><E693A7>?
```yaml
<EFBFBD>𡢅<EFBFBD> <20><EFBFBD>撉諹<E69289>:
1. Schema<6D>諹”<E8ABB9><EFBFBD><EFBFBD>
2. <20>唳旿<E594B3><EFBFBD><E8AD8D>砍𧑐銝<F0A79190><E98A9D>?
3. pg-boss銵典<E98AB5><E585B8>?
4. 蝝<E89D9D><EFBCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A180>?
5. backend<6E>賣迤撣貉<E692A3><E8B289>?
6. 摨𠉛鍂<F0A0899B><EFBFBD><EFBFBD>
<EFBFBD>𡢅<EFBFBD> <20><EFBFBD>撉諹<E69289>:
1. 餈墧𦻖撱嗉<E692B1> < 50ms嚗ĀPC<50><43><EFBFBD>嚗?
2. <20>亥砭<E4BAA5><EFBFBD><E6BB9A>園𡢿甇<F0A1A2BF>
3. RDS CPU雿輻鍂<E8BCBB>?< 30%
4. 餈墧𦻖<E5A2A7>?< 100
<EFBFBD>𡢅<EFBFBD> 摰匧<E691B0>撉諹<E69289>:
1. 憭𣇉<E686AD><F0A38789><EFBFBD>撌脣<E6928C><E884A3>?<3F>?
2. <20><EFBFBD><E8B3A2>訫蘨<E8A8AB>动PC蝵烐挾 <20>?
3. 撖<><E69296>撘箏漲擃?<3F>?
4. <20>芸𢆡憭<F0A286A1>遢撌脣<E6928C><E884A3>?<3F>?
```
### 8.4 <20>烐綉<E78390>𡃏郎
```yaml
<EFBFBD>𡢅<EFBFBD> <20>滨蔭<E6BBA8>烐綉:
1. RDS餈墧𦻖<E5A2A7><EFBFBD>霅佗<E99C85>>300嚗?
2. RDS CPU<50>𡃏郎嚗?70%嚗?
3. RDS蝤<53><E89DA4><EFBFBD>𡃏郎嚗?80%嚗?
4. <20>䰻霂<E99C82>霅佗<E99C85>>1蝘𡜐<E89D98>
5. 憭<>遢憭梯揖<E6A2AF>𡃏郎
<EFBFBD>𡢅<EFBFBD> <20>亙虜撌⊥<E6928C>:
1. 瘥誩予璉<E4BA88><E79289>充DS<44>烐綉
2. 瘥誩𪂹<E8AAA9><EFBFBD><E4BAA6>䰻霂𠯫敹?
3. 瘥𤩺<E798A5>撉諹<E69289><EFBFBD><EFBFBD>舐鍂<E88890>?
4. 瘥誩迤摨行<E691A8>憭齿<E686AD>蝏?
```
### 8.5 <20><>﹝蝏湔擪
```yaml
<EFBFBD>𡢅<EFBFBD> <20>湔鰵<E6B994><E9B0B5>:
1. 霈啣<E99C88>摰鮋<E691B0><E9AE8B><EFBFBD><E689AF>園𡢿
2. 霈啣<E99C88><E595A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䔮憸睃<E686B8><EFBFBD><E996AB><EFBFBD><EFBFBD>
3. <20>湔鰵餈墧𦻖靽⊥<E99DBD>
4. 銵亙<E98AB5><E4BA99><EFBFBD><E5AF9E><EFBFBD><EFBFBD><EFBFBD><E686AD>
<EFBFBD>𡢅<EFBFBD> <20><EFBFBD>瘝㗇<E7989D>:
1. <20><EFBFBD>蝏誯<E89D8F><E8AAAF>躰悌
2. 隡睃<E99AA1><E79D83>函蔡瘚<E894A1><E7989A>
3. <20>寡悌<E5AFA1><EFBFBD><EFBD81>𣂼<EFBFBD>
4. 撱箇<E692B1>FAQ
```
---
## 9. <20><><EFBFBD>
### 9.1 摰峕㟲璉<E39FB2><E79289><EFBFBD><E4BAA4>?
```yaml
<EFBFBD>函蔡<EFBFBD>齿<EFBFBD><EFBFBD>?(Before):
<EFBFBD>?<3F>砍𧑐<E7A08D>唳旿摨栞<E691A8>銵峕迤撣?
<EFBFBD>?Docker Desktop餈鞱<E9A488><EFBFBD>
<EFBFBD>?RDS摰硺<E691B0>撌脣<E6928C>撱?
<EFBFBD>?VPC<50>䔶漱<E494B6>㦤撌脤<E6928C>蝵?
<EFBFBD>?<3F><EFBFBD><E8B3A2>訫歇<E8A8AB>滨蔭嚗?72.17.0.0/16嚗?
<EFBFBD>?<3F>唳旿摨梶鍂<E6A2B6>瑕歇<E79195>𥕦遣嚗Òiresearch嚗?
<EFBFBD>?<3F>嗅躹撌脰挽蝵殷<E89DB5>Asia/Shanghai嚗?
<EFBFBD>?<3F>芸𢆡憭<F0A286A1>遢撌脣<E6928C><E884A3>?
<EFBFBD>函蔡餈<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?(During):
<EFBFBD>?撖澆枂<E6BE86><E69E82>辣憭批<E686AD><EFBFBD>虜嚗?0-100 MB嚗?
<EFBFBD>?憭𣇉<E686AD><F0A38789><EFBFBD><E595A3>唾窈<E594BE>𣂼<EFBFBD>
<EFBFBD>?<3F><EFBFBD><E8B3A2>蓥葩<E893A5><EFBFBD>蝵殷<E89DB5>0.0.0.0/0嚗?
<EFBFBD>?<3F>唳旿摨枏<E691A8>撱箸<E692B1><E7AEB8>?
<EFBFBD>?<3F>唳旿撖澆<E69296>摰峕<E691B0><EFBFBD><E59A97><EFBFBD>躰秤嚗?
<EFBFBD>?憭𣇉<E686AD><F0A38789><EFBFBD>撌脣<E6928C><E884A3>?潃鐥<E6BD83>潃?
<EFBFBD>函蔡<EFBFBD><EFBFBD><EFBFBD>?(After):
<EFBFBD>?10銝杵chema<6D><EFBFBD>摮睃銁
<EFBFBD>?34銝芾”<E88ABE><EFBFBD>摮睃銁
<EFBFBD>?pg-boss<73>?銝芾”摮睃銁
<EFBFBD>?<3F><EFBFBD><E586BD>唳旿摰峕㟲
<EFBFBD>?蝝<E89D9D>摰峕㟲
<EFBFBD>?憭㚚睸摰峕㟲
<EFBFBD>?backend<6E><EFBFBD><E8B3AA>充DS
<EFBFBD>?摨𠉛鍂<F0A0899B><EFBFBD><EFBFBD>
<EFBFBD>?憭𣇉<E686AD>霈輸䔮撌脣<E6928C><E884A3>?潃鐥<E6BD83>潃?
```
### 9.2 敹恍<E695B9><EFBFBD><E7AC94>?
#### 餈墧𦻖靽⊥<E99DBD>
```yaml
RDS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432
<EFBFBD>唳旿摨枏<EFBFBD>: ai_clinical_research
<EFBFBD><EFBFBD><EFBFBD>? airesearch
<EFBFBD><EFBFBD>: Xibahe@fengzhibo117
DATABASE_URL:
postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research?connection_limit=10&pool_timeout=10
```
#### 撣貊鍂<E8B28A>賭誘
```powershell
# 撖澆枂<E6BE86>唳旿摨?
docker exec ai-clinical-postgres pg_dump -U postgres -d ai_clinical_research --no-owner --no-acl > backup.sql
# 撖澆<E69296><E6BE86>唳旿摨?
Get-Content backup.sql | docker exec -i -e PGPASSWORD="<EFBFBD><EFBFBD>" ai-clinical-postgres psql -h RDS<EFBFBD><EFBFBD> -U airesearch -d ai_clinical_research
# 璉<><E79289>兄chema
docker exec -e PGPASSWORD="<EFBFBD><EFBFBD>" ai-clinical-postgres psql -h RDS<EFBFBD><EFBFBD> -U airesearch -d ai_clinical_research -c "\dn"
# 璉<><E79289>亥”
docker exec -e PGPASSWORD="<EFBFBD><EFBFBD>" ai-clinical-postgres psql -h RDS<EFBFBD><EFBFBD> -U airesearch -d ai_clinical_research -c "\dt platform_schema.*"
# 璉<><E79289>交㺭<E4BAA4><EFBFBD>
docker exec -e PGPASSWORD="<EFBFBD><EFBFBD>" ai-clinical-postgres psql -h RDS<EFBFBD><EFBFBD> -U airesearch -d ai_clinical_research -c "SELECT COUNT(*) FROM platform_schema.users;"
```
---
## <20><> <20><EFBFBD><E8A9A8><EFBFBD>
- [<EFBFBD>函蔡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>](./00-<2D>函蔡<E587BD><EFBFBD><E59786><EFBFBD>.md)
- [敹恍<EFBFBD><EFBFBD>蝵淞OP](./01-敹恍<E695B9><EFBFBD>蝵淞OP-<2D>嗅抅蝖<E68A85><E89D96>?md)
- [PostgreSQL<EFBFBD>函蔡蝑𣇉裦<EFBFBD><EFBFBD><EFBFBD><EFBFBD>](./PostgreSQL<51>函蔡蝑𣇉裦-<2D><EFBFBD><E8A9A8><EFBFBD>.md)
- [Node.js<6A>𡒊垢<F0A1928A>函蔡<E587BD><E894A1><EFBFBD>](./05-Node.js<6A>𡒊垢-SAE摰孵膥<E5ADB5>函蔡<E587BD><E894A1><EFBFBD>.md)
---
## <20><> <20>䀹凒<E480B9><E58792>
| <20><>𧋦 | <20><EFBFBD> | 雿𡏭<E99BBF>?| <20>䀹凒霂湔<E99C82> |
|------|------|------|---------|
| v1.0 | 2025-12-24 | AI<41><EFBFBD> | <20><EFBFBD><E598A5><EFBFBD>𧋦嚗<F0A78BA6>抅鈭𤾸<E988AD><F0A4BEB8><EFBFBD><EFBFBD>蝵脩<E89DB5>撉?|
---
## <20><> <20><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗諹窈璉<EFBFBD><EFBFBD><EFBFBD>
1. <20>?<3F><EFBFBD><EFBFBD><E78DA2><EFBFBD><EFBFBD>虜閫<E8999C>䔮憸塩<E686B8><EFBFBD><E6BBA8>?
2. <20>?RDS摰墧𧒄<E5A2A7><EFBFBD>嚗㇌DS<44><EFBFBD><E689B9>?> <20><EFBFBD>蝞∠<E89D9E>嚗?
3. <20>?backend摨𠉛鍂<F0A0899B><EFBFBD>嚗𠄎AE<41><EFBFBD><E689B9>?> <20><EFBFBD>嚗?
4. <20>?PostgreSQL<51>函蔡蝑𣇉裦<F0A38789><EFBFBD><E8A9A8><EFBFBD>
---
**<EFBFBD><EFBFBD>﹝蝏𤘪<EFBFBD>**
蟡嗪<EFBFBD>蝵脤◇<EFBFBD><EFBFBD><EFBFBD><EFBFBD>