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:
@@ -1,75 +1,75 @@
|
||||
# REDCap妯″潡鏂囨。瀵艰埅
|
||||
|
||||
**鏈€鍚庢洿鏂帮細** 2026-01-02
|
||||
**模块类型:** 第三方系统集成与二次开发
|
||||
**妯″潡绫诲瀷锛?* 绗<>笁鏂圭郴缁熼泦鎴愪笌浜屾<E6B59C>寮€鍙?
|
||||
**褰撳墠鐘舵€侊細** 鏈<>湴Docker鐜<72><E9909C>宸查儴缃诧紝API Adapter寮€鍙戜腑
|
||||
|
||||
---
|
||||
|
||||
## 馃摎 鏂囨。浣撶郴璇存槑
|
||||
|
||||
REDCap是一个成熟的第三方EDC(电子数据采集)系统,本模块的工作重点是:
|
||||
1. **部署与配置**:在不同环境(开发/生产/医院)部署REDCap
|
||||
REDCap鏄<EFBFBD>竴涓<EFBFBD>垚鐔熺殑绗<EFBFBD>笁鏂笶DC锛堢數瀛愭暟鎹<EFBFBD>噰闆嗭級绯荤粺锛屾湰妯″潡鐨勫伐浣滈噸鐐规槸锛?
|
||||
1. **閮ㄧ讲涓庨厤缃?*锛氬湪涓嶅悓鐜<E68293><E9909C>锛堝紑鍙?鐢熶骇/鍖婚櫌锛夐儴缃睷EDCap
|
||||
2. **API瀵规帴**锛氶€氳繃REDCap API涓嶪IT Manager Agent闆嗘垚
|
||||
3. **运维管理**:日常维护、备份、升级
|
||||
3. **杩愮淮绠$悊**锛氭棩甯哥淮鎶ゃ€佸<E282AC>浠姐€佸崌绾?
|
||||
|
||||
因此,文档架构与自研模块(ASL、DC)不同,更侧重部署与集成。
|
||||
鍥犳<EFBFBD>锛屾枃妗f灦鏋勪笌鑷<EFBFBD>爺妯″潡锛圓SL銆丏C锛変笉鍚岋紝鏇翠晶閲嶉儴缃蹭笌闆嗘垚銆?
|
||||
|
||||
---
|
||||
|
||||
## 馃摉 鏂囨。鐩<E38082>綍
|
||||
|
||||
### 1️⃣ **系统概览与决策**
|
||||
### 1锔忊儯 **绯荤粺姒傝<E5A792>涓庡喅绛?*
|
||||
|
||||
#### [01-REDCap绯荤粺浠嬬粛涓庨€夊瀷璇存槑.md](./01-REDCap绯荤粺浠嬬粛涓庨€夊瀷璇存槑.md)
|
||||
- REDCap鏄<70>粈涔堬紵
|
||||
- 为什么选择REDCap?
|
||||
- REDCap的核心功能
|
||||
- 涓轰粈涔堥€夋嫨REDCap锛?
|
||||
- REDCap鐨勬牳蹇冨姛鑳?
|
||||
- REDCap鍦↖IT Manager涓<72>殑瑙掕壊
|
||||
|
||||
#### [02-REDCap对接总体方案.md](./02-REDCap对接总体方案.md) ✅
|
||||
- 技术架构设计
|
||||
#### [02-REDCap瀵规帴鎬讳綋鏂规<EFBFBD>.md](./02-REDCap瀵规帴鎬讳綋鏂规<EFBFBD>.md) 鉁?
|
||||
- 鎶€鏈<EFBFBD>灦鏋勮<EFBFBD>璁?
|
||||
- API瀵规帴鏂规<E98F82>
|
||||
- 鏁版嵁娴佽浆鏂规<E98F82>
|
||||
- 安全性设计
|
||||
- 瀹夊叏鎬ц<EFBFBD>璁?
|
||||
|
||||
#### [03-REDCap对接风险评估与技术挑战分析.md](./03-REDCap对接风险评估与技术挑战分析.md) ✅
|
||||
- 技术风险评估
|
||||
#### [03-REDCap瀵规帴椋庨櫓璇勪及涓庢妧鏈<EFBFBD>寫鎴樺垎鏋?md](./03-REDCap瀵规帴椋庨櫓璇勪及涓庢妧鏈<E5A6A7>寫鎴樺垎鏋?md) 鉁?
|
||||
- 鎶€鏈<EFBFBD><EFBFBD>闄╄瘎浼?
|
||||
- 瀹炴柦闅惧害鍒嗘瀽
|
||||
- 鏇夸唬鏂规<E98F82>瀵规瘮
|
||||
- 最终决策建议
|
||||
- 鏈€缁堝喅绛栧缓璁?
|
||||
|
||||
#### [04-生产环境部署决策报告_ECS_vs_SAE.md](./04-生产环境部署决策报告_ECS_vs_SAE.md) ✅
|
||||
#### [04-鐢熶骇鐜<EFBFBD><EFBFBD>閮ㄧ讲鍐崇瓥鎶ュ憡_ECS_vs_SAE.md](./04-鐢熶骇鐜<EFBFBD><EFBFBD>閮ㄧ讲鍐崇瓥鎶ュ憡_ECS_vs_SAE.md) 鉁?
|
||||
- ECS vs SAE娣卞害瀵规瘮
|
||||
- 鎴愭湰鍒嗘瀽
|
||||
- 技术可行性
|
||||
- 鎶€鏈<EFBFBD>彲琛屾€?
|
||||
- 鏈€缁堥€夊瀷锛欵CS
|
||||
|
||||
---
|
||||
|
||||
### 2️⃣ **部署与配置**
|
||||
### 2锔忊儯 **閮ㄧ讲涓庨厤缃?*
|
||||
|
||||
#### [10-本地开发环境部署完全指南.md](./10-本地开发环境部署完全指南.md) ⭐
|
||||
- **快速开始**(适合首次部署)
|
||||
#### [10-鏈<EFBFBD>湴寮€鍙戠幆澧冮儴缃插畬鍏ㄦ寚鍗?md](./10-鏈<>湴寮€鍙戠幆澧冮儴缃插畬鍏ㄦ寚鍗?md) 猸?
|
||||
- **蹇<EFBFBD>€熷紑濮?*锛堥€傚悎棣栨<E6A3A3>閮ㄧ讲锛?
|
||||
- Docker鐜<72><E9909C>鍑嗗<E98D91>
|
||||
- 一键部署脚本使用
|
||||
- 初始化配置
|
||||
- 涓€閿<EFBFBD>儴缃茶剼鏈<EFBFBD>娇鐢?
|
||||
- 鍒濆<EFBFBD>鍖栭厤缃?
|
||||
- 楠岃瘉娴嬭瘯
|
||||
- **鍏抽敭鍙傝€冩枃妗o紒**
|
||||
|
||||
#### [11-生产环境部署完全指南_阿里云ECS.md](./11-生产环境部署完全指南_阿里云ECS.md) ⭐
|
||||
- **ECS服务器配置**
|
||||
- Docker镜像构建与推送
|
||||
#### [11-鐢熶骇鐜<EFBFBD><EFBFBD>閮ㄧ讲瀹屽叏鎸囧崡_闃块噷浜慐CS.md](./11-鐢熶骇鐜<E9AA87><E9909C>閮ㄧ讲瀹屽叏鎸囧崡_闃块噷浜慐CS.md) 猸?
|
||||
- **ECS鏈嶅姟鍣ㄩ厤缃?*
|
||||
- Docker闀滃儚鏋勫缓涓庢帹閫?
|
||||
- RDS MySQL閰嶇疆
|
||||
- 鍩熷悕涓嶴SL璇佷功
|
||||
- 安全组与防火墙
|
||||
- 生产环境检查清单
|
||||
- **生产部署必读!**
|
||||
- 瀹夊叏缁勪笌闃茬伀澧?
|
||||
- 鐢熶骇鐜<EFBFBD><EFBFBD>妫€鏌ユ竻鍗?
|
||||
- **鐢熶骇閮ㄧ讲蹇呰<EFBFBD>锛?*
|
||||
|
||||
#### [12-医院私有化部署指南.md](./12-医院私有化部署指南.md) 🏥
|
||||
- 医院服务器环境要求
|
||||
#### [12-鍖婚櫌绉佹湁鍖栭儴缃叉寚鍗?md](./12-鍖婚櫌绉佹湁鍖栭儴缃叉寚鍗?md) 馃彞
|
||||
- 鍖婚櫌鏈嶅姟鍣ㄧ幆澧冭<EFBFBD>姹?
|
||||
- 鍐呯綉閮ㄧ讲鏂规<E98F82>
|
||||
- 数据安全与合规
|
||||
- 鏁版嵁瀹夊叏涓庡悎瑙?
|
||||
- 鎶€鏈<E282AC>敮鎸佷笌鍩硅<E98DA9>
|
||||
|
||||
#### [13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md](./13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md) 馃敡
|
||||
@@ -80,31 +80,31 @@ REDCap是一个成熟的第三方EDC(电子数据采集)系统,本模块
|
||||
|
||||
---
|
||||
|
||||
### 3️⃣ **配置与管理**
|
||||
### 3锔忊儯 **閰嶇疆涓庣<E6B693>鐞?*
|
||||
|
||||
#### [20-REDCap绯荤粺閰嶇疆鎵嬪唽.md](./20-REDCap绯荤粺閰嶇疆鎵嬪唽.md)
|
||||
- 基础配置(Base URL、邮件服务等)
|
||||
- 用户与权限管理
|
||||
- 项目创建与配置
|
||||
- 鍩虹<EFBFBD>閰嶇疆锛圔ase URL銆侀偖浠舵湇鍔$瓑锛?
|
||||
- 鐢ㄦ埛涓庢潈闄愮<EFBFBD>鐞?
|
||||
- 椤圭洰鍒涘缓涓庨厤缃?
|
||||
- 鏁版嵁瀛楀吀璁捐<E79281>
|
||||
- 琛ㄥ崟璁捐<E79281>
|
||||
|
||||
#### [21-REDCap鏃ュ父杩愮淮鎵嬪唽.md](./21-REDCap鏃ュ父杩愮淮鎵嬪唽.md)
|
||||
- 鏃ュ父缁存姢浠诲姟
|
||||
- 备份与恢复
|
||||
- 澶囦唤涓庢仮澶?
|
||||
- 鎬ц兘鐩戞帶
|
||||
- 鏃ュ織绠$悊
|
||||
- 鏁呴殰澶勭悊娴佺▼
|
||||
|
||||
#### [22-REDCap鍗囩骇鎸囧崡.md](./22-REDCap鍗囩骇鎸囧崡.md)
|
||||
- 鐗堟湰鍗囩骇娴佺▼
|
||||
- 数据库迁移
|
||||
- 兼容性测试
|
||||
- 鏁版嵁搴撹縼绉?
|
||||
- 鍏煎<EFBFBD>鎬ф祴璇?
|
||||
- 鍥炴粴鏂规<E98F82>
|
||||
|
||||
---
|
||||
|
||||
### 4️⃣ **API对接与开发**
|
||||
### 4锔忊儯 **API瀵规帴涓庡紑鍙?*
|
||||
|
||||
#### [30-REDCap_API浣跨敤鎸囧崡.md](./30-REDCap_API浣跨敤鎸囧崡.md)
|
||||
- REDCap API姒傝堪
|
||||
@@ -118,21 +118,21 @@ REDCap是一个成熟的第三方EDC(电子数据采集)系统,本模块
|
||||
- 鎺ュ彛璁捐<E79281>
|
||||
- 閿欒<E996BF>澶勭悊
|
||||
|
||||
#### [32-REDCap_API_Adapter开发指南.md](./32-REDCap_API_Adapter开发指南.md)
|
||||
#### [32-REDCap_API_Adapter寮€鍙戞寚鍗?md](./32-REDCap_API_Adapter寮€鍙戞寚鍗?md)
|
||||
- Adapter鏋舵瀯璁捐<E79281>
|
||||
- 浠g爜缁撴瀯
|
||||
- 开发规范
|
||||
- 寮€鍙戣<EFBFBD>鑼?
|
||||
- 娴嬭瘯鏂规<E98F82>
|
||||
|
||||
#### [33-REDCap二次开发深度指南.md](./33-REDCap二次开发深度指南.md) ✅
|
||||
- External Modules开发
|
||||
#### [33-REDCap浜屾<EFBFBD>寮€鍙戞繁搴︽寚鍗?md](./33-REDCap浜屾<EFBFBD>寮€鍙戞繁搴︽寚鍗?md) 鉁?
|
||||
- External Modules寮€鍙?
|
||||
- Hooks鏈哄埗
|
||||
- 插件开发
|
||||
- 最佳实践
|
||||
- 鎻掍欢寮€鍙?
|
||||
- 鏈€浣冲疄璺?
|
||||
|
||||
---
|
||||
|
||||
### 5️⃣ **参考资料**
|
||||
### 5锔忊儯 **鍙傝€冭祫鏂?*
|
||||
|
||||
#### [40-REDCap瀹樻柟璧勬簮绱㈠紩.md](./40-REDCap瀹樻柟璧勬簮绱㈠紩.md)
|
||||
- 瀹樻柟鏂囨。閾炬帴
|
||||
@@ -148,46 +148,46 @@ REDCap是一个成熟的第三方EDC(电子数据采集)系统,本模块
|
||||
|
||||
---
|
||||
|
||||
## 🎯 快速入口
|
||||
## 馃幆 蹇<>€熷叆鍙?
|
||||
|
||||
### 鎴戞兂閮ㄧ讲REDCap
|
||||
- **本地开发测试** → [10-本地开发环境部署完全指南.md](./10-本地开发环境部署完全指南.md)
|
||||
- **阿里云生产环境** → [11-生产环境部署完全指南_阿里云ECS.md](./11-生产环境部署完全指南_阿里云ECS.md)
|
||||
- **医院私有化** → [12-医院私有化部署指南.md](./12-医院私有化部署指南.md)
|
||||
- **鏈<EFBFBD>湴寮€鍙戞祴璇?* 鈫?[10-鏈<>湴寮€鍙戠幆澧冮儴缃插畬鍏ㄦ寚鍗?md](./10-鏈<>湴寮€鍙戠幆澧冮儴缃插畬鍏ㄦ寚鍗?md)
|
||||
- **闃块噷浜戠敓浜х幆澧?* 鈫?[11-鐢熶骇鐜<E9AA87><E9909C>閮ㄧ讲瀹屽叏鎸囧崡_闃块噷浜慐CS.md](./11-鐢熶骇鐜<E9AA87><E9909C>閮ㄧ讲瀹屽叏鎸囧崡_闃块噷浜慐CS.md)
|
||||
- **鍖婚櫌绉佹湁鍖?* 鈫?[12-鍖婚櫌绉佹湁鍖栭儴缃叉寚鍗?md](./12-鍖婚櫌绉佹湁鍖栭儴缃叉寚鍗?md)
|
||||
|
||||
### 我遇到部署问题
|
||||
- **问题排查** → [13-部署问题排查手册.md](./13-部署问题排查手册.md)
|
||||
- **历史问题记录** → [13-部署问题排查手册.md](./13-部署问题排查手册.md)
|
||||
### 鎴戦亣鍒伴儴缃查棶棰?
|
||||
- **闂<EFBFBD><EFBFBD>鎺掓煡** 鈫?[13-閮ㄧ讲闂<EFBFBD><EFBFBD>鎺掓煡鎵嬪唽.md](./13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md)
|
||||
- **鍘嗗彶闂<EFBFBD><EFBFBD>璁板綍** 鈫?[13-閮ㄧ讲闂<EFBFBD><EFBFBD>鎺掓煡鎵嬪唽.md](./13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md)
|
||||
|
||||
### 我要进行API开发
|
||||
- **了解API** → [30-REDCap_API使用指南.md](./30-REDCap_API使用指南.md)
|
||||
- **对接设计** → [31-IIT_Manager与REDCap对接设计.md](./31-IIT_Manager与REDCap对接设计.md)
|
||||
- **开发Adapter** → [32-REDCap_API_Adapter开发指南.md](./32-REDCap_API_Adapter开发指南.md)
|
||||
### 鎴戣<EFBFBD>杩涜<EFBFBD>API寮€鍙?
|
||||
- **浜嗚ВAPI** 鈫?[30-REDCap_API浣跨敤鎸囧崡.md](./30-REDCap_API浣跨敤鎸囧崡.md)
|
||||
- **瀵规帴璁捐<EFBFBD>** 鈫?[31-IIT_Manager涓嶳EDCap瀵规帴璁捐<EFBFBD>.md](./31-IIT_Manager涓嶳EDCap瀵规帴璁捐<EFBFBD>.md)
|
||||
- **寮€鍙慉dapter** 鈫?[32-REDCap_API_Adapter寮€鍙戞寚鍗?md](./32-REDCap_API_Adapter寮€鍙戞寚鍗?md)
|
||||
|
||||
### 鎴戣<E98EB4>鏃ュ父杩愮淮
|
||||
- **系统配置** → [20-REDCap系统配置手册.md](./20-REDCap系统配置手册.md)
|
||||
- **日常维护** → [21-REDCap日常运维手册.md](./21-REDCap日常运维手册.md)
|
||||
- **版本升级** → [22-REDCap升级指南.md](./22-REDCap升级指南.md)
|
||||
- **绯荤粺閰嶇疆** 鈫?[20-REDCap绯荤粺閰嶇疆鎵嬪唽.md](./20-REDCap绯荤粺閰嶇疆鎵嬪唽.md)
|
||||
- **鏃ュ父缁存姢** 鈫?[21-REDCap鏃ュ父杩愮淮鎵嬪唽.md](./21-REDCap鏃ュ父杩愮淮鎵嬪唽.md)
|
||||
- **鐗堟湰鍗囩骇** 鈫?[22-REDCap鍗囩骇鎸囧崡.md](./22-REDCap鍗囩骇鎸囧崡.md)
|
||||
|
||||
---
|
||||
|
||||
## 📊 模块当前状态
|
||||
## 馃搳 妯″潡褰撳墠鐘舵€?
|
||||
|
||||
| 阶段 | 状态 | 完成时间 | 备注 |
|
||||
| 闃舵<EFBFBD> | 鐘舵€?| 瀹屾垚鏃堕棿 | 澶囨敞 |
|
||||
|------|------|----------|------|
|
||||
| 技术调研 | ✅ 完成 | 2025-12 | 完成风险评估与方案设计 |
|
||||
| 部署方案设计 | ✅ 完成 | 2026-01-01 | 确定Docker+ECS方案 |
|
||||
| 本地环境部署 | ✅ 完成 | 2026-01-02 | REDCap 15.8.0运行正常 |
|
||||
| API Adapter开发 | ⏳ 进行中 | 预计2026-01-03 | Day 2任务 |
|
||||
| 生产环境部署 | 📅 计划中 | 待定 | 等待API Adapter完成 |
|
||||
| 鎶€鏈<EFBFBD>皟鐮?| 鉁?瀹屾垚 | 2025-12 | 瀹屾垚椋庨櫓璇勪及涓庢柟妗堣<E5A697>璁?|
|
||||
| 閮ㄧ讲鏂规<EFBFBD>璁捐<EFBFBD> | 鉁?瀹屾垚 | 2026-01-01 | 纭<EFBFBD>畾Docker+ECS鏂规<EFBFBD> |
|
||||
| 鏈<EFBFBD>湴鐜<EFBFBD><EFBFBD>閮ㄧ讲 | 鉁?瀹屾垚 | 2026-01-02 | REDCap 15.8.0杩愯<EFBFBD>姝e父 |
|
||||
| API Adapter寮€鍙?| 鈴?杩涜<E69DA9>涓?| 棰勮<E6A3B0>2026-01-03 | Day 2浠诲姟 |
|
||||
| 鐢熶骇鐜<EFBFBD><EFBFBD>閮ㄧ讲 | 馃搮 璁″垝涓?| 寰呭畾 | 绛夊緟API Adapter瀹屾垚 |
|
||||
|
||||
---
|
||||
|
||||
## 馃攧 鏂囨。鏇存柊璁板綍
|
||||
|
||||
| 日期 | 更新内容 | 更新人 |
|
||||
| 鏃ユ湡 | 鏇存柊鍐呭<E98D90> | 鏇存柊浜?|
|
||||
|------|----------|--------|
|
||||
| 2026-01-02 | 创建文档体系,完成本地部署 | AI Assistant |
|
||||
| 2026-01-02 | 鍒涘缓鏂囨。浣撶郴锛屽畬鎴愭湰鍦伴儴缃?| AI Assistant |
|
||||
| 2025-12-XX | 瀹屾垚鎶€鏈<E282AC>柟妗堜笌椋庨櫓璇勪及鏂囨。 | AI Assistant |
|
||||
|
||||
---
|
||||
@@ -195,25 +195,25 @@ REDCap是一个成熟的第三方EDC(电子数据采集)系统,本模块
|
||||
## 馃摑 鏂囨。缂栧啓瑙勮寖
|
||||
|
||||
### 鍥炬爣浣跨敤瑙勮寖
|
||||
- ⭐ 核心必读文档
|
||||
- ✅ 已完成
|
||||
- ⏳ 进行中
|
||||
- 📅 计划中
|
||||
- 猸?鏍稿績蹇呰<E8B987>鏂囨。
|
||||
- 鉁?宸插畬鎴?
|
||||
- 鈴?杩涜<E69DA9>涓?
|
||||
- 馃搮 璁″垝涓?
|
||||
- 馃敡 鏁呴殰鎺掓煡
|
||||
- 馃彞 鍖婚櫌涓撶敤
|
||||
- 💡 技巧提示
|
||||
- 馃挕 鎶€宸ф彁绀?
|
||||
- 鈿狅笍 閲嶈<E996B2>璀﹀憡
|
||||
|
||||
### 鏂囨。鍛藉悕瑙勮寖
|
||||
- 按数字分类:01-09系统概览,10-19部署,20-29配置,30-39开发,40-49参考
|
||||
- 使用下划线分隔多个单词(而非空格)
|
||||
- 重要文档加"完全指南"/"手册"/"指南"后缀
|
||||
- 鎸夋暟瀛楀垎绫伙細01-09绯荤粺姒傝<E5A792>锛?0-19閮ㄧ讲锛?0-29閰嶇疆锛?0-39寮€鍙戯紝40-49鍙傝€?
|
||||
- 浣跨敤涓嬪垝绾垮垎闅斿<EFBFBD>涓<EFBFBD>崟璇嶏紙鑰岄潪绌烘牸锛?
|
||||
- 閲嶈<EFBFBD>鏂囨。鍔?瀹屽叏鎸囧崡"/"鎵嬪唽"/"鎸囧崡"鍚庣紑
|
||||
|
||||
---
|
||||
|
||||
## 馃啒 鑾峰彇甯<E5BD87>姪
|
||||
|
||||
- **技术问题**:查看 [13-部署问题排查手册.md](./13-部署问题排查手册.md)
|
||||
- **鎶€鏈<EFBFBD>棶棰?*锛氭煡鐪?[13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md](./13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md)
|
||||
- **REDCap瀹樻柟**锛歨ttps://projectredcap.org/
|
||||
- **Docker问题**:查看 `redcap-docker-dev/README.md`
|
||||
- **Docker闂<EFBFBD><EFBFBD>**锛氭煡鐪?`redcap-docker-dev/README.md`
|
||||
|
||||
|
||||
@@ -1,153 +1,153 @@
|
||||
# REDCap荳拶Iclinicalresearch蟷ウ蜿ー蟇ケ謗・諤サ菴捺婿譯<E5A9BF>
|
||||
|
||||
> **文档版本:** v1.0
|
||||
> **创建日期:** 2025-12-30
|
||||
> **譁<EFBFBD>。」迚域悽<EFBFBD>?* v1.0
|
||||
> **蛻帛サコ譌・譛滂シ?* 2025-12-30
|
||||
> **譛蜷取峩譁ー<E8AD81><EFBDB0>** 2025-12-30
|
||||
> **文档状态:** 规划中
|
||||
> **譁<EFBFBD>。」迥カ諤<EFBFBD>シ<EFBFBD>** 隗<><E99A97>荳?
|
||||
> **菴懆<E68786>シ<EFBFBD>** 謚譛ッ譫カ譫<EFBDB6>ク<EFBFBD>
|
||||
|
||||
---
|
||||
|
||||
## <20>搭 譁<>。」隸エ譏<EFBDB4>
|
||||
|
||||
本文档定义REDCap(15.8.0)与壹证循AI科研平台的**完整对接方案**,包括:
|
||||
譛ャ譁<EFBFBD>。」螳壻ケ嘘EDCap<EFBFBD>?5.8.0<EFBFBD>我ク主」ケ隸∝セェAI遘醍<EFBFBD>泌ケウ蜿ー逧?*螳梧紛蟇ケ謗・譁ケ譯<EFBDB9>**<2A>悟桁諡ャ<E8ABA1><EFBDAC>
|
||||
1. 蟇ケ謗・譫カ譫<EFBDB6>ョセ隶。
|
||||
2. External Module开发方案
|
||||
2. External Module蠑蜿第婿譯?
|
||||
3. API髮<49><E9ABAE>譁ケ譯<EFBDB9>
|
||||
4. 数据流设计
|
||||
4. 謨ー謐ョ豬∬ョセ隶?
|
||||
5. 蠑蜿題ョ。蛻剃ク主ョ樊命豁・鬪、
|
||||
|
||||
**前置条件:**
|
||||
- ✅ 已获得REDCap官方授权
|
||||
- ✅ 拥有REDCap 15.8.0源代码
|
||||
- ✅ 拥有External Module Framework文档
|
||||
**蜑咲スョ譚。莉カ<EFBFBD>?*
|
||||
- 笨?蟾イ闔キ蠕由EDCap螳俶婿謗域揀
|
||||
- 笨?諡・譛嘘EDCap 15.8.0貅蝉サ」遐?
|
||||
- 笨?諡・譛右xternal Module Framework譁<EFBFBD>。」
|
||||
|
||||
**相关文档:**
|
||||
- [REDCap 二次开发深度指南](./REDCap%20二次开发深度指南.md)
|
||||
**逶ク蜈ウ譁<EFBFBD>。」<EFBFBD>?*
|
||||
- [REDCap 莠梧ャ。蠑蜿第キア蠎ヲ謖<EFBFBD>漉](./REDCap%20莠梧ャ。蠑蜿第キア蠎ヲ謖<EFBDA6><E8AC96>?md)
|
||||
- [邉サ扈滓楔譫<EFBFBD><EFBFBD>螻りョセ隶。](../../00-邉サ扈滓サ菴楢ョセ隶。/01-邉サ扈滓楔譫<E6A594><E8ADAB>螻りョセ隶。.md)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 对接目标与价值
|
||||
## <EFBFBD>識 蟇ケ謗・逶ョ譬<EFBDAE>ク惹サキ蛟?
|
||||
|
||||
### 譬ク蠢<EFBDB8>岼譬<E5B2BC>
|
||||
|
||||
**将REDCap的强大EDC能力与AI科研平台的AI增值功能深度融合**
|
||||
**蟆<EFBFBD>EDCap逧<EFBFBD>シコ螟ァEDC閭ス蜉帑ク拶I遘醍<EFBFBD>泌ケウ蜿ー逧БI蠅槫シ蜉溯<EFBFBD>豺ア蠎ヲ陞榊<EFBFBD>?*
|
||||
|
||||
```
|
||||
REDCap (謨ー謐ョ驥<EFBDAE>寔) + AIclinicalresearch (AI閭ス蜉<EFBDBD>)
|
||||
↓ ↓
|
||||
临床数据录入 AI智能处理、分析、洞察
|
||||
↓ ↓
|
||||
竊? 竊?
|
||||
荳エ蠎頑焚謐ョ蠖募<EFBFBD> AI譎コ閭ス螟<EFBFBD>炊縲∝<EFBFBD>譫舌∵エ槫ッ?
|
||||
竊? 竊?
|
||||
螳梧紛逧БI鬩ア蜉ィ荳エ蠎顔<E8A08E>皮ゥカ髣ュ邇ッ
|
||||
```
|
||||
|
||||
### 业务价值
|
||||
### 荳壼苅莉キ蛟?
|
||||
|
||||
| 功能模块 | REDCap基础能力 | AI平台增值能力 | 协同价值 |
|
||||
| 蜉溯<EFBFBD>讓。蝮<EFBFBD> | REDCap蝓コ遑閭ス蜉<EFBFBD> | AI蟷ウ蜿ー蠅槫シ閭ス蜉?| 蜊丞酔莉キ蛟?|
|
||||
|---------|--------------|--------------|---------|
|
||||
| **数据采集** | ✅ 表单设计、数据录入、验证 | 🎁 AI辅助录入、智能质控 | 提升录入效率50% |
|
||||
| **謨ー謐ョ驥<EFBFBD>寔** | 笨?陦ィ蜊戊ョセ隶。縲∵焚謐ョ蠖募<E8A096>縲<EFBFBD>ェ瑚ッ?| <20>氏 AI霎<49>勧蠖募<E8A096>縲∵匱閭ス雍ィ謗?| 謠仙合蠖募<E8A096>謨育紫50% |
|
||||
| **謨ー謐ョ貂<EFBDAE>エ<EFBFBD>** | 笞<><E7AC9E><EFBFBD> 謇句勘譟・隸「縲∝ッシ蜃コExcel | <20>氏 DC讓。蝮苓<E89DAE>蜉ィ貂<EFBDA8>エ励¨ER謠仙叙 | 蜃丞ー第焚謐ョ螟<EFBDAE>炊譌カ髣エ80% |
|
||||
| **统计分析** | ⚠️ 需导出到R/SPSS | 🎁 SSA模块一键分析、可视化 | 降低统计门槛,分析速度提升10倍 |
|
||||
| **文献支持** | ❌ 无 | 🎁 ASL模块智能文献筛选 | 系统评价效率提升5倍 |
|
||||
| **AI问答** | ❌ 无 | 🎁 AIA模块10+智能体辅助 | 全流程AI辅助 |
|
||||
| **知识库** | ❌ 无 | 🎁 PKB模块RAG问答 | 项目知识沉淀 |
|
||||
| **扈溯ョ。蛻<EFBFBD>梵** | 笞<EFBFBD><EFBFBD><EFBFBD> 髴蟇シ蜃コ蛻ーR/SPSS | <EFBFBD>氏 SSA讓。蝮嶺ク髞ョ蛻<EFBFBD>梵縲∝庄隗<EFBFBD>喧 | 髯堺ス守サ溯ョ。髣ィ讒幢シ悟<EFBDBC>譫宣溷コヲ謠仙合10蛟?|
|
||||
| **譁<EFBFBD>鍵謾ッ謖<EFBFBD>** | 笶?譌?| <20>氏 ASL讓。蝮玲匱閭ス譁<EFBDBD>鍵遲幃?| 邉サ扈溯ッ<E6BAAF>サキ謨育紫謠仙合5蛟?|
|
||||
| **AI髣ョ遲<EFBFBD>** | 笶?譌?| <20>氏 AIA讓。蝮<EFBDA1>10+譎コ閭ス菴楢セ<E6A5A2><EFBDBE>?| 蜈ィ豬∫ィ帰I霎<49>勧 |
|
||||
| **遏・隸<EFBFBD>コ?* | 笶?譌?| <20>氏 PKB讓。蝮由AG髣ョ遲<EFBDAE> | 鬘ケ逶ョ遏・隸<EFBDA5>イ画キ |
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ 对接架构设计
|
||||
## <EFBFBD>女<EFBFBD>?蟇ケ謗・譫カ譫<EFBDB6>ョセ隶。
|
||||
|
||||
### 謨エ菴捺楔譫<E6A594>
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 用户层(研究人员/医生) │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 前端展示层 │
|
||||
│ ┌────────────────┐ ┌─────────────────────────┐ │
|
||||
│ │ REDCap Web UI │ │ AIclinicalresearch │ │
|
||||
│ │ (原生界面) │◄────────────►│ Frontend (React) │ │
|
||||
│ └────────────────┘ └─────────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 集成层(核心) │
|
||||
│ ┌────────────────────────────────────────────────────────┐ │
|
||||
│ │ REDCap External Module: "AI Research Assistant" │ │
|
||||
│ │ ───────────────────────────────────────────────────── │ │
|
||||
│ │ ├── 数据同步服务 (Data Sync Service) │ │
|
||||
│ │ ├── AI功能菜单 (AI Menu Links) │ │
|
||||
│ │ ├── Hooks处理器 (Hook Handlers) │ │
|
||||
│ │ └── API代理层 (API Proxy) │ │
|
||||
│ └────────────────────────────────────────────────────────┘ │
|
||||
│ ↕ │
|
||||
│ ┌────────────────────────────────────────────────────────┐ │
|
||||
│ │ AIclinicalresearch Backend RESTful API │ │
|
||||
│ │ /api/v1/redcap/* │ │
|
||||
│ └────────────────────────────────────────────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 业务处理层(AI能力) │
|
||||
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
|
||||
│ │ DC │ │ SSA │ │ ASL │ │ AIA │ │ PKB │ ... │
|
||||
│ │数据 │ │统计 │ │文献 │ │问答 │ │知识库│ │
|
||||
│ │清洗 │ │分析 │ │筛选 │ │ │ │ │ │
|
||||
│ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 数据存储层 │
|
||||
│ ┌──────────────────┐ ┌──────────────────┐ │
|
||||
│ │ REDCap MySQL │ │ AI Platform │ │
|
||||
│ │ (临床数据) │◄───────►│ PostgreSQL │ │
|
||||
│ │ - 患者数据 │ 同步 │ (分析结果) │ │
|
||||
│ │ - 表单元数据 │ │ - 清洗后数据 │ │
|
||||
│ └──────────────────┘ └──────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? 逕ィ謌キ螻ゑシ育<EFBFBD>皮ゥカ莠コ蜻<EFBFBD>/蛹サ逕滂シ? 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
竊?
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? 蜑咲ォッ螻慕、コ螻? 笏?
|
||||
笏? 笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏? 笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏? 笏?
|
||||
笏? 笏? REDCap Web UI 笏? 笏?AIclinicalresearch 笏? 笏?
|
||||
笏? 笏? (蜴溽函逡碁擇) 笏や淀笏笏笏笏笏笏笏笏笏笏笏笏笆コ笏<EFBDBA> Frontend (React) 笏? 笏?
|
||||
笏? 笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏? 笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏? 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
竊?
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? 髮<EFBFBD><EFBFBD>螻ゑシ域<EFBFBD>ク蠢<EFBFBD>シ? 笏?
|
||||
笏? 笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏? 笏?
|
||||
笏? 笏? REDCap External Module: "AI Research Assistant" 笏? 笏?
|
||||
笏? 笏? 笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏 笏? 笏?
|
||||
笏? 笏? 笏懌楳笏 謨ー謐ョ蜷梧ュ・譛榊苅 (Data Sync Service) 笏? 笏?
|
||||
笏? 笏? 笏懌楳笏 AI蜉溯<E89C89>闖懷黒 (AI Menu Links) 笏? 笏?
|
||||
笏? 笏? 笏懌楳笏 Hooks螟<EFBFBD>炊蝎?(Hook Handlers) 笏? 笏?
|
||||
笏? 笏? 笏披楳笏 API莉」逅<EFBDA3>ア?(API Proxy) 笏? 笏?
|
||||
笏? 笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏? 笏?
|
||||
笏? 竊? 笏?
|
||||
笏? 笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏? 笏?
|
||||
笏? 笏? AIclinicalresearch Backend RESTful API 笏? 笏?
|
||||
笏? 笏? /api/v1/redcap/* 笏? 笏?
|
||||
笏? 笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏? 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
竊?
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? 荳壼苅螟<EFBFBD>炊螻ゑシ<EFBFBD>I閭ス蜉幢シ? 笏?
|
||||
笏? 笏娯楳笏笏笏笏笏笏? 笏娯楳笏笏笏笏笏笏? 笏娯楳笏笏笏笏笏笏? 笏娯楳笏笏笏笏笏笏? 笏娯楳笏笏笏笏笏笏? 笏?
|
||||
笏? 笏?DC 笏? 笏?SSA 笏? 笏?ASL 笏? 笏?AIA 笏? 笏?PKB 笏? ... 笏?
|
||||
笏? 笏よ焚謐? 笏? 笏らサ溯ョ? 笏? 笏よ枚迪? 笏? 笏る琉遲? 笏? 笏ら衍隸<E8A18D>コ凪<EFBDBA>? 笏?
|
||||
笏? 笏よク<E38288>エ? 笏? 笏ょ<E7AC8F>譫? 笏? 笏らュ幃? 笏? 笏? 笏? 笏? 笏? 笏?
|
||||
笏? 笏披楳笏笏笏笏笏笏? 笏披楳笏笏笏笏笏笏? 笏披楳笏笏笏笏笏笏? 笏披楳笏笏笏笏笏笏? 笏披楳笏笏笏笏笏笏? 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
竊?
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? 謨ー謐ョ蟄伜お螻? 笏?
|
||||
笏? 笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏? 笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏? 笏?
|
||||
笏? 笏? REDCap MySQL 笏? 笏? AI Platform 笏? 笏?
|
||||
笏? 笏? (荳エ蠎頑焚謐ョ) 笏や淀笏笏笏笏笏笏笏笆コ笏<EFBDBA> PostgreSQL 笏? 笏?
|
||||
笏? 笏? - 謔」閠<EFBDA3>焚謐? 笏? 蜷梧ュ・ 笏? (蛻<>梵扈捺棡) 笏? 笏?
|
||||
笏? 笏? - 陦ィ蜊募<E89C8A>謨ー謐? 笏? 笏? - 貂<>エ怜錘謨ー謐? 笏? 笏?
|
||||
笏? 笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏? 笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏? 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
```
|
||||
|
||||
### 譬ク蠢<EFBDB8>ッケ謗・讓。蠑<EFBDA1>
|
||||
|
||||
我们采用**双向对接**策略:
|
||||
謌台サャ驥<EFBFBD>畑**蜿悟髄蟇ケ謗・**遲也払<E4B99F>?
|
||||
|
||||
#### 模式A:REDCap → AI平台(数据推送)
|
||||
#### 讓。蠑就<EFBFBD>啌EDCap 竊?AI蟷ウ蜿ー<E89CBF>域焚謐ョ謗ィ騾<EFBDA8>シ<EFBFBD>
|
||||
|
||||
```
|
||||
逕ィ謌キ蝨ィREDCap蠖募<EFBFBD>謨ー謐ョ
|
||||
↓
|
||||
竊?
|
||||
redcap_save_record Hook隗ヲ蜿<EFBDA6>
|
||||
↓
|
||||
竊?
|
||||
External Module謗ィ騾∵焚謐ョ蛻ーAI蟷ウ蜿ーAPI
|
||||
↓
|
||||
AI平台处理(清洗/分析/AI处理)
|
||||
↓
|
||||
竊?
|
||||
AI蟷ウ蜿ー螟<EFBFBD>炊<EFBFBD>域ク<EFBFBD>エ?蛻<>梵/AI螟<49>炊<EFBFBD>?
|
||||
竊?
|
||||
扈捺棡霑泌屓REDCap蟄伜お
|
||||
```
|
||||
|
||||
#### 模式B:AI平台 → REDCap(数据拉取)
|
||||
#### 讓。蠑州<EFBFBD>哂I蟷ウ蜿ー 竊?REDCap<61>域焚謐ョ諡牙叙<E78999><E58F99>
|
||||
|
||||
```
|
||||
逕ィ謌キ蝨ィAI蟷ウ蜿ー蜿題オキ蛻<EFBFBD>梵
|
||||
↓
|
||||
竊?
|
||||
AI蟷ウ蜿ー隹<EFBFBD>畑REDCap API闔キ蜿匁焚謐ョ
|
||||
↓
|
||||
竊?
|
||||
AI蟷ウ蜿ー謇ァ陦悟<EFBFBD>譫撰シ<EFBFBD>C/SSA/AIA遲会シ<E4BC9A>
|
||||
↓
|
||||
竊?
|
||||
扈捺棡螻慕、コ蝨ィAI蟷ウ蜿ー蜑咲ォッ
|
||||
↓
|
||||
竊?
|
||||
<EFBFBD>亥庄騾会シ臥サ捺棡蝗槫<EFBFBD>REDCap
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 技术方案详解
|
||||
## <EFBFBD>肌 謚譛ッ譁ケ譯郁ッヲ隗?
|
||||
|
||||
### 方案1:REDCap External Module开发
|
||||
### 譁ケ譯<EFBFBD>1<EFBFBD>啌EDCap External Module蠑蜿?
|
||||
|
||||
#### 模块命名与结构
|
||||
#### 讓。蝮怜多蜷堺ク守サ捺<EFBFBD>?
|
||||
|
||||
```
|
||||
讓。蝮怜錐遘ー: ai_research_assistant
|
||||
@@ -157,21 +157,21 @@ AI平台执行分析(DC/SSA/AIA等)
|
||||
逶ョ蠖慕サ捺桷:
|
||||
ai_research_assistant_v1.0.0/
|
||||
笏懌楳笏 config.json # 讓。蝮鈴<E89DAE>鄂ョ
|
||||
├── AiResearchAssistantModule.php # 主逻辑类
|
||||
笏懌楳笏 AiResearchAssistantModule.php # 荳サ騾サ霎醍ア?
|
||||
笏懌楳笏 README.md # 隸エ譏取枚譯」
|
||||
笏懌楳笏 LICENSE # MIT隶ク蜿ッ
|
||||
├── pages/ # 自定义页面
|
||||
│ ├── dashboard.php # AI功能仪表盘
|
||||
│ ├── data_sync.php # 数据同步管理
|
||||
│ ├── analysis_center.php # 分析中心
|
||||
│ └── settings.php # 模块设置
|
||||
笏懌楳笏 pages/ # 閾ェ螳壻ケ蛾。オ髱?
|
||||
笏? 笏懌楳笏 dashboard.php # AI蜉溯<EFBFBD>莉ェ陦ィ逶?
|
||||
笏? 笏懌楳笏 data_sync.php # 謨ー謐ョ蜷梧ュ・邂。逅<EFBFBD>
|
||||
笏? 笏懌楳笏 analysis_center.php # 蛻<EFBFBD>梵荳ュ蠢<EFBFBD>
|
||||
笏? 笏披楳笏 settings.php # 讓。蝮苓ョセ鄂ョ
|
||||
笏懌楳笏 js/ # JavaScript譁<74>サカ
|
||||
│ ├── dashboard.js
|
||||
│ └── data_sync.js
|
||||
笏? 笏懌楳笏 dashboard.js
|
||||
笏? 笏披楳笏 data_sync.js
|
||||
笏懌楳笏 css/ # 譬キ蠑乗枚莉カ
|
||||
│ └── style.css
|
||||
└── services/ # 服务类
|
||||
├── ApiClient.php # AI平台API客户端
|
||||
笏? 笏披楳笏 style.css
|
||||
笏披楳笏 services/ # 譛榊苅邀?
|
||||
笏懌楳笏 ApiClient.php # AI蟷ウ蜿ーAPI螳「謌キ遶?
|
||||
笏懌楳笏 DataMapper.php # 謨ー謐ョ譏<EFBDAE>蟆<EFBFBD>スャ謐「
|
||||
笏披楳笏 SyncService.php # 蜷梧ュ・譛榊苅
|
||||
```
|
||||
@@ -181,7 +181,7 @@ ai_research_assistant_v1.0.0/
|
||||
```json
|
||||
{
|
||||
"name": "AI Research Assistant",
|
||||
"description": "壹证循AI科研平台集成模块 - 提供数据智能清洗、统计分析、文献支持等AI增值功能",
|
||||
"description": "螢ケ隸∝セェAI遘醍<EFBFBD>泌ケウ蜿ー髮<EFBFBD><EFBFBD>讓。蝮<EFBFBD> - 謠蝉セ帶焚謐ョ譎コ閭ス貂<EFBDBD>エ励∫サ溯ョ。蛻<EFBDA1>梵縲∵枚迪ョ謾ッ謖∫ュ陰I蠅槫シ蜉溯<E89C89>?,
|
||||
"authors": [
|
||||
{
|
||||
"name": "螢ケ隸∝セェ遘第橿",
|
||||
@@ -284,7 +284,7 @@ ai_research_assistant_v1.0.0/
|
||||
}
|
||||
```
|
||||
|
||||
#### 主逻辑类(AiResearchAssistantModule.php)
|
||||
#### 荳サ騾サ霎醍アサ<EFBFBD><EFBFBD>iResearchAssistantModule.php<EFBFBD>?
|
||||
|
||||
```php
|
||||
<?php
|
||||
@@ -295,11 +295,11 @@ use REDCap;
|
||||
|
||||
class AiResearchAssistantModule extends AbstractExternalModule {
|
||||
|
||||
// API客户端实例
|
||||
// API螳「謌キ遶ッ螳樔セ?
|
||||
private $apiClient;
|
||||
|
||||
/**
|
||||
* 构造函数 - 初始化API客户端
|
||||
* 譫<EFBFBD><EFBFBD>蜃ス謨?- 蛻晏ァ句喧API螳「謌キ遶?
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
@@ -311,7 +311,7 @@ class AiResearchAssistantModule extends AbstractExternalModule {
|
||||
}
|
||||
|
||||
/**
|
||||
* Hook: 数据保存时触发
|
||||
* Hook: 謨ー謐ョ菫晏ュ俶慮隗ヲ蜿?
|
||||
* 譬ク蠢<EFBDB8>粥閭ス<E996AD>壼ョ樊慮謗ィ騾∵焚謐ョ蛻ーAI蟷ウ蜿ー
|
||||
*/
|
||||
public function redcap_save_record(
|
||||
@@ -324,7 +324,7 @@ class AiResearchAssistantModule extends AbstractExternalModule {
|
||||
$response_id,
|
||||
$repeat_instance
|
||||
) {
|
||||
// 检查是否启用实时同步
|
||||
// 譽譟・譏ッ蜷ヲ蜷ッ逕ィ螳樊慮蜷梧ュ?
|
||||
$syncMode = $this->getProjectSetting('sync_mode');
|
||||
if ($syncMode !== 'realtime') {
|
||||
return;
|
||||
@@ -355,7 +355,7 @@ class AiResearchAssistantModule extends AbstractExternalModule {
|
||||
'ai_platform_response' => $result
|
||||
]);
|
||||
|
||||
// 如果启用了AI数据清洗,触发清洗任务
|
||||
// 螯よ棡蜷ッ逕ィ莠<EFBFBD>I謨ー謐ョ貂<EFBFBD>エ暦シ瑚ァヲ蜿第ク<EFBFBD>エ嶺ササ蜉?
|
||||
if ($this->getProjectSetting('enable_dc_module')) {
|
||||
$this->triggerDataCleaning($project_id, $record);
|
||||
}
|
||||
@@ -384,8 +384,8 @@ class AiResearchAssistantModule extends AbstractExternalModule {
|
||||
}
|
||||
|
||||
/**
|
||||
* Hook: 数据导出前
|
||||
* 功能:可以添加AI分析结果字段到导出
|
||||
* Hook: 謨ー謐ョ蟇シ蜃コ蜑?
|
||||
* 蜉溯<EFBFBD><EFBFBD>壼庄莉・豺サ蜉<EFBFBD>AI蛻<EFBFBD>梵扈捺棡蟄玲ョオ蛻ー蟇シ蜃?
|
||||
*/
|
||||
public function redcap_custom_verify_username($username) {
|
||||
// 鬪瑚ッ<E7919A>サ霎<EFBDBB>
|
||||
@@ -399,10 +399,10 @@ class AiResearchAssistantModule extends AbstractExternalModule {
|
||||
|
||||
foreach ($projects as $project_id) {
|
||||
try {
|
||||
// 获取项目所有数据
|
||||
// 闔キ蜿夜。ケ逶ョ謇譛画焚謐?
|
||||
$data = REDCap::getData($project_id, 'array');
|
||||
|
||||
// 批量推送
|
||||
// 謇ケ驥乗耳騾?
|
||||
$result = $this->apiClient->post('/api/v1/redcap/batch-sync', [
|
||||
'project_id' => $project_id,
|
||||
'data' => $data,
|
||||
@@ -457,7 +457,7 @@ class AiResearchAssistantModule extends AbstractExternalModule {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取启用模块的项目列表
|
||||
* 闔キ蜿門星逕ィ讓。蝮礼噪鬘ケ逶ョ蛻苓。?
|
||||
*/
|
||||
private function getEnabledProjects() {
|
||||
$sql = "SELECT project_id FROM redcap_external_modules
|
||||
@@ -480,7 +480,7 @@ class AiResearchAssistantModule extends AbstractExternalModule {
|
||||
|
||||
---
|
||||
|
||||
### 方案2:AI平台Backend API开发
|
||||
### 譁ケ譯<EFBFBD>2<EFBFBD>哂I蟷ウ蜿ーBackend API蠑蜿?
|
||||
|
||||
#### 譁ー蠅朿EDCap荳鍋畑讓。蝮<EFBDA1>
|
||||
|
||||
@@ -488,18 +488,18 @@ class AiResearchAssistantModule extends AbstractExternalModule {
|
||||
// backend/src/modules/redcap/ 逶ョ蠖慕サ捺桷
|
||||
backend/src/modules/redcap/
|
||||
笏懌楳笏 controllers/
|
||||
│ ├── RedcapController.ts // 主控制器
|
||||
│ ├── SyncController.ts // 数据同步控制器
|
||||
│ └── WebhookController.ts // Webhook控制器
|
||||
笏? 笏懌楳笏 RedcapController.ts // 荳サ謗ァ蛻カ蝎ィ
|
||||
笏? 笏懌楳笏 SyncController.ts // 謨ー謐ョ蜷梧ュ・謗ァ蛻カ蝎?
|
||||
笏? 笏披楳笏 WebhookController.ts // Webhook謗ァ蛻カ蝎?
|
||||
笏懌楳笏 services/
|
||||
│ ├── RedcapApiClient.ts // REDCap API客户端
|
||||
│ ├── DataTransformService.ts // 数据转换服务
|
||||
│ ├── SyncService.ts // 同步服务
|
||||
│ └── ProjectMappingService.ts // 项目映射服务
|
||||
笏? 笏懌楳笏 RedcapApiClient.ts // REDCap API螳「謌キ遶?
|
||||
笏? 笏懌楳笏 DataTransformService.ts // 謨ー謐ョ霓ャ謐「譛榊苅
|
||||
笏? 笏懌楳笏 SyncService.ts // 蜷梧ュ・譛榊苅
|
||||
笏? 笏披楳笏 ProjectMappingService.ts // 鬘ケ逶ョ譏<EFBFBD>蟆<EFBFBD>恪蜉。
|
||||
笏懌楳笏 models/
|
||||
│ └── redcap.prisma // Prisma Schema
|
||||
笏? 笏披楳笏 redcap.prisma // Prisma Schema
|
||||
笏懌楳笏 routes/
|
||||
│ └── redcap.routes.ts // 路由定义
|
||||
笏? 笏披楳笏 redcap.routes.ts // 霍ッ逕ア螳壻ケ<EFBFBD>
|
||||
笏披楳笏 types/
|
||||
笏披楳笏 redcap.types.ts // TypeScript邀サ蝙句ョ壻ケ<E5A3BB>
|
||||
```
|
||||
@@ -516,7 +516,7 @@ datasource redcap_schema {
|
||||
schemas = ["redcap_schema"]
|
||||
}
|
||||
|
||||
// REDCap项目映射表
|
||||
// REDCap鬘ケ逶ョ譏<EFBFBD>蟆<EFBFBD>。?
|
||||
model RedcapProject {
|
||||
id String @id @default(cuid())
|
||||
redcapProjectId Int @unique // REDCap鬘ケ逶ョID
|
||||
@@ -533,7 +533,7 @@ model RedcapProject {
|
||||
syncMode String @default("realtime") // realtime, scheduled, manual
|
||||
lastSyncAt DateTime?
|
||||
|
||||
// 元数据
|
||||
// 蜈<EFBFBD>焚謐?
|
||||
projectName String
|
||||
projectDescription String? @db.Text
|
||||
|
||||
@@ -548,7 +548,7 @@ model RedcapProject {
|
||||
@@schema("redcap_schema")
|
||||
}
|
||||
|
||||
// REDCap同步记录表
|
||||
// REDCap蜷梧ュ・隶ー蠖戊。?
|
||||
model RedcapSyncRecord {
|
||||
id String @id @default(cuid())
|
||||
projectId String
|
||||
@@ -558,13 +558,13 @@ model RedcapSyncRecord {
|
||||
eventId String? // REDCap莠倶サカID
|
||||
instrument String? // 陦ィ蜊募錐遘ー
|
||||
|
||||
// 同步状态
|
||||
// 蜷梧ュ・迥カ諤?
|
||||
status String // pending, syncing, success, failed
|
||||
direction String // redcap_to_ai, ai_to_redcap
|
||||
|
||||
// 謨ー謐ョ蠢ォ辣ァ
|
||||
redcapData Json // REDCap蜴溷ァ区焚謐ョ
|
||||
aiPlatformData Json? // AI平台处理后数据
|
||||
aiPlatformData Json? // AI蟷ウ蜿ー螟<EFBFBD>炊蜷取焚謐?
|
||||
|
||||
// 髞呵ッッ菫。諱ッ
|
||||
errorMessage String? @db.Text
|
||||
@@ -578,7 +578,7 @@ model RedcapSyncRecord {
|
||||
@@index([status])
|
||||
}
|
||||
|
||||
// REDCap字段映射表
|
||||
// REDCap蟄玲ョオ譏<EFBFBD>蟆<EFBFBD>。?
|
||||
model RedcapFieldMapping {
|
||||
id String @id @default(cuid())
|
||||
projectId String
|
||||
@@ -591,11 +591,11 @@ model RedcapFieldMapping {
|
||||
|
||||
// AI蟷ウ蜿ー蟄玲ョオ譏<EFBDB5>蟆<EFBFBD>
|
||||
aiPlatformField String? // 譏<>蟆<EFBFBD>芦AI蟷ウ蜿ー逧<EFBDB0>ュ玲ョオ蜷<EFBDB5>
|
||||
transformRule Json? // 转换规则(JSON)
|
||||
transformRule Json? // 霓ャ謐「隗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>SON<EFBFBD>?
|
||||
|
||||
// 譏<>蟆<EFBFBD><E89F86>鄂ョ
|
||||
isRequired Boolean @default(false)
|
||||
isIdentifier Boolean @default(false) // 是否为主键字段
|
||||
isIdentifier Boolean @default(false) // 譏ッ蜷ヲ荳コ荳サ髞ョ蟄玲ョ?
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
@@ -650,17 +650,17 @@ export async function redcapRoutes(fastify: FastifyInstance) {
|
||||
|
||||
// ========== 謨ー謐ョ蜷梧ュ・ ==========
|
||||
|
||||
// 手动触发同步(REDCap → AI平台)
|
||||
// 謇句勘隗ヲ蜿大酔豁・<EFBFBD><EFBFBD>EDCap 竊?AI蟷ウ蜿ー<E89CBF>?
|
||||
fastify.post('/api/v1/redcap/sync/import/:projectId',
|
||||
syncController.importFromRedcap
|
||||
);
|
||||
|
||||
// 推送数据到REDCap(AI平台 → REDCap)
|
||||
// 謗ィ騾∵焚謐ョ蛻ーREDCap<EFBFBD><EFBFBD>I蟷ウ蜿ー 竊?REDCap<EFBFBD>?
|
||||
fastify.post('/api/v1/redcap/sync/export/:projectId',
|
||||
syncController.exportToRedcap
|
||||
);
|
||||
|
||||
// 查询同步状态
|
||||
// 譟・隸「蜷梧ュ・迥カ諤?
|
||||
fastify.get('/api/v1/redcap/sync/status/:projectId',
|
||||
syncController.getSyncStatus
|
||||
);
|
||||
@@ -672,7 +672,7 @@ export async function redcapRoutes(fastify: FastifyInstance) {
|
||||
|
||||
// ========== Webhook謗・謾カ ==========
|
||||
|
||||
// REDCap External Module推送数据(实时同步)
|
||||
// REDCap External Module謗ィ騾∵焚謐ョ<EFBFBD>亥ョ樊慮蜷梧ュ・<EFBFBD>?
|
||||
fastify.post('/api/v1/redcap/webhook/records',
|
||||
webhookController.receiveRecordUpdate
|
||||
);
|
||||
@@ -684,7 +684,7 @@ export async function redcapRoutes(fastify: FastifyInstance) {
|
||||
|
||||
// ========== 蟄玲ョオ譏<EFBDB5>蟆<EFBFBD>ョ。逅<EFBDA1> ==========
|
||||
|
||||
// 获取REDCap项目元数据(字段列表)
|
||||
// 闔キ蜿乏EDCap鬘ケ逶ョ蜈<EFBFBD>焚謐ョ<EFBFBD>亥ュ玲ョオ蛻苓。ィ<EFBFBD>?
|
||||
fastify.get('/api/v1/redcap/projects/:id/metadata',
|
||||
redcapController.getProjectMetadata
|
||||
);
|
||||
@@ -701,12 +701,12 @@ export async function redcapRoutes(fastify: FastifyInstance) {
|
||||
|
||||
// ========== AI蜉溯<E89C89>髮<EFBFBD><E9ABAE> ==========
|
||||
|
||||
// 触发数据清洗(DC模块)
|
||||
// 隗ヲ蜿第焚謐ョ貂<EFBFBD>エ暦シ<EFBFBD>C讓。蝮暦シ?
|
||||
fastify.post('/api/v1/redcap/dc/clean',
|
||||
redcapController.triggerDataCleaning
|
||||
);
|
||||
|
||||
// 触发统计分析(SSA模块)
|
||||
// 隗ヲ蜿醍サ溯ョ。蛻<EFBFBD>梵<EFBFBD><EFBFBD>SA讓。蝮暦シ?
|
||||
fastify.post('/api/v1/redcap/ssa/analyze',
|
||||
redcapController.triggerStatisticalAnalysis
|
||||
);
|
||||
@@ -750,7 +750,7 @@ export class SyncController {
|
||||
if (!project) {
|
||||
return res.status(404).send({
|
||||
success: false,
|
||||
error: '项目不存在'
|
||||
error: '鬘ケ逶ョ荳榊ュ伜<EFBFBD>?
|
||||
});
|
||||
}
|
||||
|
||||
@@ -777,8 +777,8 @@ export class SyncController {
|
||||
project.fieldMappings
|
||||
);
|
||||
|
||||
// 4. 存储到AI平台数据库
|
||||
// 根据项目配置,推送到DC/SSA/ASL等模块
|
||||
// 4. 蟄伜お蛻ーAI蟷ウ蜿ー謨ー謐ョ蠎?
|
||||
// 譬ケ謐ョ鬘ケ逶ョ驟咲スョ<EFBFBD>梧耳騾∝芦DC/SSA/ASL遲画ィ。蝮?
|
||||
if (project.dcProjectId) {
|
||||
await this.importToDCModule(project.dcProjectId, transformedData);
|
||||
}
|
||||
@@ -848,74 +848,74 @@ export class SyncController {
|
||||
|
||||
---
|
||||
|
||||
## 📊 数据流设计
|
||||
## <EFBFBD>投 謨ー謐ョ豬∬ョセ隶?
|
||||
|
||||
### 数据流1:REDCap → AI平台(实时同步)
|
||||
### 謨ー謐ョ豬?<3F>啌EDCap 竊?AI蟷ウ蜿ー<E89CBF>亥ョ樊慮蜷梧ュ・<EFBDAD><EFBDA5>
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Step 1: 用户在REDCap录入数据 │
|
||||
│ ───────────────────────────────────────────────────── │
|
||||
│ 研究人员在REDCap表单中录入患者数据 │
|
||||
│ 例如:患者ID、年龄、性别、诊断、检验结果等 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Step 2: REDCap触发redcap_save_record Hook │
|
||||
│ ───────────────────────────────────────────────────── │
|
||||
│ External Module捕获保存事件 │
|
||||
│ 获取:project_id, record, instrument, event_id │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Step 3: 数据获取与映射 │
|
||||
│ ───────────────────────────────────────────────────── │
|
||||
│ 1. 调用REDCap::getData()获取完整记录 │
|
||||
│ 2. DataMapper转换REDCap EAV格式→AI平台标准格式 │
|
||||
│ 3. 应用字段映射规则(redcap_field_mappings表) │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Step 4: HTTP POST推送到AI平台API │
|
||||
│ ───────────────────────────────────────────────────── │
|
||||
│ URL: https://ai.yizx.com/api/v1/redcap/webhook/records │
|
||||
│ Payload: { │
|
||||
│ project_id: 123, │
|
||||
│ record_id: "PAT001", │
|
||||
│ data: {...}, │
|
||||
│ timestamp: 1735542000 │
|
||||
│ } │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Step 5: AI平台接收并处理 │
|
||||
│ ───────────────────────────────────────────────────── │
|
||||
│ 1. WebhookController验证请求签名 │
|
||||
│ 2. 存储原始数据到redcap_sync_records表 │
|
||||
│ 3. 异步触发AI处理任务(DC/SSA模块) │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ Step 6: AI处理与结果返回 │
|
||||
│ ───────────────────────────────────────────────────── │
|
||||
│ 1. DC模块:数据清洗、NER提取、缺失值处理 │
|
||||
│ 2. SSA模块:自动统计分析、生成可视化图表 │
|
||||
│ 3. 结果存储到AI平台数据库 │
|
||||
│ 4. (可选)回写结果到REDCap(通过API) │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? Step 1: 逕ィ謌キ蝨ィREDCap蠖募<EFBFBD>謨ー謐ョ 笏?
|
||||
笏? 笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏 笏?
|
||||
笏? 遐皮ゥカ莠コ蜻伜惠REDCap陦ィ蜊穂クュ蠖募<E8A096>謔」閠<EFBDA3>焚謐? 笏?
|
||||
笏? 萓句ヲゑシ壽ぅ閠<E38185>D縲∝ケエ鮴<EFBDB4>∵ァ蛻ォ縲∬ッ頑妙縲∵」鬪檎サ捺棡遲<E6A3A1> 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
竊?
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? Step 2: REDCap隗ヲ蜿喪edcap_save_record Hook 笏?
|
||||
笏? 笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏 笏?
|
||||
笏? External Module謐戊執菫晏ュ倅コ倶サカ 笏?
|
||||
笏? 闔キ蜿厄シ嗔roject_id, record, instrument, event_id 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
竊?
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? Step 3: 謨ー謐ョ闔キ蜿紋ク取丐蟆? 笏?
|
||||
笏? 笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏 笏?
|
||||
笏? 1. 隹<EFBFBD>畑REDCap::getData()闔キ蜿門ョ梧紛隶ー蠖<EFBFBD> 笏?
|
||||
笏? 2. DataMapper霓ャ謐「REDCap EAV譬シ蠑鞘<EFBFBD>AI蟷ウ蜿ー譬<EFBFBD>㊥譬シ蠑<EFBFBD> 笏?
|
||||
笏? 3. 蠎皮畑蟄玲ョオ譏<EFBFBD>蟆<EFBFBD>ァ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>edcap_field_mappings陦ィ<EFBFBD><EFBFBD> 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
竊?
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? Step 4: HTTP POST謗ィ騾∝芦AI蟷ウ蜿ーAPI 笏?
|
||||
笏? 笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏 笏?
|
||||
笏? URL: https://ai.yizx.com/api/v1/redcap/webhook/records 笏?
|
||||
笏? Payload: { 笏?
|
||||
笏? project_id: 123, 笏?
|
||||
笏? record_id: "PAT001", 笏?
|
||||
笏? data: {...}, 笏?
|
||||
笏? timestamp: 1735542000 笏?
|
||||
笏? } 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
竊?
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? Step 5: AI蟷ウ蜿ー謗・謾カ蟷カ螟<EFBFBD><EFBFBD>? 笏?
|
||||
笏? 笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏 笏?
|
||||
笏? 1. WebhookController鬪瑚ッ∬ッキ豎らュセ蜷<EFBFBD> 笏?
|
||||
笏? 2. 蟄伜お蜴溷ァ区焚謐ョ蛻ーredcap_sync_records陦? 笏?
|
||||
笏? 3. 蠑よュ・隗ヲ蜿羨I螟<EFBFBD>炊莉サ蜉。<EFBFBD><EFBFBD>C/SSA讓。蝮暦シ? 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
竊?
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? Step 6: AI螟<EFBFBD>炊荳守サ捺棡霑泌<EFBFBD>? 笏?
|
||||
笏? 笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏 笏?
|
||||
笏? 1. DC讓。蝮暦シ壽焚謐ョ貂<EFBFBD>エ励¨ER謠仙叙縲∫シコ螟ア蛟シ螟<EFBFBD><EFBFBD>? 笏?
|
||||
笏? 2. SSA讓。蝮暦シ夊<EFBFBD>蜉ィ扈溯ョ。蛻<EFBFBD>梵縲∫函謌仙庄隗<EFBFBD>喧蝗セ陦ィ 笏?
|
||||
笏? 3. 扈捺棡蟄伜お蛻ーAI蟷ウ蜿ー謨ー謐ョ蠎? 笏?
|
||||
笏? 4. <EFBFBD>亥庄騾会シ牙屓蜀咏サ捺棡蛻ーREDCap<EFBFBD>磯夊ソ②PI<EFBFBD>? 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
```
|
||||
|
||||
### 数据流2:AI平台 → REDCap(分析结果回写)
|
||||
### 謨ー謐ョ豬?<3F>哂I蟷ウ蜿ー 竊?REDCap<61>亥<EFBFBD>譫千サ捺棡蝗槫<E89D97><E6A7AB><EFBFBD>
|
||||
|
||||
```
|
||||
AI蟷ウ蜿ー螳梧<EFBFBD>蛻<EFBFBD>梵
|
||||
↓
|
||||
生成分析结果(JSON)
|
||||
↓
|
||||
竊?
|
||||
逕滓<EFBFBD>蛻<EFBFBD>梵扈捺棡<EFBFBD><EFBFBD>SON<EFBFBD>?
|
||||
竊?
|
||||
隹<EFBFBD>畑REDCap API: importRecords
|
||||
↓
|
||||
REDCap存储结果到特定字段
|
||||
↓
|
||||
竊?
|
||||
REDCap蟄伜お扈捺棡蛻ー迚ケ螳壼ュ玲ョ?
|
||||
竊?
|
||||
遐皮ゥカ莠コ蜻伜惠REDCap荳ュ譟・逵帰I蛻<EFBFBD>梵扈捺棡
|
||||
```
|
||||
|
||||
@@ -925,34 +925,34 @@ REDCap存储结果到特定字段
|
||||
|
||||
### Phase 1: 蝓コ遑蟇ケ謗・<E8AC97><EFBDA5>eek 1-2<>俄怛 莨伜<E88EA8>郤ァP0
|
||||
|
||||
**目标**:建立REDCap与AI平台的基本连接
|
||||
**逶ョ譬<EFBFBD>**<EFBFBD>壼サコ遶騎EDCap荳拶I蟷ウ蜿ー逧<EFBFBD>渕譛ャ霑樊<EFBFBD>?
|
||||
|
||||
#### Week 1: External Module鬪ィ譫カ
|
||||
|
||||
**任务清单**:
|
||||
**莉サ蜉。貂<EFBFBD>黒**<EFBFBD>?
|
||||
- [ ] 蛻帛サコExternal Module逶ョ蠖慕サ捺桷
|
||||
- [ ] 郛門<E9839B>config.json驟咲スョ譁<EFBDAE>サカ
|
||||
- [ ] 实现AiResearchAssistantModule.php基础类
|
||||
- [ ] 螳樒鴫AiResearchAssistantModule.php蝓コ遑邀?
|
||||
- [ ] 螳樒鴫redcap_save_record Hook<6F>亥渕遑迚茨シ<E88CA8>
|
||||
- [ ] 蠑蜿羨piClient.php<68><70>TTP螳「謌キ遶ッ<E981B6><EFBDAF>
|
||||
- [ ] 测试:REDCap保存数据→打印日志
|
||||
- [ ] 豬玖ッ包シ啌EDCap菫晏ュ俶焚謐ョ竊呈遠蜊ー譌・蠢?
|
||||
|
||||
**交付物**:
|
||||
**莠、莉倡<EFBFBD>?*<2A>?
|
||||
- `ai_research_assistant_v1.0.0/` 螳梧紛逶ョ蠖<EFBDAE>
|
||||
- 蜿ッ蝨ィREDCap荳ュ蜷ッ逕ィ逧Еxternal Module
|
||||
- 蝓コ遑譌・蠢苓ョー蠖募粥閭ス
|
||||
|
||||
#### Week 2: AI蟷ウ蜿ーAPI遶ッ轤ケ
|
||||
|
||||
**任务清单**:
|
||||
**莉サ蜉。貂<EFBFBD>黒**<EFBFBD>?
|
||||
- [ ] 蛻帛サコredcap_schema謨ー謐ョ蠎鉄chema
|
||||
- [ ] 实现Prisma模型(RedcapProject等3个表)
|
||||
- [ ] 螳樒鴫Prisma讓。蝙具シ<EFBFBD>edcapProject遲?荳ェ陦ィ<E999A6>?
|
||||
- [ ] 蠑蜿糎ebhookController謗・謾カ謨ー謐ョ
|
||||
- [ ] 螳樒鴫謨ー謐ョ霓ャ謐「譛榊苅DataTransformService
|
||||
- [ ] 开发项目管理API(CRUD)
|
||||
- [ ] 测试:REDCap推送→AI平台接收→存储
|
||||
- [ ] 蠑蜿鷹。ケ逶ョ邂。逅<EFBFBD>PI<EFBFBD><EFBFBD>RUD<EFBFBD>?
|
||||
- [ ] 豬玖ッ包シ啌EDCap謗ィ騾≫<EFBFBD>AI蟷ウ蜿ー謗・謾カ竊貞ュ伜<EFBFBD>?
|
||||
|
||||
**交付物**:
|
||||
**莠、莉倡<EFBFBD>?*<2A>?
|
||||
- `/api/v1/redcap/*` API遶ッ轤ケ
|
||||
- PostgreSQL redcap_schema蛻帛サコ
|
||||
- Postman豬玖ッ暮寔蜷<E5AF94>
|
||||
@@ -965,102 +965,102 @@ REDCap存储结果到特定字段
|
||||
|
||||
#### Week 3: 蟄玲ョオ譏<EFBDB5>蟆<EFBFBD>ウサ扈<EFBDBB>
|
||||
|
||||
**任务清单**:
|
||||
- [ ] 开发字段映射管理UI(前端React)
|
||||
**莉サ蜉。貂<EFBFBD>黒**<EFBFBD>?
|
||||
- [ ] 蠑蜿大ュ玲ョオ譏<EFBFBD>蟆<EFBFBD>ョ。逅<EFBFBD>I<EFBFBD>亥燕遶ッReact<EFBFBD>?
|
||||
- [ ] 螳樒鴫REDCap蜈<70>焚謐ョ闔キ蜿泡PI
|
||||
- [ ] 开发字段映射配置界面
|
||||
- [ ] 实现映射规则引擎(DataMapper)
|
||||
- [ ] 蠑蜿大ュ玲ョオ譏<EFBFBD>蟆<EFBFBD><EFBFBD>鄂ョ逡碁<EFBFBD>?
|
||||
- [ ] 螳樒鴫譏<EFBFBD>蟆<EFBFBD>ァ<EFBFBD><EFBFBD>蠑墓梼<EFBFBD><EFBFBD>ataMapper<EFBFBD>?
|
||||
- [ ] 謾ッ謖∝、肴揩霓ャ謐「<E8AC90>亥ヲゑシ壼黒菴崎スャ謐「縲∫シ也<EFBDBC>∵丐蟆<E4B890>シ<EFBFBD>
|
||||
- [ ] 豬玖ッ包シ壽丐蟆<E4B890><E89F86>鄂ョ竊呈焚謐ョ霓ャ謐「鬪瑚ッ<E7919A>
|
||||
|
||||
**交付物**:
|
||||
**莠、莉倡<EFBFBD>?*<2A>?
|
||||
- 蟄玲ョオ譏<EFBDB5>蟆ФI鬘オ髱「
|
||||
- 譏<>蟆<EFBFBD>ァ<EFBFBD><EFBDA7>蠑墓梼
|
||||
- 驟咲スョ譁<EFBDAE>。」
|
||||
|
||||
#### Week 4: 蜿悟髄蜷梧ュ・
|
||||
|
||||
**任务清单**:
|
||||
- [ ] 实现批量数据导入(REDCap → AI)
|
||||
- [ ] 实现分析结果回写(AI → REDCap)
|
||||
**莉サ蜉。貂<EFBFBD>黒**<EFBFBD>?
|
||||
- [ ] 螳樒鴫謇ケ驥乗焚謐ョ蟇シ蜈・<EFBFBD><EFBFBD>EDCap 竊?AI<41>?
|
||||
- [ ] 螳樒鴫蛻<EFBFBD>梵扈捺棡蝗槫<EFBFBD><EFBFBD><EFBFBD>I 竊?REDCap<EFBFBD>?
|
||||
- [ ] 蠑蜿舛ron螳壽慮蜷梧ュ・莉サ蜉。
|
||||
- [ ] 实现同步状态监控界面
|
||||
- [ ] 错误处理与重试机制
|
||||
- [ ] 测试:完整同步流程
|
||||
- [ ] 螳樒鴫蜷梧ュ・迥カ諤∫尅謗ァ逡碁<EFBFBD>?
|
||||
- [ ] 髞呵ッッ螟<EFBFBD>炊荳朱㍾隸墓惻蛻?
|
||||
- [ ] 豬玖ッ包シ壼ョ梧紛蜷梧ュ・豬∫ィ?
|
||||
|
||||
**交付物**:
|
||||
**莠、莉倡<EFBFBD>?*<2A>?
|
||||
- 蜿悟髄蜷梧ュ・蜉溯<E89C89>
|
||||
- 蜷梧ュ・逶第而Dashboard
|
||||
- 髞呵ッッ螟<EFBDAF>炊譛コ蛻カ
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: AI功能集成(Week 5-6)🎁 优先级P1
|
||||
### Phase 3: AI蜉溯<EFBFBD>髮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>eek 5-6<>解沁?莨伜<E88EA8>郤ァP1
|
||||
|
||||
**逶ョ譬<EFBDAE>**<EFBFBD>夐寔謌織C縲ヾSA縲、IA遲陰I讓。蝮<EFBFBD>
|
||||
|
||||
#### Week 5: DC讓。蝮鈴寔謌<E5AF94>
|
||||
|
||||
**任务清单**:
|
||||
**莉サ蜉。貂<EFBFBD>黒**<EFBFBD>?
|
||||
- [ ] REDCap謨ー謐ョ竊奪C讓。蝮苓<E89DAE>蜉ィ貂<EFBDA8>エ<EFBFBD>
|
||||
- [ ] 貂<>エ礼サ捺棡竊坦EDCap蝗槫<E89D97>
|
||||
- [ ] 在REDCap中展示清洗报告
|
||||
- [ ] 蝨ィREDCap荳ュ螻慕、コ貂<EFBFBD>エ玲冠蜻?
|
||||
- [ ] 謾ッ謖∵焔蜉ィ隗ヲ蜿第ク<E7ACAC>エ<EFBFBD>
|
||||
- [ ] 测试:录入→清洗→查看结果
|
||||
- [ ] 豬玖ッ包シ壼ス募<EFBFBD>竊呈ク<EFBFBD>エ冷<EFBFBD>譟・逵狗サ捺<EFBFBD>?
|
||||
|
||||
**交付物**:
|
||||
**莠、莉倡<EFBFBD>?*<2A>?
|
||||
- DC髮<43><E9ABAE>API
|
||||
- REDCap貂<70>エ玲冠蜻企。オ髱「
|
||||
|
||||
#### Week 6: SSA讓。蝮鈴寔謌<E5AF94>
|
||||
|
||||
**任务清单**:
|
||||
**莉サ蜉。貂<EFBFBD>黒**<EFBFBD>?
|
||||
- [ ] REDCap謨ー謐ョ竊担SA讓。蝮苓<E89DAE>蜉ィ蛻<EFBDA8>梵
|
||||
- [ ] 支持三大分析路径(队列/预测/RCT)
|
||||
- [ ] 在REDCap中嵌入统计报告
|
||||
- [ ] 可视化图表展示
|
||||
- [ ] 测试:数据录入→自动分析→报告生成
|
||||
- [ ] 謾ッ謖∽ク牙、ァ蛻<EFBFBD>梵霍ッ蠕<EFBFBD>シ磯弌蛻?鬚<>オ<EFBFBD>/RCT<EFBFBD>?
|
||||
- [ ] 蝨ィREDCap荳ュ蠏悟<EFBFBD>扈溯ョ。謚・蜻?
|
||||
- [ ] 蜿ッ隗<EFBFBD>喧蝗セ陦ィ螻慕、?
|
||||
- [ ] 豬玖ッ包シ壽焚謐ョ蠖募<EFBFBD>竊定<EFBFBD>蜉ィ蛻<EFBFBD>梵竊呈冠蜻顔函謌?
|
||||
|
||||
**交付物**:
|
||||
**莠、莉倡<EFBFBD>?*<2A>?
|
||||
- SSA髮<41><E9ABAE>API
|
||||
- 扈溯ョ。謚・蜻雁オ悟<EFBDB5>鬘オ髱「
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: 高级功能(Week 7-8)🌟 优先级P2
|
||||
### Phase 4: 鬮倡コァ蜉溯<EFBFBD><EFBFBD><EFBFBD>eek 7-8<>解沍?莨伜<E88EA8>郤ァP2
|
||||
|
||||
**目标**:AI辅助录入、智能质控等增值功能
|
||||
**逶ョ譬<EFBFBD>**<EFBFBD>哂I霎<EFBFBD>勧蠖募<EFBFBD>縲∵匱閭ス雍ィ謗ァ遲牙「槫シ蜉溯<EFBFBD>?
|
||||
|
||||
#### Week 7: AI霎<49>勧蠖募<E8A096>
|
||||
|
||||
**任务清单**:
|
||||
- [ ] 开发智能自动完成(基于历史数据)
|
||||
- [ ] 异常值预警(实时AI判断)
|
||||
- [ ] 字段关联推荐(AI预测)
|
||||
**莉サ蜉。貂<EFBFBD>黒**<EFBFBD>?
|
||||
- [ ] 蠑蜿第匱閭ス閾ェ蜉ィ螳梧<EFBFBD><EFBFBD>亥渕莠主紙蜿イ謨ー謐ョ<EFBFBD>?
|
||||
- [ ] 蠑ょクク蛟シ鬚<EFBFBD>ュヲ<EFBFBD>亥ョ樊慮AI蛻、譁ュ<EFBFBD>?
|
||||
- [ ] 蟄玲ョオ蜈ウ閨疲耳闕撰シ<EFBFBD>I鬚<EFBFBD>オ具シ?
|
||||
- [ ] 蠖募<E8A096>謨育紫謠仙合扈溯ョ。
|
||||
- [ ] 测试:录入体验优化验证
|
||||
- [ ] 豬玖ッ包シ壼ス募<EFBFBD>菴馴ェ御シ伜喧鬪瑚ッ?
|
||||
|
||||
**交付物**:
|
||||
**莠、莉倡<EFBFBD>?*<2A>?
|
||||
- AI霎<49>勧蠖募<E8A096>JS謠剃サカ
|
||||
- 譎コ閭ス雍ィ謗ァ隗<EFBDA7><E99A97>蠑墓梼
|
||||
|
||||
#### Week 8: 综合测试与优化
|
||||
#### Week 8: 扈シ蜷域オ玖ッ穂ク惹シ伜<EFBFBD>?
|
||||
|
||||
**任务清单**:
|
||||
- [ ] 性能测试(100万条记录同步)
|
||||
**莉サ蜉。貂<EFBFBD>黒**<EFBFBD>?
|
||||
- [ ] 諤ァ閭ス豬玖ッ包シ?00荳<30>擅隶ー蠖募酔豁・<E8B181>?
|
||||
- [ ] 螳牙<E89EB3>豬玖ッ包シ<E58C85>PI隶、隸√∵焚謐ョ蜉<EFBDAE>蟇<EFBFBD>シ<EFBFBD>
|
||||
- [ ] 用户验收测试(UAT)
|
||||
- [ ] 文档编写(用户手册+开发文档)
|
||||
- [ ] 部署到生产环境
|
||||
- [ ] 逕ィ謌キ鬪梧噺豬玖ッ包シ<EFBFBD>AT<EFBFBD>?
|
||||
- [ ] 譁<EFBFBD>。」郛門<EFBFBD><EFBFBD>育畑謌キ謇句<EFBFBD>?蠑蜿第枚譯」<E8ADAF><EFBDA3>
|
||||
- [ ] 驛ィ鄂イ蛻ー逕滉コァ邇ッ蠅?
|
||||
|
||||
**交付物**:
|
||||
**莠、莉倡<EFBFBD>?*<2A>?
|
||||
- 諤ァ閭ス豬玖ッ墓冠蜻<E586A0>
|
||||
- 螳梧紛譁<E7B49B>。」
|
||||
- 逕滉コァ邇ッ蠅<EFBDAF>Κ鄂イ
|
||||
|
||||
---
|
||||
|
||||
## 🔒 安全性设计
|
||||
## <EFBFBD>白 螳牙<E89EB3>諤ァ隶セ隶?
|
||||
|
||||
### API隶、隸∵惻蛻カ
|
||||
|
||||
@@ -1097,7 +1097,7 @@ function verifySignature(req) {
|
||||
|
||||
- REDCap API Token<65>壻スソ逕ィAES-256蜉<36>蟇<EFBFBD>ュ伜お
|
||||
- 莨<>霎灘刈蟇<E58888>シ壼シコ蛻カHTTPS
|
||||
- 敏感字段:支持字段级加密(PHI数据)
|
||||
- 謨乗─蟄玲ョオ<EFBFBD>壽髪謖∝ュ玲ョオ郤ァ蜉<EFBFBD>蟇<EFBFBD>シ<EFBFBD>HI謨ー謐ョ<EFBFBD>?
|
||||
|
||||
### 譚<>剞謗ァ蛻カ
|
||||
|
||||
@@ -1122,73 +1122,73 @@ interface UserPermission {
|
||||
|
||||
## <20>答 謚譛ッ譬域サ扈<EFBDBB>
|
||||
|
||||
| 层级 | REDCap侧 | AI平台侧 |
|
||||
| 螻らコァ | REDCap萓?| AI蟷ウ蜿ー萓?|
|
||||
|------|---------|---------|
|
||||
| **郛也ィ玖ッュ險** | PHP 7.4+ | TypeScript/Node.js 22 |
|
||||
| **譯<>楔** | REDCap EM Framework v16 | Fastify v4 |
|
||||
| **数据库** | MySQL 5.7+ | PostgreSQL 15 |
|
||||
| **数据模型** | EAV模型 | 关系型+JSONB |
|
||||
| **謨ー謐ョ蠎?* | MySQL 5.7+ | PostgreSQL 15 |
|
||||
| **謨ー謐ョ讓。蝙<EFBFBD>** | EAV讓。蝙<EFBFBD> | 蜈ウ邉サ蝙?JSONB |
|
||||
| **蜑咲ォッ** | jQuery + Bootstrap 5 | React 19 + Ant Design 6 |
|
||||
| **API** | REDCap RESTful API | Fastify RESTful API |
|
||||
| **隶、隸<EFBDA4>** | API Token | HMAC-SHA256遲セ蜷<EFBDBE> |
|
||||
| **日志** | REDCap日志表 | Winston + SLS |
|
||||
| **譌・蠢<EFBFBD>** | REDCap譌・蠢苓。?| Winston + SLS |
|
||||
| **莉サ蜉。髦溷<E9ABA6>** | REDCap Cron | pg-boss (Postgres-Only) |
|
||||
|
||||
---
|
||||
|
||||
## 📝 下一步行动
|
||||
## <EFBFBD>統 荳倶ク豁・陦悟<E999A6>?
|
||||
|
||||
### 遶句叉陦悟勘<E6829F>域悽蜻ィ<E89CBB><EFBDA8>
|
||||
|
||||
1. **确认需求**:
|
||||
1. **遑ョ隶、髴豎?*<2A>?
|
||||
- [ ] 遑ョ隶、莨伜<E88EA8>郤ァ<E983A4><EFBDA7>C莨伜<E88EA8><E4BC9C>溯ソ俶弍SSA莨伜<E88EA8><E4BC9C>滂シ<E6BB82>
|
||||
- [ ] 遑ョ隶、驛ィ鄂イ蠖「諤<EFBDA2>シ井コ醍ォッSaaS<61>溯ソ俶弍遘∵怏蛹夜Κ鄂イ<E98482>滂シ<E6BB82>
|
||||
- [ ] 遑ョ隶、REDCap譛榊苅蝎ィ菫。諱ッ<E8ABB1><EFBDAF>RL縲∫沿譛ャ縲∬ョソ髣ョ譚<EFBDAE>剞<EFBFBD><E5899E>
|
||||
|
||||
2. **环境准备**:
|
||||
- [ ] 搭建REDCap测试环境(使用Docker)
|
||||
- [ ] 创建测试项目和测试数据
|
||||
2. **邇ッ蠅<EFBFBD>㊥螟<EFBFBD>**<EFBFBD>?
|
||||
- [ ] 謳ュ蟒コREDCap豬玖ッ慕識蠅<EFBFBD>シ井スソ逕ィDocker<EFBFBD>?
|
||||
- [ ] 蛻帛サコ豬玖ッ暮。ケ逶ョ蜥梧オ玖ッ墓焚謐?
|
||||
- [ ] 驟咲スョAI蟷ウ蜿ー豬玖ッ柊PI
|
||||
|
||||
3. **启动开发**:
|
||||
3. **蜷ッ蜉ィ蠑蜿?*<2A>?
|
||||
- [ ] 蛻帛サコExternal Module逶ョ蠖<EFBDAE>
|
||||
- [ ] 蛻晏ァ句喧Git莉灘コ<E78198>
|
||||
- [ ] 郛門<E9839B>config.json
|
||||
|
||||
### 技术预研
|
||||
### 謚譛ッ鬚<EFBFBD><EFBFBD>?
|
||||
|
||||
1. **REDCap API豺ア蜈・豬玖ッ<E78E96>**
|
||||
2. **External Module Hook譛コ蛻カ鬪瑚ッ<E7919A>**
|
||||
3. **螟ァ謨ー謐ョ驥丞酔豁・諤ァ閭ス豬玖ッ<E78E96>**
|
||||
4. **移动端(REDCap Mobile App)集成可行性**
|
||||
4. **遘サ蜉ィ遶ッ<EFBFBD><EFBFBD>EDCap Mobile App<EFBFBD>蛾寔謌仙庄陦梧?*
|
||||
|
||||
---
|
||||
|
||||
## <20>識 謌仙粥譬<E7B2A5>㊥
|
||||
|
||||
**MVP版本(Phase 1-2完成)**:
|
||||
- ✅ REDCap数据能推送到AI平台
|
||||
- ✅ AI平台能接收并存储数据
|
||||
- ✅ 字段映射配置功能可用
|
||||
- ✅ 基础同步监控可用
|
||||
**MVP迚域悽<EFBFBD><EFBFBD>hase 1-2螳梧<EFBFBD><EFBFBD>?*<2A>?
|
||||
- 笨?REDCap謨ー謐ョ閭ス謗ィ騾∝芦AI蟷ウ蜿ー
|
||||
- 笨?AI蟷ウ蜿ー閭ス謗・謾カ蟷カ蟄伜お謨ー謐ョ
|
||||
- 笨?蟄玲ョオ譏<EFBDB5>蟆<EFBFBD><E89F86>鄂ョ蜉溯<E89C89>蜿ッ逕ィ
|
||||
- 笨?蝓コ遑蜷梧ュ・逶第而蜿ッ逕ィ
|
||||
|
||||
**标准版本(Phase 3完成)**:
|
||||
- ✅ DC模块集成完成(自动清洗)
|
||||
- ✅ SSA模块集成完成(自动分析)
|
||||
- ✅ 分析结果可在REDCap中查看
|
||||
- ✅ 用户体验流畅
|
||||
**譬<EFBFBD>㊥迚域悽<EFBFBD><EFBFBD>hase 3螳梧<E89EB3><E6A2A7>?*<2A>?
|
||||
- 笨?DC讓。蝮鈴寔謌仙ョ梧<EFBDAE><E6A2A7>郁<EFBFBD>蜉ィ貂<EFBDA8>エ暦シ<E69AA6>
|
||||
- 笨?SSA讓。蝮鈴寔謌仙ョ梧<EFBFBD><EFBFBD>郁<EFBFBD>蜉ィ蛻<EFBFBD>梵<EFBFBD><EFBFBD>
|
||||
- 笨?蛻<>梵扈捺棡蜿ッ蝨ィREDCap荳ュ譟・逵?
|
||||
- 笨?逕ィ謌キ菴馴ェ梧オ∫腐
|
||||
|
||||
**企业版本(Phase 4完成)**:
|
||||
- ✅ AI辅助录入提升效率50%+
|
||||
- ✅ 智能质控减少错误率80%+
|
||||
- ✅ 支持100万+记录同步
|
||||
- ✅ 安全合规(符合FDA 21 CFR Part 11)
|
||||
**莨∽ク夂沿譛ャ<EFBFBD><EFBFBD>hase 4螳梧<E89EB3><E6A2A7>?*<2A>?
|
||||
- 笨?AI霎<49>勧蠖募<E8A096>謠仙合謨育紫50%+
|
||||
- 笨?譎コ閭ス雍ィ謗ァ蜃丞ー鷹漠隸ッ邇?0%+
|
||||
- 笨?謾ッ謖<EFBDAF>100荳?隶ー蠖募酔豁・
|
||||
- 笨?螳牙<E89EB3>蜷郁ァ<E98381>シ育ャヲ蜷<EFBDA6>DA 21 CFR Part 11<EFBFBD>?
|
||||
|
||||
---
|
||||
|
||||
**譁<>。」迚域悽**<EFBFBD>嘛1.0
|
||||
**最后更新**:2025-12-30
|
||||
**下次更新**:Phase 1启动后更新开发进度
|
||||
**譛蜷取峩譁?*<2A>?025-12-30
|
||||
**荳区ャ。譖エ譁ー**<EFBFBD>啀hase 1蜷ッ蜉ィ蜷取峩譁ー蠑蜿題ソ帛コ?
|
||||
|
||||
---
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,53 +1,44 @@
|
||||
# **REDCap 逕滉コァ邇ッ蠅<EFBDAF>Κ鄂イ<E98482>哘CS vs SAE 豺ア蠎ヲ蜀ウ隶ョ謚・蜻<EFBDA5>**
|
||||
|
||||
## **1\. 核心结论:认可 ECS 优先策略**
|
||||
## **1\. 譬ク蠢<EFBFBD>サ楢ョコ<EFBFBD>夊ョ、蜿?ECS 莨伜<E88EA8>遲也払**
|
||||
|
||||
针对 IIT Manager Agent 项目,我们决定将 REDCap 生产环境部署在 **ECS (Docker 模式)** 运行,而不是 SAE。
|
||||
髓亥ッケ IIT Manager Agent 鬘ケ逶ョ<EFBFBD>梧<EFBFBD>莉ャ蜀ウ螳壼ー<EFBFBD> REDCap 逕滉コァ邇ッ蠅<EFBDAF>Κ鄂イ蝨?**ECS (Docker 讓。蠑<EFBDA1>)** 霑占。鯉シ瑚御ク肴<EFBDB8>?SAE縲?
|
||||
### **荳コ莉荵域<E88DB5>莉ャ窶懆ョ、髞吮晏ケカ霓ャ蜷<EFBDAC> ECS<43>?*
|
||||
|
||||
### **为什么我们“认错”并转向 ECS?**
|
||||
|
||||
在讨论 AI 后端时,SAE 的免运维特性很吸引人,但 REDCap 的三个“致命特性”决定了它在 SAE 上会极其痛苦:
|
||||
|
||||
1. **Cron 依赖(心跳丢失)**:REDCap 每分钟都需要运行一次 cron.php。在 SAE 中,你得额外买 SchedulerX 服务;在 ECS,只需一行 crontab 就能搞定且 100% 可靠。
|
||||
2. **Session 粘滞(掉线噩梦)**:REDCap 默认将会话存本地。SAE 是多实例的,如果没做 Redis 共享,用户登录后会反复掉线,2 人团队去修这个 Bug 会耗费大量时间。
|
||||
3. **文件系统 POSIX 依赖**:REDCap 像 10 年前的软件一样极其依赖本地文件夹读写。SAE 必须挂载 NAS,网络延迟会拖慢整个系统的响应。
|
||||
|
||||
## **2\. 深度对比:务实派的决策依据**
|
||||
蝨ィ隶ィ隶?AI 蜷守ォッ譌カ<E8AD8C>郡AE 逧<><E980A7>霑千サエ迚ケ諤ァ蠕亥精蠑穂ココ<EFBDBA>御ス?REDCap 逧<>ク我クェ窶懆<E7AAB6>蜻ス迚ケ諤ァ窶晏<E7AAB6>螳壻コ<E5A3BB>ョ<EFBFBD>惠 SAE 荳贋シ壽栫蜈カ逞幄協<E5B984>?
|
||||
1. **Cron 萓晁オ厄シ亥ソ<E4BAA5>キウ荳「螟ア<E89E9F><EFBDB1>**<EFBFBD>啌EDCap 豈丞<E8B188>髓滄<E9AB93>髴隕∬ソ占。御ク谺?cron.php縲ょ惠 SAE 荳ュ<E88DB3>御ス<E5BEA1>蠕鈴「晏、紋ケ?SchedulerX 譛榊苅<E6A68A>帛惠 ECS<43>悟宵髴荳陦?crontab 蟆ア閭ス謳槫ョ壻ク?100% 蜿ッ髱<EFBDAF>縲?
|
||||
2. **Session 邊俶サ橸シ域脂郤ソ蝎ゥ譴ヲ<E8ADB4><EFBDA6>**<EFBFBD>啌EDCap 鮟倩ョ、蟆<EFBDA4>シ夊ッ晏ュ俶悽蝨ー縲4AE 譏ッ螟壼ョ樔セ狗噪<E78B97>悟ヲよ棡豐。蛛<EFBDA1> Redis 蜈ア莠ォ<E88EA0>檎畑謌キ逋サ蠖募錘莨壼渚螟肴脂郤ソ<E983A4><EFBDBF>2 莠コ蝗「髦溷悉菫ョ霑吩ク?Bug 莨夊苓エケ螟ァ驥乗慮髣エ縲?
|
||||
3. **譁<>サカ邉サ扈<EFBDBB> POSIX 萓晁オ<E69981>**<EFBFBD>啌EDCap 蜒?10 蟷エ蜑咲噪霓ッ莉カ荳譬キ譫∝<E8ADAB>萓晁オ匁悽蝨ー譁<EFBDB0>サカ螟ケ隸サ蜀吶4AE 蠢<>。サ謖りスス NAS<41>檎ス醍サ懷サカ霑滉シ壽許諷「謨エ荳ェ邉サ扈溽噪蜩榊コ斐?
|
||||
## **2\. 豺ア蠎ヲ蟇ケ豈費シ壼苅螳樊エセ逧<EFBDBE><E980A7>遲紋セ晄<EFBDBE>?*
|
||||
|
||||
| 扈エ蠎ヲ | ECS \+ Docker (謌台サャ逧<EFBDAC>画叫) | SAE (Serverless) | 扈楢ョコ |
|
||||
| :---- | :---- | :---- | :---- |
|
||||
| **部署成本** | **低**。入门级 ECS (2核4G) 约 1500元/年。 | **高**。SAE \+ NAS \+ 闲置费用可能更贵。 | **ECS 胜** |
|
||||
| **配置复杂度** | **极简**。只需运行 docker-compose.yml。 | **复杂**。需解决共享存储、Session同步、定时任务。 | **ECS 胜** |
|
||||
| **系统透明度** | **透明**。直接 docker logs 查看 PHP 日志。 | **黑盒**。云原生链路长,报错时排查难度大。 | **ECS 胜** |
|
||||
| **可移植性** | **最强**。这份 Docker 配置可以原封不动挪到医院内网。 | **差**。医院内网通常没有 SAE 这种环境。 | **ECS 胜** |
|
||||
| **驛ィ鄂イ謌先悽** | **菴?*縲ょ<E7B8B2>髣ィ郤ァ ECS (2譬?G) 郤?1500蜈?蟷エ縲?| **鬮?*縲4AE \+ NAS \+ 髣イ鄂ョ雍ケ逕ィ蜿ッ閭ス譖エ雍オ縲?| **ECS 閭?* |
|
||||
| **驟咲スョ螟肴揩蠎?* | **譫∫ョ**縲ょ宵髴霑占。<E58DA0> docker-compose.yml縲?| **螟肴揩**縲る怙隗」蜀ウ蜈ア莠ォ蟄伜お縲ヾession蜷梧ュ・縲∝ョ壽慮莉サ蜉。縲?| **ECS 閭?* |
|
||||
| **邉サ扈滄乗<EFBFBD>蠎?* | **騾乗<EFBFBD>**縲ら峩謗?docker logs 譟・逵<EFBFBD> PHP 譌・蠢励?| **鮟醍將**縲ゆコ大次逕滄得霍ッ髟ソ<E9AB9F>梧冠髞呎慮謗呈衍髫セ蠎ヲ螟ァ縲?| **ECS 閭?* |
|
||||
| **蜿ッ遘サ讀肴?* | **譛蠑?*縲りソ吩サ?Docker 驟咲スョ蜿ッ莉・蜴溷ー∽ク榊勘謖ェ蛻ー蛹サ髯「蜀<EFBDA2>ス代?| **蟾?*縲ょ現髯「蜀<EFBDA2>ス鷹壼クク豐。譛<EFBDA1> SAE 霑咏ァ咲識蠅<E8AD98>?| **ECS 閭?* |
|
||||
|
||||
## **3\. 2 人团队的“生存之道”**
|
||||
|
||||
作为一个只有 2 人的团队,我们的时间应该花在 **Agent 的 Prompt 调优** 和 **业务逻辑** 上,而不是花在“调试云产品之间的连接”上。
|
||||
|
||||
* **ECS 方案**:你就像拥有了一台真正的电脑。文件在哪、日志在哪、数据库连没连上,你一眼就能看清。
|
||||
* **SAE 方案**:你会陷入“为什么挂载了 NAS 还是没写权限?”、“为什么 Cron 没触发?”这种与业务无关的琐事中。
|
||||
## **3\. 2 莠コ蝗「髦溽噪窶懃函蟄倅ケ矩%窶?*
|
||||
|
||||
菴應クコ荳荳ェ蜿ェ譛?2 莠コ逧<EFBDBA>屬髦滂シ梧<EFBDBC>莉ャ逧<EFBDAC>慮髣エ蠎碑ッ・闃ア蝨ィ **Agent 逧?Prompt 隹<>シ<EFBFBD>** 蜥?**荳壼苅騾サ霎<EFBDBB>** 荳奇シ瑚御ク肴弍闃ア蝨ィ窶懆ー<E68786>ッ穂コ台コァ蜩∽ケ矩龍逧<E9BE8D>ソ樊磁窶昜ク翫?
|
||||
* **ECS 譁ケ譯<EFBDB9>**<2A>壻ス<E5A3BB>蟆ア蜒乗凶譛我コ<E68891>ク蜿ー逵滓ュ」逧<EFBDA3>鳩閼代よ枚莉カ蝨ィ蜩ェ縲∵律蠢怜惠蜩ェ縲∵焚謐ョ蠎楢ソ樊イ。霑樔ク奇シ御ス<E5BEA1>荳逵シ蟆ア閭ス逵区ク<E58CBA>?
|
||||
* **SAE 譁ケ譯<EFBDB9>**<2A>壻ス<E5A3BB>莨夐匚蜈・窶應クコ莉荵域撃霓ス莠<EFBDBD> NAS 霑俶弍豐。蜀呎揀髯撰シ溪昴≫應クコ莉荵?Cron 豐。隗ヲ蜿托シ溪晁ソ咏ァ堺ク惹ク壼苅譌<E88B85>蜈ウ逧<EFBDB3>瑞莠倶クュ縲?
|
||||
## **4\. 譛扈亥ョ夂ィソ<EFBDA8>壽キキ蜷域楔譫<E6A594>統蝗セ**
|
||||
|
||||
我们将采取\*\*“混合云”\*\*的思路,发挥各自的长处:
|
||||
謌台サャ蟆<EFBFBD>㊦蜿暴*\*窶懈キキ蜷井コ鯛拿*\*逧<>晁キッ<EFBDB7>悟書謖・蜷<EFBDA5><E89CB7>逧<EFBFBD>柄螟<E69F84>シ?
|
||||
### **4.1 謨ー謐ョ蟷ウ髱「 (Data Layer) \-\> 驛ィ鄂イ蝨?ECS**
|
||||
|
||||
### **4.1 数据平面 (Data Layer) \-\> 部署在 ECS**
|
||||
|
||||
* **组件**:REDCap (Apache \+ PHP 8.1)。
|
||||
* **方式**:使用 Docker-Compose 运行。
|
||||
* **存储**:附件存储在 ECS 挂载的云盘;数据库连接 **RDS MySQL**。
|
||||
* **优势**:保证了 EDC 系统的绝对稳定和传统运维的简便。
|
||||
|
||||
### **4.2 控制平面 (AI Agent Layer) \-\> 部署在 SAE**
|
||||
|
||||
* **组件**:Node.js 后端、Python 算法、AI 前端。
|
||||
* **方式**:Serverless 部署。
|
||||
* **优势**:利用 SAE 处理 AI 这种流量波动大、需要弹性伸缩的模块。
|
||||
* **扈<>サカ**<2A>啌EDCap (Apache \+ PHP 8.1)縲?
|
||||
* **譁ケ蠑<EFBDB9>**<2A>壻スソ逕?Docker-Compose 霑占。後?
|
||||
* **蟄伜お**<2A>夐刋莉カ蟄伜お蝨ィ ECS 謖りスス逧<EFBDBD>コ醍尨<E9868D>帶焚謐ョ蠎楢ソ樊<EFBDBF>?**RDS MySQL**縲?
|
||||
* **莨伜漢**<2A>壻ソ晁ッ∽コ<E288BD> EDC 邉サ扈溽噪扈晏ッケ遞ウ螳壼柱莨<E69FB1>扈溯ソ千サエ逧<EFBDB4>ョ萓ソ縲?
|
||||
### **4.2 謗ァ蛻カ蟷ウ髱「 (AI Agent Layer) \-\> 驛ィ鄂イ蝨?SAE**
|
||||
|
||||
* **扈<>サカ**<2A>哢ode.js 蜷守ォッ縲 ̄ython 邂玲ウ輔、I 蜑咲ォッ縲?
|
||||
* **譁ケ蠑<EFBDB9>**<2A>售erverless 驛ィ鄂イ縲?
|
||||
* **莨伜漢**<2A>壼茜逕?SAE 螟<>炊 AI 霑咏ァ肴オ<E882B4>㍼豕「蜉ィ螟ァ縲<EFBDA7>怙隕∝シケ諤ァ莨ク郛ゥ逧<EFBDA9>ィ。蝮励?
|
||||
## **5\. 蟇ケ蜷守サュ蠑蜿醍噪諢丈ケ<E4B888>**
|
||||
|
||||
1. **本地环境即生产环境**:由于 ECS 跑的是 Docker,你在本地 03-REDCap本地部署方案.md 里写的代码,直接就能上线,没有任何“环境漂移”。
|
||||
2. **离线交付预演**:如果未来医院要求内网部署,我们已经有了一套完整的、基于 ECS/Docker 的交付包,这比 SAE 方案更容易被医院 IT 接受。
|
||||
|
||||
**当前状态**:Deployment Strategy Locked | **建议**:立即执行基于 ECS 的生产环境搭建。
|
||||
1. **譛ャ蝨ー邇ッ蠅<EFBFBD>叉逕滉コァ邇ッ蠅?*<2A>夂罰莠?ECS 霍醍噪譏?Docker<65>御ス<E5BEA1>蝨ィ譛ャ蝨?03-REDCap譛ャ蝨ー驛ィ鄂イ譁ケ譯<EFBDB9>.md 驥悟<E9A9A5>逧<EFBFBD>サ」遐<EFBDA3>シ檎峩謗・蟆ア閭ス荳顔コソ<EFBDBA>梧イ。譛我ササ菴補懃識蠅<E8AD98>シらァサ窶昴?
|
||||
2. **遖サ郤ソ莠、莉倬「<EFBFBD>シ<EFBFBD>**<EFBFBD>壼ヲよ棡譛ェ譚・蛹サ髯「隕∵アょ<EFBFBD>鄂鷹Κ鄂イ<EFBFBD>梧<EFBFBD>莉ャ蟾イ扈乗怏莠<EFBFBD>ク螂怜ョ梧紛逧<EFBFBD>∝渕莠?ECS/Docker 逧<>コ、莉伜桁<E4BC9C>瑚ソ呎ッ?SAE 譁ケ譯域峩螳ケ譏楢「ォ蛹サ髯「 IT 謗・蜿励?
|
||||
**蠖灘燕迥カ諤?*<2A>咼eployment Strategy Locked | **蟒コ隶ョ**<EFBFBD>夂ォ句叉謇ァ陦悟渕莠?ECS 逧<>函莠ァ邇ッ蠅<EFBDAF>政蟒コ縲
|
||||
Reference in New Issue
Block a user