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%)
15 KiB
AI銝游<EFBFBD><EFBFBD>𠉛弦撟喳蝱 - <20>亙虜<E4BA99>湔鰵敹恍<E695B9><E6818D><EFBFBD>雿𨀣<E99BBF><F0A880A3>?
**<2A><>﹝<EFBFBD>券<EFBFBD>?*嚗𡁏𠯫撣詨<E692A3><E8A9A8>賣凒<E8B3A3>啁<EFBFBD>敹恍<E695B9><E6818D><EFBFBD>雿𨀣<E99BBF><F0A880A3>? **<2A>格<EFBFBD><E6A0BC>冽<EFBFBD>**嚗𡁜<E59A97><F0A1819C>穃𣪧<E7A983>麄<EFBFBD><E9BA84><EFBFBD>蝏港犖<E6B8AF>塩<EFBFBD><E5A1A9>I<EFBFBD>拇<EFBFBD>
<EFBFBD>湔鰵<EFBFBD>園𡢿嚗?025-12-25
**<2A>寧<EFBFBD>**嚗𡁶<E59A97>撠讐移<E8AE90>溻<EFBFBD><E6BABB><EFBFBD><EFBFBD>桐縑<E6A190>臬<EFBFBD><E887AC><EFBFBD><EFBFBD><EFBFBD>虾<EFBFBD>湔𦻖憭滚<E686AD><E6BB9A>扯<EFBFBD>
<EFBFBD>㴓 雿輻鍂霂湔<E99C82>
**<2A>祆<EFBFBD>獢<EFBFBD><E78DA2><EFBFBD>鍂鈭?*嚗?
- <EFBFBD>?<3F>亙虜<E4BA99>蠘<EFBFBD><E8A098>湔鰵嚗<E9B0B5>耨<EFBFBD>嫣誨<E5ABA3><E8AAA8><EFBFBD><EFBFBD>湔鰵<E6B994>函蔡嚗?
- <EFBFBD>?敹恍<E695B9>蠘翮隞<E7BFAE><E99A9E>瘥誩予/瘥誩𪂹<E8AAA9>湔鰵嚗?
- <EFBFBD>?<3F>a<EFBFBD><EFBD81>譍<EFBFBD>嚗<EFBFBD><E59A97>隞碶犖<E7A2B6>䨝I敹恍<E695B9>煺<EFBFBD><E785BA>页<EFBFBD>
**銝漤<E98A9D><E6BCA4>鍂鈭?*嚗?
- <EFBFBD>?擐𡝗活摰峕㟲<E5B395>函蔡嚗<E894A1>窈<EFBFBD>?
17-摰峕㟲<E5B395>函蔡摰墧<E691B0><E5A2A7>见<EFBFBD>-2025<32>?md嚗? - <EFBFBD>?<3F>臬<EFBFBD><E887AC>㗛<EFBFBD>靽格㺿嚗<E3BABF>窈<EFBFBD>𧢲𧋦<F0A7A2B2><F0A78BA6>﹝蝚?<3F><><EFBFBD>
- <EFBFBD>?<3F>桅<EFBFBD><E6A185>埝䰻嚗<E4B0BB>窈<EFBFBD>?
15-Node.js<6A>𡒊垢-<2D>函蔡<E587BD>𣂼<EFBFBD><F0A382BC>餌<EFBFBD>.md嚗?
<EFBFBD>𣑐 銝<><E98A9D><EFBFBD><EFBFBD>蝵桐縑<E6A190>荔<EFBFBD>敹<EFBFBD>粉5<E7B289><35><EFBFBD>嚗?
1.1 ACR<43>𨅯<EFBFBD>隞枏<E99A9E>靽⊥<E99DBD>
**<2A>餃<EFBFBD><E9A483>剛<EFBFBD>**嚗?
Registry: crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
<0A>冽<EFBFBD><E586BD>? gofeng117@163.com
撖<><E69296>: fengzhibo117
**<2A>𨅯<EFBFBD><F0A885AF>啣<EFBFBD><E595A3>澆<EFBFBD>**嚗?
# <20>祉<EFBFBD><E7A589>啣<EFBFBD>嚗<EFBFBD>𧋦<EFBFBD>唳綫<E594B3><E7B6AB>鍂嚗?
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/<隞枏<E99A9E><E69E8F>?:<<3C><>𧋦<EFBFBD>?
# VPC<50>啣<EFBFBD>嚗𠄎AE<41>匧<EFBFBD><E58CA7>剁<EFBFBD>
crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/<隞枏<E99A9E><E69E8F>?:<<3C><>𧋦<EFBFBD>?
**3銝芷<E98A9D><E88AB7>譍<EFBFBD>摨?*嚗?
python-extraction- Python敺格<E695BA><E6A0BC>?backend-service- Node.js<6A>𡒊垢ai-clinical_frontend-nginx- <20>滨垢Nginx
1.2 SAE摨𠉛鍂靽⊥<E99DBD>
| 摨𠉛鍂<EFBFBD>滨妍 | <EFBFBD>滚𦛚 | 敶枏<EFBFBD><EFBFBD><EFBFBD>𧋦 | <EFBFBD><EFBFBD><EFBFBD><EFBFBD>啣<EFBFBD> |
|---|---|---|---|
python-extraction-test |
Python敺格<EFBFBD><EFBFBD>? | v1.0 | 172.17.173.66:8000 |
nodejs-backend-test |
Node.js<6A>𡒊垢 | v1.3 | 172.17.173.73:3001 |
frontend-nginx-service |
<EFBFBD>滨垢Nginx | v1.0 | 172.17.173.72:80 |
**SAE<41>批<EFBFBD><E689B9>?*嚗冴ttps://sae.console.aliyun.com/
1.3 <20><>𧋦<EFBFBD>瑁<EFBFBD><E79181>?
**霂凋<E99C82><E5878B>𣇉<EFBFBD><F0A38789>?*嚗䫤v銝餌<E98A9D><E9A48C>?甈∠<E79488><E288A0>?靽株恥<E6A0AA>戡
v1.0 <20>?擐𡝗活<F0A19D97>函蔡
v1.1 <20>?<3F>蠘<EFBFBD><E8A098>湔鰵
v1.2 <20>?<3F>蠘<EFBFBD><E8A098>湔鰵
v1.3 <20>?<3F>蠘<EFBFBD><E8A098>湔鰵
v2.0 <20>?<3F>滚之<E6BB9A>湔鰵
撱箄悅嚗𡁏<EFBFBD>甈⊥凒<EFBFBD>圈<EFBFBD>鍦<EFBFBD>甈∠<EFBFBD><EFBFBD>砍噡嚗ǒ1.3 <20>?v1.4嚗?
<EFBFBD><EFBFBD> 鈭䎚<E988AD><E48E9A>凒<EFBFBD>衹ode.js<6A>𡒊垢嚗<E59EA2><E59A97>撣貊鍂嚗争<E59A97>潃鐥<E6BD83>潃鐥<E6BD83>
甇仿炊1嚗𡁏𧋦<EFBFBD>唳<EFBFBD>撱綽<EFBFBD>5<EFBFBD><EFBFBD><EFBFBD>嚗?
# 餈𥕦<E9A488><F0A595A6>𡒊垢<F0A1928A>桀<EFBFBD>
cd D:\MyCursor\AIclinicalresearch\backend
# 蝻𤥁<E89DBB>TypeScript
npm run build
# 撉諹<E69289>蝻𤥁<E89DBB>蝏𤘪<E89D8F>
dir dist
# 摨磰砲<E7A3B0>见<EFBFBD>嚗餜ndex.js, common/, modules/ 蝑?
# <20><>遣Docker<65>𨅯<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>砍噡<E7A08D>鍦<EFBFBD>嚗?
docker build -t backend-service:v1.4 .
憸<EFBFBD>恣<EFBFBD>園𡢿嚗?<3F><><EFBFBD>
甇仿炊2嚗𡁏綫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>誩<EFBFBD>ACR嚗?0<><30><EFBFBD>嚗?
# 1. <20>餃<EFBFBD>ACR嚗<52><E59A97>甈⊿<E79488>閬<EFBFBD><E996AC>
docker login --username=gofeng117@163.com \
--password=fengzhibo117 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
# 2. <20>𤘪<EFBFBD>蝑?
docker tag backend-service:v1.4 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.4
# 3. <20>券<EFBFBD><E588B8><EFBFBD><EFBFBD>?
docker push \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.4
# 蝑匧<E89D91><E58CA7>券<EFBFBD><E588B8><EFBFBD><EFBFBD>琜<EFBFBD>蝥?0<><30><EFBFBD>嚗屸<E59A97><E5B1B8>讐漲838MB嚗?
# <20>见<EFBFBD> "digest: sha256:..." 銵函內<E587BD>𣂼<EFBFBD>
憸<EFBFBD>恣<EFBFBD>園𡢿嚗?0<><30><EFBFBD>
甇仿炊3嚗𡁜銁SAE<EFBFBD>湔鰵摨𠉛鍂嚗?<3F><><EFBFBD>嚗?
*<EFBFBD>孵<EFBFBD>1嚗阳eb<EFBFBD>批<EFBFBD><EFBFBD>堆<EFBFBD><EFBFBD>刻<EFBFBD>嚗?
- <EFBFBD>餃<EFBFBD>SAE嚗冴ttps://sae.console.aliyun.com/
- 餈𥕦<EFBFBD>摨𠉛鍂嚗䫤nodejs-backend-test`
- <EFBFBD>孵稬<EFBFBD>鞾<EFBFBD>蝵脣<EFBFBD><EFBFBD>具<EFBFBD>烐<EFBFBD><EFBFBD>?
- <EFBFBD>滨蔭<EFBFBD><EFBFBD>㺭嚗?
<EFBFBD>𨅯<EFBFBD><EFBFBD>啣<EFBFBD>: <EFBFBD>㗇𥋘 backend-service <EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>𧋦: <EFBFBD>㗇𥋘 v1.4 - <EFBFBD>孵稬<EFBFBD>鞟&霈扎<EFBFBD>?
- 蝑匧<EFBFBD><EFBFBD>函蔡摰峕<EFBFBD>嚗<EFBFBD>漲5-8<><38><EFBFBD>嚗?
<EFBFBD>孵<EFBFBD>2嚗𡁜𦶢隞方<EFBFBD>嚗<EFBFBD><EFBFBD>蝥改<EFBFBD>
# 雿輻鍂<E8BCBB>輸<EFBFBD>鈭飈LI
aliyun sae DeployApplication \
--AppId <摨𠉛鍂ID> \
--ImageUrl crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.4
憸<EFBFBD>恣<EFBFBD>園𡢿嚗?<3F><><EFBFBD><EFBFBD>滢<EFBFBD> + 5-8<><38><EFBFBD>蝑匧<E89D91><E58CA7>函蔡
甇仿炊4嚗𡁻<EFBFBD>霂<EFBFBD><EFBFBD>蝵莎<EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>嚗?
# 1. <20>亦<EFBFBD>摨𠉛鍂<F0A0899B>嗆<EFBFBD>?
# SAE<41>批<EFBFBD><E689B9>?<3F>?摰硺<E691B0><E7A1BA>函蔡 <20>?<3F>嗆<EFBFBD><E59786><EFBFBD>銝?"Running"
# 2. <20>亦<EFBFBD><E4BAA6>亙<EFBFBD>嚗<EFBFBD>&霈文鍳<E69687>冽<EFBFBD><E586BD><EFBFBD><EFBFBD>
# SAE<41>批<EFBFBD><E689B9>?<3F>?<3F>亙<EFBFBD><E4BA99>亥砭 <20>?摨磰砲<E7A3B0>见<EFBFBD>嚗?
# "<22><> AI銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱 - <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A>典鍳<E585B8>冽<EFBFBD><E586BD><EFBFBD><EFBFBD>"
# 3. <20>亙熒璉<E78692><E79289>?
curl http://172.17.173.73:3001/health
# <20>㚚<EFBFBD>朞<EFBFBD><E69C9E>祉<EFBFBD>
curl http://8.140.53.236/api/v1/health
# 4. <20>蠘<EFBFBD>瘚贝<E7989A>
# 霈輸䔮<E8BCB8>滨垢嚗冴ttp://8.140.53.236/
# 瘚贝<E7989A><E8B49D>湔鰵<E6B994><E9B0B5><EFBFBD><EFBFBD>?
憸<EFBFBD>恣<EFBFBD>園𡢿嚗?<3F><><EFBFBD>
摰峕㟲瘚<EFBFBD><EFBFBD><EFBFBD>園𡢿
| 甇仿炊 | <EFBFBD>滢<EFBFBD> | <EFBFBD>園𡢿 |
|---|---|---|
| 1 | <EFBFBD>砍𧑐<EFBFBD><EFBFBD>遣 | 5<EFBFBD><EFBFBD><EFBFBD> |
| 2 | <EFBFBD>券<EFBFBD><EFBFBD><EFBFBD><EFBFBD>? | 10<EFBFBD><EFBFBD><EFBFBD> |
| 3 | SAE<EFBFBD>函蔡 | 3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>滢<EFBFBD> + 5-8<><38><EFBFBD>蝑匧<E89D91> |
| 4 | 撉諹<EFBFBD> | 2<EFBFBD><EFBFBD><EFBFBD> |
| <EFBFBD>餉恣 | - | 20-25<32><35><EFBFBD> |
<EFBFBD>綫 銝剹<E98A9D><E589B9>凒<EFBFBD>啣<EFBFBD>蝡烤ginx嚗<78>活撣貊鍂嚗争<E59A97>潃鐥<E6BD83>潃?
甇仿炊1嚗𡁏𧋦<EFBFBD>唳<EFBFBD>撱綽<EFBFBD>10<EFBFBD><EFBFBD><EFBFBD>嚗?
# 餈𥕦<E9A488><F0A595A6>滨垢<E6BBA8>桀<EFBFBD>
cd D:\MyCursor\AIclinicalresearch\frontend-v2
# <20><>遣Docker<65>𨅯<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>砍噡<E7A08D>鍦<EFBFBD>嚗?
docker build -t ai-clinical_frontend-nginx:v1.1 .
# 瘜冽<E7989C>嚗鋽ockerfile隡朞䌊<E69C9E>冽<EFBFBD>銵?npm run build
憸<EFBFBD>恣<EFBFBD>園𡢿嚗?0<><30><EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>俘eact<63><74>遣嚗?
甇仿炊2嚗𡁏綫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>誩<EFBFBD>ACR嚗?<3F><><EFBFBD>嚗?
# 1. <20>𤘪<EFBFBD>蝑?
docker tag ai-clinical_frontend-nginx:v1.1 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.1
# 2. <20>券<EFBFBD><E588B8><EFBFBD><EFBFBD>?
docker push \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.1
# 蝑匧<E89D91><E58CA7>券<EFBFBD><E588B8><EFBFBD><EFBFBD>琜<EFBFBD>蝥?<3F><><EFBFBD>嚗屸<E59A97><E5B1B8>讐漲50MB嚗?
憸<EFBFBD>恣<EFBFBD>園𡢿嚗?<3F><><EFBFBD>
甇仿炊3嚗𡁜銁SAE<EFBFBD>湔鰵摨𠉛鍂嚗?<3F><><EFBFBD>嚗?
- <EFBFBD>餃<EFBFBD>SAE嚗冴ttps://sae.console.aliyun.com/
- 餈𥕦<EFBFBD>摨𠉛鍂嚗䫤frontend-nginx-service`
- <EFBFBD>孵稬<EFBFBD>鞾<EFBFBD>蝵脣<EFBFBD><EFBFBD>具<EFBFBD>?
- <EFBFBD>㗇𥋘<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>𧋦嚗䫤v1.1`
- 蝖株恕<EFBFBD>函蔡
憸<EFBFBD>恣<EFBFBD>園𡢿嚗?<3F><><EFBFBD><EFBFBD>滢<EFBFBD> + 3-5<><35><EFBFBD>蝑匧<E89D91>
甇仿炊4嚗𡁻<EFBFBD>霂<EFBFBD><EFBFBD>蝵莎<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>嚗?
# 霈輸䔮<E8BCB8>滨垢
open http://8.140.53.236/
# <20>?
curl http://8.140.53.236/
摰峕㟲<EFBFBD>園𡢿嚗𡁶漲15-20<32><30><EFBFBD>
<EFBFBD><EFBFBD> <20>䜘<EFBFBD><E49C98>凒<EFBFBD>訐ython敺格<E695BA><E6A0BC>∴<EFBFBD>颲<EFBFBD><E9A2B2><EFBFBD>剁<EFBFBD>潃鐥<E6BD83>潃?
甇仿炊1嚗𡁏𧋦<EFBFBD>唳<EFBFBD>撱綽<EFBFBD>15<EFBFBD><EFBFBD><EFBFBD>嚗?
# 餈𥕦<E9A488>Python<6F>滚𦛚<E6BB9A>桀<EFBFBD>
cd D:\MyCursor\AIclinicalresearch\extraction_service
# <20><>遣Docker<65>𨅯<EFBFBD>
docker build -t python-extraction:v1.1 .
憸<EFBFBD>恣<EFBFBD>園𡢿嚗?5<><35><EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>讛<EFBFBD>憭改<E686AD>
甇仿炊2嚗𡁏綫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧶏<EFBFBD>10<EFBFBD><EFBFBD><EFBFBD>嚗?
# <20>𤘪<EFBFBD>蝑?
docker tag python-extraction:v1.1 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.1
# <20>券<EFBFBD>?
docker push \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.1
憸<EFBFBD>恣<EFBFBD>園𡢿嚗?0<><30><EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>讐漲1.1GB嚗?
甇仿炊3嚗锭AE<EFBFBD>函蔡嚗?<3F><><EFBFBD>嚗?
- 餈𥕦<EFBFBD>摨𠉛鍂嚗䫤python-extraction-test`
- <EFBFBD>函蔡<EFBFBD>啁<EFBFBD><EFBFBD>穿<EFBFBD>
v1.1
摰峕㟲<EFBFBD>園𡢿嚗𡁶漲30<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>辷<EFBFBD> 鈭𢛵<E988AD><F0A29BB5>耨<EFBFBD>寧㴓憓<E3B493><E68693><EFBFBD>𧶏<EFBFBD>擃㗛<E69383><E3979B>滢<EFBFBD>嚗争<E59A97>潃鐥<E6BD83>潃鐥<E6BD83>
<EFBFBD>喲睸閫<EFBFBD><EFBFBD>
**<2A>𩤃<EFBFBD> <20>滩<EFBFBD>**嚗帋耨<E5B88B>寧㴓憓<E3B493><E68693><EFBFBD>𤩺𧒄嚗䔶蝙<E494B6>具<EFBFBD>鞾<EFBFBD><E99EBE>臬<EFBFBD><E887AC>具<EFBFBD>𡢅<EFBFBD>銝滩<E98A9D><E6BBA9>具<EFBFBD>鞾<EFBFBD>蝵脣<E89DB5><E884A3>具<EFBFBD>𡢅<EFBFBD>
| <EFBFBD>滢<EFBFBD> | <EFBFBD>券<EFBFBD>? | IP<EFBFBD>臬炏<EFBFBD>? |
|---|---|---|
| <EFBFBD>滚鍳摨𠉛鍂 <20>? | 靽格㺿<EFBFBD>滨蔭 | <EFBFBD>?銝滢<E98A9D><E6BBA2>? |
| <EFBFBD>函蔡摨𠉛鍂 <20>? | <EFBFBD>湔鰵<EFBFBD>𨅯<EFBFBD> | <EFBFBD>?隡𡁜<E99AA1><F0A1819C>? |
<EFBFBD>滢<EFBFBD>甇仿炊嚗?<3F><><EFBFBD>嚗?
- <EFBFBD>餃<EFBFBD>SAE嚗冴ttps://sae.console.aliyun.com/
- 餈𥕦<EFBFBD>撖孵<EFBFBD>摨𠉛鍂嚗<EFBFBD><EFBFBD>
nodejs-backend-test嚗? - <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>臬<EFBFBD><EFBFBD>具<EFBFBD>𡢅<EFBFBD><EFBFBD>𩤃<EFBFBD> 銝齿糓"<22>函蔡摨𠉛鍂"嚗<><E59A97>
- 蝑匧<EFBFBD><EFBFBD>滚鍳摰峕<EFBFBD>嚗<EFBFBD>漲2-3<><33><EFBFBD>嚗?
撣貊鍂<EFBFBD>臬<EFBFBD><EFBFBD>㗛<EFBFBD><EFBFBD><EFBFBD>䰻
**Node.js<6A>𡒊垢<F0A1928A>喲睸<E596B2>㗛<EFBFBD>**嚗?
# Python<6F>滚𦛚<E6BB9A>啣<EFBFBD>嚗<EFBFBD><E59A97>儭?<3F>㗛<EFBFBD><E3979B>滚<EFBFBD>憿餌移蝖殷<E89D96>嚗?
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
# <20>唳旿摨栞<E691A8><E6A09E>?
DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research
# LLM API撖<49>𤨎
DEEPSEEK_API_KEY=sk-...
DASHSCOPE_API_KEY=sk-...
**<2A>滨垢Nginx<6E>喲睸<E596B2>㗛<EFBFBD>**嚗?
# <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A>啣<EFBFBD>
BACKEND_SERVICE_HOST=172.17.173.73
BACKEND_SERVICE_PORT=3001
**摰峕㟲<E5B395>臬<EFBFBD><E887AC>㗛<EFBFBD>皜<EFBFBD><E79A9C>**嚗?
- <EFBFBD>亦<EFBFBD>
11-Node.js<6A>𡒊垢-SAE<41>函蔡<E587BD>滨蔭皜<E894AD><E79A9C>.md
<EFBFBD><EFBFBD> <20>准<EFBFBD><E58786>䰻<EFBFBD>𧢲𠯫敹梹<E695B9><E6A2B9>亙虜餈鞟輕嚗争<E59A97>潃鐥<E6BD83>潃?
SAE<EFBFBD>批<EFBFBD><EFBFBD>唳䰻<EFBFBD>?
- <EFBFBD>餃<EFBFBD>SAE嚗冴ttps://sae.console.aliyun.com/
- 餈𥕦<EFBFBD>撖孵<EFBFBD>摨𠉛鍂
- <EFBFBD>孵稬<EFBFBD>鞉𠯫敹埈䰻霂U<EFBFBD>?
- <EFBFBD>㗇𥋘<EFBFBD>園𡢿<EFBFBD><EFBFBD>凒
- <EFBFBD>亦<EFBFBD>摰墧𧒄<EFBFBD>亙<EFBFBD>
撣貊鍂<EFBFBD>亙<EFBFBD><EFBFBD>喲睸摮?
甇<EFBFBD>虜<EFBFBD>臬𢆡嚗?
# Node.js<6A>𡒊垢
"<22><> AI銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱 - <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A>典鍳<E585B8>冽<EFBFBD><E586BD><EFBFBD><EFBFBD>"
"Server listening at http://172.17.173.73:3001"
# Python<6F>滚𦛚
"Uvicorn running on http://0.0.0.0:8000"
"Application startup complete"
# <20>滨垢Nginx
"Starting Frontend Nginx Service"
"Backend Service: 172.17.173.73:3001"
撣貉<EFBFBD><EFBFBD>躰秤嚗?
# <20>臬<EFBFBD><E887AC>㗛<EFBFBD><E3979B>桅<EFBFBD>
"EXTRACTION_SERVICE_URL"
"connect ECONNREFUSED"
# <20>唳旿摨栞<E691A8><E6A09E>仿䔮憸?
"Can't reach database server"
"Connection timeout"
# <20>𨅯<EFBFBD><F0A885AF>桅<EFBFBD>
"ENOENT: no such file or directory"
"Error: unable to determine transport target"
<EFBFBD><EFBFBD> 銝<><E98A9D><EFBFBD><EFBFBD>皛𡁏<E79A9B>雿頣<E99BBF>蝝扳<E89D9D>交<EFBFBD><E4BAA4>蛛<EFBFBD>潃鐥<E6BD83>潃?
隞<EFBFBD>銋<EFBFBD>𧒄<EFBFBD>䠷<EFBFBD>閬<EFBFBD><EFBFBD>皛𡄯<EFBFBD>
- <EFBFBD>?<3F>啁<EFBFBD><E59581>祆<EFBFBD>銝仿<E98A9D>Bug
- <EFBFBD>?<3F>蠘<EFBFBD>銝滨泵<E6BBA8><E6B3B5><EFBFBD><EFBFBD>?
- <EFBFBD>?<3F>扯<EFBFBD>銝钅<E98A9D><E99285>擧遬
<EFBFBD>墧<EFBFBD>甇仿炊嚗?<3F><><EFBFBD>嚗?
- <EFBFBD>餃<EFBFBD>SAE嚗冴ttps://sae.console.aliyun.com/
- 餈𥕦<EFBFBD>撖孵<EFBFBD>摨𠉛鍂
- <EFBFBD>孵稬<EFBFBD>鞾<EFBFBD>蝵脣<EFBFBD><EFBFBD>具<EFBFBD>?
- <EFBFBD>㗇𥋘<EFBFBD>抒<EFBFBD><EFBFBD>砍噡嚗<EFBFBD><EFBFBD> v1.3嚗?
- 蝖株恕<EFBFBD>函蔡
- 蝑匧<EFBFBD><EFBFBD>墧<EFBFBD>摰峕<EFBFBD>嚗<EFBFBD>漲5<EFBFBD><EFBFBD><EFBFBD>嚗?
撉諹<EFBFBD><EFBFBD>墧<EFBFBD>
# <20>亦<EFBFBD><E4BAA6>亙<EFBFBD>嚗𣬚&霈斤<E99C88><E696A4>?
# <20>𤥁挪<F0A4A581>桀<EFBFBD><E6A180>剁<EFBFBD>瘚贝<E7989A><E8B49D>蠘<EFBFBD>
<EFBFBD>㴓 <20>怒<EFBFBD><E68092><EFBFBD><EFBFBD>格凒<E6A0BC>啗<EFBFBD><E59597>穿<EFBFBD>擃条漣嚗?
銝摸ode.js<6A>𡒊垢<F0A1928A>𥕦遣<F0A595A6>湔鰵<E6B994>𡁏𧋦
<EFBFBD>𥕦遣<EFBFBD><EFBFBD>辣嚗䫤backend/update-and-deploy.ps1`
# Node.js<6A>𡒊垢銝<E59EA2><E98A9D>格凒<E6A0BC>啗<EFBFBD><E59597>?
# 雿輻鍂<E8BCBB>寞<EFBFBD>: .\update-and-deploy.ps1 v1.5
param(
[Parameter(Mandatory=$true)]
[string]$Version
)
Write-Host "========================================" -ForegroundColor Green
Write-Host "撘<>憪𧢲凒<F0A7A2B2>衹ode.js<6A>𡒊垢<F0A1928A>啁<EFBFBD><E59581>? $Version" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green
# 1. 蝻𤥁<E89DBB>TypeScript
Write-Host "`n[1/4] 蝻𤥁<E89DBB>TypeScript..." -ForegroundColor Cyan
npm run build
if ($LASTEXITCODE -ne 0) {
Write-Host "<22>?蝻𤥁<E89DBB>憭梯揖嚗? -ForegroundColor Red
exit 1
}
Write-Host "<EFBFBD>?蝻𤥁<EFBFBD><EFBFBD>𣂼<EFBFBD>嚗? -ForegroundColor Green
# 2. <20><>遣Docker<65>𨅯<EFBFBD>
Write-Host "`n[2/4] <20><>遣Docker<65>𨅯<EFBFBD>..." -ForegroundColor Cyan
docker build -t backend-service:$Version .
if ($LASTEXITCODE -ne 0) {
Write-Host "<22>?<3F><>遣憭梯揖嚗? -ForegroundColor Red
exit 1
}
Write-Host "<EFBFBD>?<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>遣<EFBFBD>𣂼<EFBFBD>嚗? -ForegroundColor Green
# 3. <20>𤘪<EFBFBD>蝑?
Write-Host "`n[3/4] <20>𤘪<EFBFBD>蝑?.." -ForegroundColor Cyan
$ImageUrl = "crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:$Version"
docker tag backend-service:$Version $ImageUrl
Write-Host "<22>?<3F><>倌撌脫<E6928C>嚗? -ForegroundColor Green
# 4. <20>券<EFBFBD><E588B8><EFBFBD>ACR
Write-Host "`n[4/4] <EFBFBD>券<EFBFBD><EFBFBD><EFBFBD>ACR..." -ForegroundColor Cyan
Write-Host "<EFBFBD>券<EFBFBD><EFBFBD>𧑐<EFBFBD><EFBFBD>: $ImageUrl" -ForegroundColor Yellow
docker push $ImageUrl
if ($LASTEXITCODE -ne 0) {
Write-Host "<EFBFBD>?<EFBFBD>券<EFBFBD><EFBFBD>仃韐伐<EFBFBD>" -ForegroundColor Red
exit 1
}
Write-Host "`n========================================" -ForegroundColor Green
Write-Host "<EFBFBD>?<EFBFBD>𨅯<EFBFBD>撌脫綫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green
Write-Host "`n銝衤<EFBFBD>甇交<EFBFBD>雿頣<EFBFBD>" -ForegroundColor Yellow
Write-Host "1. <EFBFBD>餃<EFBFBD>SAE<EFBFBD>批<EFBFBD><EFBFBD>? https://sae.console.aliyun.com/" -ForegroundColor Yellow
Write-Host "2. 餈𥕦<EFBFBD>摨𠉛鍂: nodejs-backend-test" -ForegroundColor Yellow
Write-Host "3. <EFBFBD>孵稬<EFBFBD>鞾<EFBFBD>蝵脣<EFBFBD><EFBFBD>具<EFBFBD>? -ForegroundColor Yellow
Write-Host "4. <20>㗇𥋘<E39787>𨅯<EFBFBD><F0A885AF><EFBFBD>𧋦: $Version" -ForegroundColor Yellow
Write-Host "5. 蝖株恕<E6A0AA>函蔡" -ForegroundColor Yellow
Write-Host "`n<EFBFBD>𨅯<EFBFBD><EFBFBD>啣<EFBFBD>嚗ĀPC嚗?" -ForegroundColor Cyan
Write-Host "crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:$Version" -ForegroundColor Cyan
**雿輻鍂<E8BCBB>寞<EFBFBD>**嚗?
cd D:\MyCursor\AIclinicalresearch\backend
.\update-and-deploy.ps1 v1.5
銝箏<EFBFBD>蝡臬<EFBFBD>撱箸凒<EFBFBD>啗<EFBFBD><EFBFBD>?
<EFBFBD>𥕦遣<EFBFBD><EFBFBD>辣嚗䫤frontend-v2/update-and-deploy.ps1`
# <20>滨垢Nginx銝<78><E98A9D>格凒<E6A0BC>啗<EFBFBD><E59597>?
param(
[Parameter(Mandatory=$true)]
[string]$Version
)
Write-Host "撘<>憪𧢲凒<F0A7A2B2>啣<EFBFBD>蝡烤ginx<6E>啁<EFBFBD><E59581>? $Version" -ForegroundColor Green
# 1. <20><>遣<EFBFBD>𨅯<EFBFBD>
docker build -t ai-clinical_frontend-nginx:$Version .
# 2. <20>𤘪<EFBFBD>蝑曉僎<E69B89>券<EFBFBD>?
$ImageUrl = "crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:$Version"
docker tag ai-clinical_frontend-nginx:$Version $ImageUrl
docker push $ImageUrl
Write-Host "<22>?摰峕<E691B0>嚗<EFBFBD>窈<EFBFBD>沒AE<41>批<EFBFBD><E689B9>圈<EFBFBD>蝵脩<E89DB5><E884A9>? $Version" -ForegroundColor Green
<EFBFBD><EFBFBD> 銋腈<E98A8B><E88588>虜<EFBFBD>冽<EFBFBD>雿𨀣𧒄<F0A880A3>港摯蝞?
| <EFBFBD>滢<EFBFBD> | <EFBFBD>滢<EFBFBD><EFBFBD>園𡢿 | 蝑匧<EFBFBD><EFBFBD>園𡢿 | <EFBFBD>餉恣 |
|---|---|---|---|
| <EFBFBD>湔鰵Node.js<6A>𡒊垢 | 5<EFBFBD><EFBFBD><EFBFBD> | 15-20<32><30><EFBFBD> | 20-25<32><35><EFBFBD> |
| <EFBFBD>湔鰵<EFBFBD>滨垢Nginx | 3<EFBFBD><EFBFBD><EFBFBD> | 12-18<31><38><EFBFBD> | 15-20<32><30><EFBFBD> |
| <EFBFBD>湔鰵Python<EFBFBD>滚𦛚 | 3<EFBFBD><EFBFBD><EFBFBD> | 25-30<33><30><EFBFBD> | 30<EFBFBD><EFBFBD><EFBFBD> |
| 靽格㺿<EFBFBD>臬<EFBFBD><EFBFBD>㗛<EFBFBD> | 2<EFBFBD><EFBFBD><EFBFBD> | 2-3<><33><EFBFBD> | 5<EFBFBD><EFBFBD><EFBFBD> |
| <EFBFBD>亦<EFBFBD><EFBFBD>亙<EFBFBD> | 1<EFBFBD><EFBFBD><EFBFBD> | 0 | 1<EFBFBD><EFBFBD><EFBFBD> |
| <EFBFBD>墧<EFBFBD><EFBFBD><EFBFBD>𧋦 | 2<EFBFBD><EFBFBD><EFBFBD> | 5<EFBFBD><EFBFBD><EFBFBD> | 7<EFBFBD><EFBFBD><EFBFBD> |
<EFBFBD>𩤃<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>格釣<E6A0BC>譍<EFBFBD>憿?
1. <20>臬<EFBFBD><E887AC>㗛<EFBFBD><E3979B>滚<EFBFBD>憿餌移蝖?
# <20>?<3F>躰秤
PYTHON_SERVICE_URL=http://172.17.173.66:8000
# <20>?甇<>&
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
<EFBFBD>躰悌嚗𡁶㴓憓<EFBFBD><EFBFBD><EFBFBD>誩<EFBFBD>敹<EFBFBD>◆銝𦒘誨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>其<EFBFBD><EFBFBD>湛<EFBFBD>
2. <20>滚鍳 vs <20>函蔡
靽格㺿<EFBFBD>滨蔭 <20>?<3F>滚鍳摨𠉛鍂嚗㇆P銝滚<E98A9D>嚗争<E59A97>
<0A>湔鰵隞<E9B0B5><E99A9E> <20>?<3F>函蔡摨𠉛鍂嚗㇆P<E38786>航<EFBFBD><E888AA>矋<EFBFBD><E79F8B>𩤃<EFBFBD>
撱箄悅嚗𡁜偷<EFBFBD>譍蝙<EFBFBD>冽<EFBFBD><EFBFBD>∪<EFBFBD><EFBFBD>唬誨<EFBFBD>輻′蝻𣇉<EFBFBD>IP
3. 雿輻鍂VPC<50>啣<EFBFBD><E595A3>匧<EFBFBD><E58CA7>𨅯<EFBFBD>
# SAE<41>函蔡<E587BD>園<EFBFBD>㗇𥋘VPC<50>啣<EFBFBD>嚗<EFBFBD><E59A97>瘚<EFBFBD><E7989A>韐對<E99F90>
crpi-xxx-vpc.cn-beijing.personal.cr.aliyuncs.com/...
# <20>砍𧑐<E7A08D>券<EFBFBD><E588B8>𧒄雿輻鍂<E8BCBB>祉<EFBFBD><E7A589>啣<EFBFBD>
crpi-xxx.cn-beijing.personal.cr.aliyuncs.com/...
4. <20><>𧋦<EFBFBD>瑞恣<E7919E>?
**撱箄悅閫<E68285><E996AB>**嚗?
v1.0 - 擐𡝗活<F0A19D97>函蔡
v1.1 - 撠誩<E692A0><E8AAA9>賣凒<E8B3A3>?
v1.2 - 撠誩<E692A0><E8AAA9>賣凒<E8B3A3>?
v2.0 - <20>滚之<E6BB9A><E4B98B>𧋦<EFBFBD><F0A78BA6>漣
霈啣<EFBFBD><EFBFBD><EFBFBD>𧋦嚗𡁜銁 00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md 銝剜凒<E5899C>啁<EFBFBD><E59581>砍噡
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>虜閫<E8999C>䔮憸?
Q1嚗𡁏綫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>誩仃韐伐<EFBFBD>
<EFBFBD>啗情嚗䫤denied: requested access to the resource is denied`
**閫<><E996AB>**嚗?
# <20>齿鰵<E9BDBF>餃<EFBFBD>ACR
docker login --username=gofeng117@163.com \
--password=fengzhibo117 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
Q2嚗锭AE<EFBFBD>函蔡憭梯揖嚗?
甇仿炊嚗?
- <EFBFBD>亦<EFBFBD>摰硺<EFBFBD><EFBFBD>亙<EFBFBD>嚗峕𪄳<EFBFBD>啣<EFBFBD>雿㯄<EFBFBD>霂?
- <EFBFBD><EFBFBD><EFBFBD>?
15-Node.js<6A>𡒊垢-<2D>函蔡<E587BD>𣂼<EFBFBD><F0A382BC>餌<EFBFBD>.md - 璉<EFBFBD><EFBFBD>亦㴓憓<EFBFBD><EFBFBD><EFBFBD>誯<EFBFBD>蝵?
- 撉諹<EFBFBD><EFBFBD>𨅯<EFBFBD><EFBFBD>臬炏<EFBFBD>券<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
Q3嚗𡁜<EFBFBD><EFBFBD>賣凒<EFBFBD>啣<EFBFBD>銝滨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
**<2A>航<EFBFBD><E888AA>笔<EFBFBD>**嚗?
- 瘚讛<EFBFBD><EFBFBD>函<EFBFBD>摮矋<EFBFBD>Ctrl+F5撘箏<E69298><E7AE8F>瑟鰵嚗?
- SAE<EFBFBD>函蔡<EFBFBD>芸<EFBFBD><EFBFBD>?
- <EFBFBD><EFBFBD>𧋦<EFBFBD>琿<EFBFBD>㗇𥋘<EFBFBD>躰秤
Q4嚗䥑P<EFBFBD>啣<EFBFBD><EFBFBD>䀹凒鈭<EFBFBD><EFBFBD>𦒘<EFBFBD><EFBFBD>痹<EFBFBD>
甇仿炊嚗?
- 霈啣<EFBFBD><EFBFBD>啁<EFBFBD>IP<EFBFBD>啣<EFBFBD>
- <EFBFBD>湔鰵靘肽<EFBFBD>霂付P<EFBFBD><EFBFBD><EFBFBD><EFBFBD>∠<EFBFBD><EFBFBD>臬<EFBFBD><EFBFBD>㗛<EFBFBD>
- <EFBFBD>滚鍳<EFBFBD>詨<EFBFBD><EFBFBD>滚𦛚
- <EFBFBD>湔鰵<EFBFBD><EFBFBD>﹝
00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>閬<EFBFBD>葬<EFBFBD>抬<EFBFBD>
霂衣<EFBFBD><EFBFBD><EFBFBD>﹝<EFBFBD><EFBFBD><EFBFBD>?
- 摰峕㟲<EFBFBD>函蔡嚗䫤17-摰峕㟲<E5B395>函蔡摰墧<E691B0><E5A2A7>见<EFBFBD>-2025<32>?md`
- 韏<EFBFBD><EFBFBD><EFBFBD>亥砭嚗䫤00-<2D>函蔡餈𥕦漲<F0A595A6>餉<EFBFBD>.md`
- <EFBFBD>桅<EFBFBD><EFBFBD>埝䰻嚗䫤15-Node.js<6A>𡒊垢-<2D>函蔡<E587BD>𣂼<EFBFBD><F0A382BC>餌<EFBFBD>.md`
- **<2A><>﹝撖潸⏛**嚗䫤README.md
<20>?18-<2D>函蔡<E587BD><E894A1>﹝雿輻鍂<E8BCBB><E98D82><EFBFBD>.md`
<EFBFBD>㴓 <20>餌<EFBFBD>
<EFBFBD>亙虜<EFBFBD><EFBFBD>撣貊鍂<EFBFBD>?銝芣<E98A9D>雿?
- <EFBFBD>湔鰵Node.js<6A>𡒊垢嚗?0-25<32><35><EFBFBD>嚗?
- **靽格㺿<E6A0BC>臬<EFBFBD><E887AC>㗛<EFBFBD>**嚗?<3F><><EFBFBD>嚗?
- **<2A>亦<EFBFBD><E4BAA6>亙<EFBFBD>**嚗?<3F><><EFBFBD>嚗?
霈唬<EFBFBD>3銝芸<EFBFBD><EFBFBD>桃<EFBFBD>
- <EFBFBD>?**<2A><>𧋦<EFBFBD>琿<EFBFBD>鍦<EFBFBD>**嚗鯝1.3 <20>?v1.4 <20>?v1.5
- <EFBFBD>?*靽格㺿<EFBFBD>滨蔭<EFBFBD>券<EFBFBD><EFBFBD>荔<EFBFBD><EFBFBD>湔鰵隞<EFBFBD><EFBFBD><EFBFBD>券<EFBFBD>蝵?
- <EFBFBD>?雿輻鍂VPC<EFBFBD>啣<EFBFBD><EFBFBD>匧<EFBFBD><EFBFBD>𨅯<EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>梧<EFBFBD>
銝<EFBFBD><EFBFBD>亥<EFBFBD><EFBFBD>餌<EFBFBD>
蝻𤥁<EFBFBD> <20>?<3F><>遣 <20>?<3F>券<EFBFBD>?<3F>?<3F>函蔡 <20>?撉諹<E69289>嚗?0<><30><EFBFBD><EFBFBD>𧼮<EFBFBD>嚗<EFBFBD><E59A97>
**<2A><><EFBFBD>擧凒<E693A7>?*嚗?025-12-25
**蝏湔擪鈭箏<E988AD>**嚗𡁜<E59A97><F0A1819C>穃𣪧<E7A983>? **雿輻鍂<E8BCBB>漤<EFBFBD>**嚗朞窈<E69C9E>𦠜𧒄<F0A6A09C>湔鰵<E6B994>祆<EFBFBD>獢?
*蟡脲<EFBFBD><EFBFBD>湔鰵憿箏⏚嚗? <20><>