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%)
This commit is contained in:
2026-01-14 19:15:01 +08:00
parent 3d35e9c58b
commit 1b53ab9d52
386 changed files with 52096 additions and 65238 deletions

View File

@@ -1,19 +1,19 @@
# REDCap Docker <20>砍𧑐<E7A08D>函蔡<E587BD><EFBFBD><EFBFBD><E996AB>霈啣<E99C88>
**日期:** 2026-01-02
**版本:** REDCap 15.8.0
**环境:** Windows 10 + Docker Desktop + Docker Compose
**<EFBFBD><EFBFBD>嚗?* 2026-01-02
**<EFBFBD><EFBFBD>𧋦嚗?* REDCap 15.8.0
**<EFBFBD><EFBFBD>嚗?* Windows 10 + Docker Desktop + Docker Compose
---
## <20><> <20>函蔡<E587BD>𣂼<EFBFBD>蝖株恕
**REDCap 15.8.0 已成功部署在本地Docker环境**
<EFBFBD>?**REDCap 15.8.0 撌脫<EFBFBD><EFBFBD><EFBFBD>蝵脣銁<EFBFBD>砍𧑐Docker<EFBFBD><EFBFBD>**
- **访问地址:** http://localhost:8080/
- **霈輸䔮<EFBFBD><EFBFBD>嚗?* http://localhost:8080/
- **蝞∠<E89D9E><E288A0>䁅揭<E48185><EFBFBD>** Admin / Admin123!
- **数据库:** MySQL 8.0Docker容器)
- **PHPMyAdmin** http://localhost:8081/
- **<EFBFBD>唳旿摨橒<EFBFBD>** MySQL 8.0嚗㇄ocker摰孵膥嚗?
- **PHPMyAdmin嚗?* http://localhost:8081/
---
@@ -21,25 +21,25 @@
### <20><EFBFBD>1嚗鍃RR_CONTENT_DECODING_FAILED
**现象:**
**<EFBFBD>啗情嚗?*
- 瘚讛<E7989A><E8AE9B>刻挪<E588BB>娜EDCap擐㚚△<E39A9A>嗆𥁒<E59786><EFBFBD>`net::ERR_CONTENT_DECODING_FAILED 200 (OK)`
- CSS/JS韏<53><E99F8F><EFBFBD>㰘蝸憭梯揖
**根本原因:**
**<EFBFBD>寞𧋦<EFBFBD><EFBFBD>嚗?*
1. Apache<68><65>mod_deflate`璅<E79285>銝窰HP<48><50>zlib.output_compression`<EFBFBD><EFBFBD>
2. REDCap源码中动态启用了压缩(`System.php``general_settings.php`中的`ini_set`
3. 导致数据被多次压缩,浏览器无法解码
2. REDCap皞鞟<EFBFBD>銝剖𢆡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>讠憬嚗ǑSystem.php`<EFBFBD><EFBFBD>general_settings.php`銝剔<EFBFBD>`ini_set`嚗?
3. 撖潸稲<EFBFBD>唳旿鋡怠<EFBFBD><EFBFBD>蝻抬<EFBFBD>瘚讛<EFBFBD><EFBFBD><EFBFBD>瘜閗圾<EFBFBD>?
**解决方案:**
1. ✅ 在`docker-entrypoint.sh`中强制禁用Apache的deflate模块:`a2dismod -f deflate`
2. ✅ 在`php.ini`中显式关闭压缩:
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?*
1. <EFBFBD>?<3F>docker-entrypoint.sh`銝剖撩<E58996><EFBFBD><E597A5>pache<EFBFBD><EFBFBD>eflate<EFBFBD>嚗䫤a2dismod -f deflate`
2. <EFBFBD>?<3F>php.ini`銝剜遬撘誩<EFBFBD><EFBFBD><EFBFBD>蝻抬<EFBFBD>
```ini
zlib.output_compression = Off
output_buffering = Off
```
3. ✅ 在`docker-entrypoint.sh`中自动注释REDCap源码中的`ini_set('zlib.output_compression', ...)`
3. <EFBFBD>?<3F>docker-entrypoint.sh`銝剛䌊<EFBFBD>冽釣<EFBFBD>䟕EDCap皞鞟<EFBFBD>銝剔<EFBFBD>`ini_set('zlib.output_compression', ...)`
**预防措施:**
**<EFBFBD><EFBFBD>芣鴌嚗?*
- 撌脣銁`redcap.conf`銝剜釣<EFBFBD>𦠜<EFBFBD>`mod_deflate`<EFBFBD>滨蔭
-<><E69298>𤑳㴓憓<E3B493><E68693><EFBFBD><EFBFBD><EFBFBD>zip<69>讠憬嚗<E686AC><EFBFBD><EFBFBD><EFBFBD><E99D9A><EFBFBD><EFBFBD><EFBFBD>
@@ -47,54 +47,54 @@
### <20><EFBFBD>2嚗鋳ase URL<52>滨蔭<E6BBA8>躰秤
**现象:**
**<EFBFBD>啗情嚗?*
- CSS/JS<4A><53>辣頝臬<E9A09D><E887AC><EFBFBD>鉄憭帋<E686AD><E5B88B><EFBFBD>/redcap/`<60><EFBFBD>
- 靘见<E99D98>嚗䫤http://localhost:8080/redcap/redcap_v15.8.0/Resources/...`
- 撖潸稲404<30>躰秤
**根本原因:**
**<EFBFBD>寞𧋦<EFBFBD><EFBFBD>嚗?*
- REDCap<61>唳旿摨㯄<E691A8>蝵株”`redcap_config`銝剔<EFBFBD>`redcap_base_url`霈曄蔭銝槁http://localhost:8080/redcap`
-<>pache<68><65>DocumentRoot`摰鮋<E691B0><E9AE8B><EFBFBD><EFBFBD>`/var/www/html/redcap_v15.8.0`
**解决方案:**
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?*
```sql
UPDATE redcap_config
SET value = 'http://localhost:8080'
WHERE field_name = 'redcap_base_url';
```
**预防措施:**
- 在安装向导或SQL导入时确保Base URL与DocumentRoot一致
**<EFBFBD><EFBFBD>芣鴌嚗?*
- <20><EFBFBD><EFBFBD><E98B86>撖潭<E69296>SQL撖澆<E69296><E6BE86>靽𨈚ase URL銝𥟠ocumentRoot<EFBFBD><EFBFBD>?
---
### 问题3登录失败 - 响应数据无法加载
### <EFBFBD><EFBFBD>3嚗𡁶蒈敶訫仃韐?- <20><EFBFBD><E6BB9A>唳旿<E594B3><EFBFBD><E4ADBE>㰘蝸
**现象:**
- 输入正确的用户名密码后,页面不跳转
**<EFBFBD>啗情嚗?*
- 颲枏<E9A2B2><EFBFBD><EFBFBD><EFBC86><EFBFBD><EFBFBD><EFBFBD><E69296><EFBFBD>𠬍<EFBFBD>憿菟𢒰銝滩歲頧?
- Network<72><EFBCB8>曄內POST霂瑟<E99C82>餈𥪜<E9A488>200嚗䔶<E59A97>"<22><EFBFBD><E4ADBE>㰘蝸<E3B098><EFBFBD><E6BB9A>唳旿"
**根本原因:**
- **`database.php`文件末尾有`?>`PHP结束标签和空行**
**<EFBFBD>寞𧋦<EFBFBD><EFBFBD>嚗?*
- **`database.php`<EFBFBD><EFBFBD><EFBFBD>怠偏<EFBFBD>?>`PHP蝏𤘪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣬚征銵?*
- Windows蝟餌<E89D9F><E9A48C><EFBFBD>RLF<4C><EFBFBD>蝚西◤颲枏枂<E69E8F>蚜TTP<54><EFBFBD>
- 导致响应体污染,浏览器无法解析
- 撖潸稲<E6BDB8><EFBFBD>雿𤘪情<F0A498AA><EFBFBD>瘚讛<E7989A><E8AE9B><EFBFBD>瘜閗圾<E99697>?
**详细分析:**
**霂衣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?*
```bash
# database.php末尾的十六进制内容
# database.php<EFBFBD>怠偏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摰?
00000050: e585 a80d 0a20 2a2f 0d0a 0d0a 3f3e 0d0a ..... */....?>..
00000060: 0d0a 0d0a ....
# `*/` CRLF CRLF `?>` CRLF CRLF CRLF
```
**解决方案:**
1. ✅ **删除`database.php`末尾的`?>`和所有空行**
2. ✅ **创建`.gitattributes`强制PHP文件使用LF换行符**
3. ✅ **在`docker-entrypoint.sh`中添加检查逻辑(警告提示)**
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?*
1. <20>?**<2A>𣳇膄`database.php`<EFBFBD>怠偏<EFBFBD><EFBFBD>?>`<60><EFBFBD><E5B395>厩征銵?*
2. <20>?**<2A>𥕦遣`.gitattributes`撘箏<EFBFBD>PHP<EFBFBD><EFBFBD>辣雿輻鍂LF<EFBFBD><EFBFBD>蝚?*
3. <20>?**<2A>docker-entrypoint.sh`銝剜溶<E5899C><EFBFBD><E4ADBE>仿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𦠜<EFBFBD>蝷綽<E89DB7>**
**PHP<48><50>雿喳<E99BBF>頝蛛<E9A09D>**
- <20><> **<EFBFBD>滨蔭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>怠偏銝滚<EFBFBD>霂亙<EFBFBD>`?>`**
- 📌 这是PHP官方推荐用于防止末尾空行污染输出
- <20><> 餈蹱糓PHP摰䀹䲮<E480B9><EFBFBD>嚗𣬚鍂鈭𡡞俈甇錰撠曄征銵峕情<E5B395><EFBFBD><E6A09E>?
- <20><> REDCap摰䀹䲮皞鞟<E79A9E><E99E9F><EFBFBD>敺芣迨閫<E8BFA8><E996AB>
---
@@ -103,7 +103,7 @@ WHERE field_name = 'redcap_base_url';
### 撖<><E69296><EFBFBD>滨蔭撌亙<E6928C>
创建了`scripts/create-redcap-password.php`用于重置REDCap用户密码
<EFBFBD>𥕦遣鈭<EFBFBD>scripts/create-redcap-password.php`嚗𣬚鍂鈭𡡞<EFBFBD>蝵娜EDCap<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?
```bash
# 雿輻鍂<E8BCBB><EFBFBD>
@@ -111,54 +111,54 @@ docker cp scripts/create-redcap-password.php redcap-apache:/tmp/
docker exec redcap-apache php /tmp/create-redcap-password.php
```
**注意:** 此脚本仅用于开发环境!生产环境应禁用。
**瘜冽<EFBFBD>嚗?* 甇方<E79487><E696B9><EFBFBD><E7A08C><EFBFBD><EFBFBD><E69298>𤑳㴓憓<E3B493><E68693><EFBFBD>煺漣<E785BA><EFBFBD>摨𠉛<E691A8><F0A0899B><EFBFBD>?
---
## ✅ 最终确认
## <EFBFBD>?<3F><><EFBFBD>霈?
### REDCap蝟餌<E89D9F><E9A48C><EFBFBD><E887AC><EFBFBD>
**重要结论:**
1. **REDCap官方源码15.8.0版本数千个PHP文件都是规范的**
2. ✅ **官方文件末尾都没有`?>`不存在CRLF污染问题**
3. ✅ **问题仅存在于我们创建的配置文件`database.php`**
4. ✅ **一旦修复,不会有其他类似问题**
**<EFBFBD><EFBFBD>蝏栞捏嚗?*
1. <EFBFBD>?**REDCap摰䀹䲮皞鞟<EFBFBD>嚗?5.8.0<EFBFBD><EFBFBD>𧋦嚗峕㺭<EFBFBD><EFBFBD>葵PHP<EFBFBD><EFBFBD>辣嚗厰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
2. <EFBFBD>?**摰䀹䲮<E480B9><E4B2AE><EFBFBD>怠偏<E680A0>賣瓷<E8B3A3>头?>`嚗䔶<EFBFBD>摮睃銁CRLF瘙⊥<EFBFBD><EFBFBD><EFBFBD>**
3. <20>?**<2A><EFBFBD><EFBFBD><E99A9E><EFBFBD><EFBFBD><E585B6>睲賑<E79DB2>𥕦遣<F0A595A6><E981A3><EFBFBD>蝵格<E89DB5>隞跆database.php`**
4. <20>?**銝<><E98A9D>虫耨憭㵪<E686AD>銝滢<E98A9D><E6BBA2><EFBFBD>隞𣇉掩隡潮䔮憸?*
**验证证据:**
**撉諹<EFBFBD><EFBFBD>旿嚗?*
```bash
# REDCap摰䀹䲮index.php<68>怠偏嚗<E5818F><E59A97><EFBFBD><EFBFBD><EFBFBD>
tail -c 20 /var/www/html/redcap/redcap_v15.8.0/index.php | xxd
00000000: 656e 6572 616c 2f66 6f6f 7465 722e 7068 eneral/footer.ph
00000010: 7027 3b0a p';.
# 末尾只有 '; 和换行符,没有?>
# <EFBFBD>怠偏<EFBFBD><EFBFBD> '; <20>峕揢銵𣬚泵嚗峕瓷<E5B395>?>
# REDCap摰䀹䲮Authentication.php<68>怠偏嚗<E5818F><E59A97><EFBFBD><EFBFBD><EFBFBD>
tail -c 30 /var/www/html/redcap/redcap_v15.8.0/Classes/Authentication.php | xxd
00000000: 6c2c 205b 2475 7365 7269 645d 2929 203e l, [$userid])) >
00000010: 2030 3b0a 0909 7d0a 097d 0a0a 7d0a 0;...}..}..}.
# 末尾只有 } 和换行符,没有?>
# <EFBFBD>怠偏<EFBFBD><EFBFBD> } <20>峕揢銵𣬚泵嚗峕瓷<E5B395>?>
```
---
## <20><> 蝏誯<E89D8F><E8AAAF><EFBFBD>
### 1. Docker跨平台注意事项
### 1. Docker頝典像<EFBFBD>唳釣<EFBFBD><EFBFBD>憿?
**Windows + Docker + Linux摰孵膥蝏<E886A5><E89D8F>隡𡁏𠂔<F0A1818F><EFBFBD>隞嗆聢撘誯䔮憸矋<E686B8>**
- Windows暺䁅恕CRLF (`\r\n`)
- Linux暺䁅恕LF (`\n`)
- Git<69><74>autocrlf`霈曄蔭<E69B84><EFBFBD><E888AA>芸𢆡頧祆揢
- 使用`.gitattributes`显式控制换行符
- 雿輻鍂`.gitattributes`<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝚?
### 2. PHP配置文件最佳实践
### 2. PHP<EFBFBD>滨蔭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿喳<EFBFBD>頝?
```php
<?php
// <20>滨蔭隞<E894AD><E99A9E>...
// ❌ 错误:有结束标签和空行
// <EFBFBD>?<3F>躰秤嚗𡁏<E59A97>蝏𤘪<E89D8F><F0A498AA><EFBFBD><EFBFBD>𣬚征銵?
?>
@@ -168,12 +168,12 @@ tail -c 30 /var/www/html/redcap/redcap_v15.8.0/Classes/Authentication.php | xxd
<?php
// <20>滨蔭隞<E894AD><E99A9E>...
// ✅ 正确:没有结束标签
// <EFBFBD>?甇<>嚗𡁏瓷<F0A1818F><EFBFBD><E58EA9><EFBFBD><EFBFBD>蝑?
```
### 3. REDCap部署检查清单
### 3. REDCap<EFBFBD>函蔡璉<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
- [ ] Apache DocumentRoot与Base URL一致
- [ ] Apache DocumentRoot銝𦻓ase URL<EFBFBD><EFBFBD>?
- [ ]<><EFBFBD>讠憬璅<E79285><EFBFBD><E59A97><EFBFBD>𤑳㴓憓<E3B493><E68693>
- [ ] `database.php`<EFBFBD>怠偏<EFBFBD>鮏?>`
- [ ] <20><><EFBFBD><EFBFBD>蝚衣<E89D9A><EFBFBD>銝摔F
@@ -182,22 +182,22 @@ tail -c 30 /var/www/html/redcap/redcap_v15.8.0/Classes/Authentication.php | xxd
---
## 🚀 后续部署到生产环境
## <EFBFBD><EFBFBD> <20>𡒊賒<F0A1928A>函蔡<E587BD><EFBFBD>鈭抒㴓憓?
**本地Docker开发环境已验证通过可以安全迁移到阿里云ECS**
**<EFBFBD>砍𧑐Docker撘<EFBFBD><EFBFBD>𤑳㴓憓<EFBFBD>歇撉諹<EFBFBD><EFBFBD><EFBFBD><EFBFBD>虾隞亙<EFBFBD><EFBFBD><EFBFBD>蝘餃<EFBFBD><EFBFBD><EFBFBD>鈭䫿CS嚗?*
1. ✅ 使用相同的`Dockerfile.redcap`构建镜像
2. ✅ 修改`database.php`连接到RDS
3. ✅ 生产环境可以启用Gzip压缩使用Nginx反向代理
4. ✅ 所有配置文件已经过验证不会有CRLF问题
1. <20>?雿輻鍂<E8BCBB><EFBFBD><E8A9A8><EFBFBD>Dockerfile.redcap`<60><><EFBFBD>𨅯<EFBFBD>
2. <20>?靽格㺿`database.php`餈墧𦻖<EFBFBD>DS
3. <20>?<3F>煺漣<E785BA><EFBFBD><E887AC>臭誑<E887AD>舐鍂Gzip<69>讠憬嚗<E686AC><EFBFBD>沐ginx<6E><EFBFBD><EFBFBD><E99A9E>嚗?
4. <20>?<3F><><EFBFBD><EFBFBD>蝵格<E89DB5>隞嗅歇蝏讛<E89D8F>撉諹<E69289>嚗䔶<E59A97>隡𡁏<E99AA1>CRLF<4C><EFBFBD>
**未来不需要逐个排查REDCap文件因为官方代码是规范的** ✨
**<EFBFBD>芣䔉銝漤<EFBFBD><EFBFBD><EFBFBD>𣂷葵<EFBFBD>埝䰻REDCap<EFBFBD><EFBFBD>辣嚗<EFBFBD><EFBFBD>銝箏<EFBFBD><EFBFBD>嫣誨<EFBFBD><EFBFBD>糓閫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>** <20>?
---
## <20><> <20>𠉛頂<F0A0899B><EFBFBD>
如有问题,请查看:
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗諹窈<EFBFBD><EFBFBD>嚗?
- REDCap摰䀹䲮<E480B9><E4B2AE>﹝嚗冴ttps://projectredcap.org/
- 部署方案文档:`docs/03-REDCap本地Docker开发环境部署方案.md`
- <20>函蔡<E587BD><EFBFBD><E5AF9E><EFBFBD>﹝嚗䫤docs/03-REDCap<EFBFBD>砍𧑐Docker<EFBFBD><EFBFBD>𤑳㴓憓<EFBFBD><EFBFBD>蝵脫䲮獢?md`