Files
AIclinicalresearch/docs/03-业务模块/Redcap/04-参考资料/03-REDCap本地Docker开发环境部署方案_旧版.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

46 KiB
Raw Blame History

REDCap Docker<65>函蔡<E587BD><EFBFBD><EFBFBD><E59A97><EFBFBD>?<3F>煺漣銝<E6BCA3><E98A9D><EFBFBD>扳沲<E689B3><E6B2B2><EFBFBD>

*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦嚗? v2.0
*<EFBFBD>𥕦遣<EFBFBD><EFBFBD>嚗? 2026-01-01
<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD><EFBFBD> 2026-01-01嚗<31><EFBFBD>圃CS<43>唾悅<E594BE><EFBFBD>靽株恥嚗? *<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗? <20><>紡IIT Manager Agent憿寧𤌍<E5AFA7><F0A48C8D>EDCap Docker<65><EFBFBD><E887AC>剖遣嚗<E981A3><E59A97><EFBFBD>?<3F>煺漣<E785BA><EFBFBD><EFBFBD><E98A9D><EFBFBD>
*<EFBFBD><EFBFBD><EFBFBD>園𡢿嚗? 25<32><35><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 潃鐥<E6BD83>潃鐥<E6BD83>潃?Day 2撘<32><E69298><EFBFBD><EFBFBD>
*<EFBFBD><EFBFBD>函蔡<EFBFBD>園𡢿嚗? 1.5撠𤩺𧒄
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>靘脲旿嚗? REDCap<EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD>函蔡嚗鍃CS vs SAE瘛勗漲<E58B97>唾悅<E594BE><EFBFBD>


<EFBFBD><EFBFBD> <20><>﹝霂湔<E99C82>

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>艙嚗?*<2A>砍𧑐撘<F0A79190><E69298>穃朖<E7A983>煺漣<E785BA><EFBFBD>** <20>

<EFBFBD><EFBFBD><EFBFBD>抅鈭穉IT Manager Agent憿寧𤌍<E5AFA7>?*瘛瑕<E7989B><E79195><EFBFBD><E59786><EFBFBD>**嚗屸<E59A97><E5B1B8>求ocker摰孵膥<E5ADB5><EFBFBD>蝵涮EDCap嚗<70><E59A97><EFBFBD><EFBFBD>

  • <EFBFBD>?**撘<><E69298>𤑳㴓憓?= 瘚贝<E7989A><E8B49D><EFBFBD> = <20>煺漣<E785BA><EFBFBD>**嚗<><E59A97><EFBFBD><EFBFBD><EFBFBD>宏嚗?- <20>?Docker<EFBFBD>滨蔭<EFBFBD>舐凒<EFBFBD>亦鍂鈭𡡞燵<EFBFBD><EFBFBD>ECS<EFBFBD>煺漣<EFBFBD>函蔡
  • <EFBFBD>?Docker<EFBFBD>滨蔭<EFBFBD>舐凒<EFBFBD>亦鍂鈭𤾸龫<EFBFBD><EFBFBD>蝵𤑳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>函蔡
  • <EFBFBD>?*2鈭箏𣪧<EFBFBD>笔虾蝏湔擪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>閙沲<EFBFBD>?

<EFBFBD><EFBFBD>摰帋<EFBFBD>

<EFBFBD>唳旿撟喲𢒰 (Data Layer) - REDCap<61>函蔡蝑𣇉裦嚗?<3F><EFBFBD> <20>砍𧑐撘<F0A79190><E69298>𡢅<EFBFBD>Docker Compose (Windows/Mac)
<EFBFBD><EFBFBD> <20><EFBFBD>鈭烐<E988AD>霂?<3F>煺漣嚗鍃CS + Docker + RDS MySQL
<EFBFBD><EFBFBD> <20>駁堺蝘<E5A0BA><E89D98><EFBFBD><EFBFBD><E59094>滚𦛚<E6BB9A>?+ Docker + <20>砍𧑐MySQL

<EFBFBD><EFBFBD>撟喲𢒰 (AI Agent Layer) - <20>函蔡蝑𣇉裦嚗?<3F><EFBFBD> Node.js<6A>𡒊垢嚗𡁻燵<F0A181BB><EFBFBD>SAE (Serverless)
<EFBFBD><EFBFBD> Python敺格<E695BA><E6A0BC><EFBFBD><E288B4><EFBFBD>鈭騌AE
<EFBFBD><EFBFBD> React<63>滨垢嚗𡁻燵<F0A181BB><EFBFBD>SAE

銝箔<EFBFBD>銋㇌EDCap<EFBFBD>汞CS<EFBFBD><EFBFBD><EFBFBD>特AE嚗?<3F>?REDCap<61><EFBFBD>銝?<3F>游𦶢<E6B8B8><EFBFBD>?銝漤<E98A9D><E6BCA4><EFBFBD>Serverless嚗?   1. Cron靘肽<E99D98><EFBFBD><E59A97>頝喃遙<E59683><EFBFBD>
   2. Session蝎䀹<E89D8E><EFBFBD>𧋦<EFBFBD><EFBFBD>霂嘅<E99C82>
   3. POSIX<49><58>辣蝟餌<E89D9F>靘肽<E99D98><EFBFBD>𧋦<EFBFBD><EFBFBD><E595A3><EFBFBD>

霂西<EFBFBD>嚗鑹EDCap<EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD>函蔡嚗鍃CS vs SAE瘛勗漲<E58B97>唾悅<E594BE><EFBFBD>.md

<EFBFBD><EFBFBD><EFBFBD>箸艶

**<2A>砍𧑐撘<F0A79190><E69298>𤑳㴓憓?*嚗?- <20>?REDCap API Adapter撘<72><E69298><EFBFBD>瘚贝<E7989A>

  • <EFBFBD>?External Module撘<65><E69298><EFBFBD><EFBFBD><E99D9A>
  • <EFBFBD>?IIT霂閖<E99C82>憿寧𤌍<E5AFA7><EFBFBD>撉諹<E69289>
  • <EFBFBD>?API Token瘚贝<E7989A><E8B49D>峕㺭<E5B395>格聢撘誯<E69298>霂? **<2A>煺漣<E785BA><EFBFBD>**嚗<><EFBFBD>㷉ocker<65>滨蔭 + 憸嘥<E686B8><E598A5>滨蔭嚗㚁<E59A97>
  • <EFBFBD>?<3F><EFBFBD>鈭䫿CS<43>煺漣<E785BA>函蔡嚗? RDS + OSS + SLB嚗?- <20>?<3F>駁堺<E9A781><E5A0BA><EFBFBD><EFBFBD><E89D98><EFBFBD><EFBFBD>蝵莎<E89DB5>+ SSL + 憭<>遢嚗?- <20>?憭𡁻堺<F0A181BB><EFBFBD><E7AEB8><EFBFBD><EFBFBD>鈭支<E988AD>

<EFBFBD>㴓 銝<><E98A9D><EFBFBD>瓲敹<E793B2><EFBFBD><E6B2B2>挽霈?

1.1 摰孵膥<E5ADB5><EFBFBD><EFBFBD><E59A97><EFBFBD>?<3F>煺漣銝<E6BCA3><E98A9D><EFBFBD>

<EFBFBD>煺漣蝥扳瓲敹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?

REDCap Docker<65><EFBFBD><EFBFBD><E59A97><EFBFBD>?<3F>煺漣<E785BA>𡁶鍂嚗?<3F><EFBFBD> 摰孵膥1: MySQL 8.0 <20>唳旿摨?        <20>粬edcap-db<64>?<3F>?  <20><EFBFBD> <20>砍𧑐撘<F0A79190><E69298>𡢅<EFBFBD>Docker摰孵膥
<0A>?  <20><EFBFBD> <20>煺漣<E785BA><EFBFBD>嚗𡁻燵<F0A181BB><EFBFBD>RDS MySQL嚗<4C><EFBFBD><EFBFBD><E7909C>靝ocker摰孵膥
<0A>?<3F><EFBFBD> 摰孵膥2: Apache + PHP 8.1 + REDCap  <20>粬edcap-web<65>?    <20><EFBFBD> <20><>鉄Cron摰𡁏𧒄隞餃𦛚
    <20><EFBFBD> <20><>鉄External Modules
    <20><EFBFBD> <20>砍𧑐摮睃<E691AE>嚗Ềdocs/<2F><>odules/<2F><>emp/嚗?
蝵𤑳<E89DB5>嚗鬏edcap-network嚗Ê̄ridge璅<E79285>嚗?摮睃<E691AE>嚗鋽ocker<65><EFBFBD><E8B3A2><EFBFBD><E79880><EFBFBD><EFBFBD><EFBFBD>𡝗㺭<F0A19D97><EFBFBD>

<EFBFBD><EFBFBD>𤏸<EFBFBD><EFBFBD>拙捆<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𤑳㴓憓<EFBFBD><EFBFBD><EFBFBD>煺漣蝳<EFBFBD>鍂嚗?

<EFBFBD>𩤃<EFBFBD> 隞乩<E99A9E>摰孵膥隞<E886A5>鍂鈭擧𧋦<E693A7><EFBFBD><E595A3>𤏸<EFBFBD>霂𤏪<E99C82><F0A48FAA>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>摰匧<E691B0><E58CA7><EFBFBD><EFBFBD>摨𠉛<E691A8><F0A0899B><EFBFBD>

摰孵膥3: phpMyAdmin嚗<6E><EFBFBD><EFBFBD>       <20>醩hpmyadmin<69>?<3F><EFBFBD> <20><EFBFBD><EFBFBD><E48891>唳旿摨枏虾閫<E899BE><E996AB>蝞∠<E89D9E><E288A0><EFBFBD><EFBFBD>霂?<3F><EFBFBD> 蝡臬藁嚗?081
<0A><EFBFBD> <20>煺漣<E785BA><EFBFBD>嚗尠<E59A97> 銝漤<E98A9D>蝵莎<E89DB5>摰匧<E691B0>憌𡡞埯嚗?
霂湔<E99C82>嚗?<3F>煺漣<E785BA><EFBFBD><E887AC>唳旿摨梶恣<E6A2B6><E681A3><EFBFBD><EFBFBD><EFBFBD>嚗?<3F>?<3F><EFBFBD>鈭駵DS<44><EFBFBD><E689B9>?<3F>?MySQL<51>賭誘銵䕘<E98AB5>SSH餈墧𦻖嚗?<3F>?<3F><EFBFBD><E783BE><EFBFBD>MS<4D>唳旿蝞∠<E89D9E><E288A0>滚𦛚

1.2 <20><EFBFBD>隡睃飵

<EFBFBD>?撘<><E69298>?<3F>煺漣<E785BA><EFBFBD><EFBFBD><E98A9D><EFBFBD><EFBFBD>膄"<22><EFBFBD><E586BD>箏膥銝𡃏<E98A9D>頝?<3F><EFBFBD>嚗?<3F>?MySQL<51>求ocker<65><72><EFBFBD><EFBFBD>𣳇<EFBFBD><F0A3B387>祆㦤摰㕑<E691B0><EFBFBD><E59A97><EFBFBD>𤑳㴓憓<E3B493><E68693>
<0A>?<3F><EFBFBD>蝻嘥<E89DBB><E598A5><EFBFBD>RDS MySQL嚗<4C><E59A97>鈭抒㴓憓<E3B493><E68693>
<0A>?<3F><><EFBFBD><EFBFBD>韏㚚<E99F8F>蝳鳴<E89DB3>銝齿情<E9BDBF>㮖蜓<E3AE96>箇㴓憓?<3F>?銝<><E98A9D>桀鍳<E6A180>?<3F>𨀣迫嚗?鈭箏𣪧<E7AE8F>笔虾蝏湔擪
<0A>?<3F><EFBFBD><E887AC><EFBFBD>憭齿<E686AD>撱綽<E692B1>摰孵膥<E5ADB5>𡝗<EFBFBD><F0A19D97><EFBFBD>漱隞矋<E99A9E>
<0A>?<3F><EFBFBD><E3AE96><EFBFBD><EFBFBD><E798A5>撱綽<E692B1>瘚贝<E7989A><E8B49D>见末嚗?<3F>?<3F>唳旿<E594B3><E697BF><EFBFBD><EFBFBD><EFBFBD>Docker<65>?<3F>?RDS嚗?<3F>?<3F><EFBFBD>憭𡁶<E686AD><F0A181B6>砍僎摮矋<E691AE>銝滚<E98A9D>蝡臬藁嚗?<3F>?<3F>湔𦻖<E6B994>舐鍂鈭𤾸龫<F0A4BEB8><EFBFBD>蝵煾<E89DB5>蝵莎<E89DB5>蝳餌瑪鈭支<E988AD>嚗?```

### 1.3 蝡臬藁<E887AC><E89781><EFBFBD>

| <20>滚𦛚 | 摰孵膥蝡臬藁 | 銝餅㦤蝡臬藁 | 霈輸䔮<E8BCB8><EFBFBD> | <20>煺漣<E785BA><EFBFBD> |
|------|---------|---------|---------|---------|
| REDCap Web | 80 | 8080 | http://localhost:8080 | <20>?<3F>函蔡嚗<E894A1><EFBFBD>?0嚗?|
| MySQL | 3306 | 3306 | localhost:3306 | <20>𩤃<EFBFBD> <20>碶蝙<E7A2B6>沖DS |
| phpMyAdmin | 80 | 8081 | http://localhost:8081 | <20>?蝳<>鍂 |

**<2A>煺漣<E785BA><EFBFBD>蝡臬藁靚<E89781>㟲**嚗?- REDCap Web嚗帋蝙<E5B88B><EFBFBD><E586BD>?0/443蝡臬藁嚗<E89781><E59A97><EFBFBD>SLB嚗?- MySQL嚗𡁜<E59A97>雿輻鍂RDS嚗峕<E59A97><E5B395><EFBFBD><EFBFBD>湧蠧蝡臬藁嚗<E89781><E59A97>蝵𤏸<E89DB5><F0A48FB8><EFBFBD>
- phpMyAdmin嚗帋<E59A97><E5B88B>函蔡

---

## <20><>儭?鈭䎚<E988AD><E48E9A><EFBFBD>隞嗥<E99A9E><E597A5><EFBFBD><EFBFBD><EFBFBD>?
### 2.1 憿寧𤌍<E5AFA7><EFBFBD>蝏𤘪<E89D8F>

AIclinicalresearch/ <0A><EFBFBD> redcap15.8.0/ # <20>?撌脫<E6928C>REDCap皞鞟<E79A9E> <0A>? <20><EFBFBD> redcap/ # REDCap<61><EFBFBD><E8A9A8><EFBFBD><0A>?<3F><EFBFBD> redcap-docker-dev/ # <20><> Docker<65>函蔡<E587BD><EFBFBD><EFBFBD><E59A97><EFBFBD>𥕦遣嚗?<3F>? <20><EFBFBD> docker-compose.yml # Docker蝻𡝗<E89DBB><F0A19D97>滨蔭嚗<E894AD>瓲敹<E793B2><E695B9> <0A>? <20><EFBFBD> Dockerfile.redcap # REDCap摰孵膥<E5ADB5>𨅯<EFBFBD>摰帋<E691B0> <0A>? <20><EFBFBD> .env # <20><EFBFBD><E887AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E69296>蝑㚁<E89D91> <0A>? <20>?<3F>? <20><EFBFBD> config/ # <20>滨蔭<E6BBA8><E894AD><EFBFBD><EFBFBD> <0A>? <20>? <20><EFBFBD> apache/ <0A>? <20>? <20>? <20><EFBFBD> redcap.conf # Apache<68>𡁏<EFBFBD>銝餅㦤<E9A485>滨蔭 <0A>? <20>? <20><EFBFBD> php/ <0A>? <20>? <20>? <20><EFBFBD> php.ini # PHP<48>滨蔭 <0A>? <20>? <20><EFBFBD> database.php # REDCap<61>唳旿摨栞<E691A8><E6A09E>仿<EFBFBD>蝵?<3F>? <20>?<3F>? <20><EFBFBD> scripts/ # <20>芸𢆡<E88AB8>𤥁<EFBFBD><F0A4A581>?<3F>? <20>? <20><EFBFBD> setup-redcap.ps1 # <20>圲 銝<><E98A9D><EFBFBD>蝵脰<E89DB5><E884B0>穿<EFBFBD>PowerShell嚗?<3F>? <20>? <20><EFBFBD> start-redcap.ps1 # <20><> <20>臬𢆡<E887AC>𡁏𧋦 <0A>? <20>? <20><EFBFBD> stop-redcap.ps1 # <20><EFBFBD> <20>𨀣迫<F0A880A3>𡁏𧋦 <0A>? <20>? <20><EFBFBD> logs-redcap.ps1 # <20><> <20><EFBFBD><E4BAA6><EFBFBD> <0A>? <20>? <20><EFBFBD> clean-redcap.ps1 # <20><>儭?皜<><E79A9C><EFBFBD><EFBFBD> <0A>? <20>?<3F>? <20><EFBFBD> README.md # <20>函蔡<E587BD><E894A1>


### 2.2 <20><EFBFBD>霂湔<E99C82>

| <20><EFBFBD>/<2F><>辣 | <20><EFBFBD>?| 撘<><E69298>𤑳㴓憓?| <20>煺漣<E785BA><EFBFBD> |
|----------|------|---------|---------|
| `docker-compose.yml` | 摰帋<E691B0>憭𡁜捆<F0A1819C><EFBFBD><E585B8>?| <20>?敹<><E695B9> | <20>?敹<><E695B9><EFBFBD><E59A97><EFBFBD>㟲嚗?|
| `Dockerfile.redcap` | <20><EFBFBD>銋兴EDCap<61>𨅯<EFBFBD> | <20>?敹<><E695B9> | <20>?敹<><E695B9> |
| `.env` | <20>𤩺<EFBFBD>靽⊥<E99DBD><EFBFBD><E59A97><EFBFBD><EFBFBD><EFBFBD> | <20>?敹<><E695B9> | <20>?敹<><E695B9><EFBFBD>撩撖<E692A9><E69296>嚗?|
| `config/apache/` | Web<65>滚𦛚<E6BB9A><EFBFBD>蝵?| <20>?敹<><E695B9> | <20>?敹<><E695B9>嚗?SSL嚗?|
| `config/php/` | PHP餈鞱<E9A488><E99EB1><EFBFBD>蝵?| <20>?敹<><E695B9> | <20>?敹<><E695B9> |
| `config/database.php` | REDCap<61>唳旿摨栞<E691A8><E6A09E>?| <20>?敹<><E695B9> | <20>?敹<><E695B9>嚗㇌DS餈墧𦻖嚗?|
| `scripts/` | 餈鞟輕<E99E9F>𡁏𧋦 | 潃?<3F><EFBFBD> | <20>?敹<><E695B9> |

**<2A>煺漣<E785BA><EFBFBD>憸嘥<E686B8><E598A5><EFBFBD>閬?*嚗?- SSL霂<4C><EFBFBD><E9ABA1>辣嚗𡿨et's Encrypt<70><EFBFBD>銝朞<E98A9D>銋佗<E98A8B>
- 憭<><EFBFBD>𡁏𧋦嚗<F0A78BA6><EFBFBD><EFBFBD> + <20><>辣嚗?- <20>烐綉<E78390>滨蔭嚗㇃loudMonitor Agent嚗?- <20><EFBFBD>頧株蓮<E6A0AA>滨蔭

---

## <20>圲 銝剹<E98A9D><E589B9><EFBFBD><EFBFBD><EFBFBD>蝵株秩<E6A0AA>?
### 3.1 MySQL<51>滨蔭嚗<E894AD><EFBFBD><EFBFBD>嚗?
#### 3.1.1 <20>箸𧋦<E7AEB8>滨蔭

```yaml
# docker-compose.yml - MySQL<51>滚𦛚
services:
  redcap-db:
    image: mysql:8.0
    container_name: redcap-mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    volumes:
      - redcap-db-data:/var/lib/mysql    # <20>唳旿<E594B3><E697BF><EFBFBD><EFBFBD>?    ports:
      - "3306:3306"
    networks:
      - redcap-network
    command: --default-authentication-plugin=mysql_native_password

3.1.2 <20><EFBFBD><E887AC><EFBFBD>嚗?env<6E><76>辣嚗?

# <20>唳旿摨㯄<E691A8>蝵殷<E89DB5><EFBFBD><E69298>𤑳㴓憓<E3B493><E68693>
MYSQL_ROOT_PASSWORD=redcap_root_123
MYSQL_DATABASE=redcap
MYSQL_USER=redcap_user
MYSQL_PASSWORD=redcap_pass_456

# <20>𩤃<EFBFBD> 霅血<E99C85>嚗朞<E59A97>鈭𥟇糓撘<E7B393><E69298>𤑳㴓憓<E3B493><E68693><EFBFBD><EFBFBD><EFBFBD>
# <20>煺漣<E785BA><EFBFBD><EFBFBD>◆雿輻鍂撘箏<E69298><E7AE8F><EFBFBD><EFBFBD>

3.1.3 霈方<E99C88><E696B9>雴辣霂湔<E99C82>

# 銝箔<E98A9D><EFBFBD><EFBFBD>?mysql_native_password嚗?# REDCap 15.8.0<EFBFBD>澆捆<EFBFBD><EFBFBD>瘙?# 憒<><E68692>雿輻鍂MySQL 8.0暺䁅恕<EFBFBD><EFBFBD>aching_sha2_password隡𡁜紡<EFBFBD><EFBFBD><EFBFBD>亙仃韐?```

---

### 3.2 PHP + Apache<68>滨蔭

#### 3.2.1 PHP<48>滨蔭嚗īhp.ini嚗?
```ini
# config/php/php.ini

# ========== <20><>辣銝𠹺<E98A9D>嚗㇌EDCap敹<70><E695B9>嚗?=========
upload_max_filesize = 32M         # REDCap<61><70>辣銝𠹺<E98A9D><F0A0B9BA>𣂼<EFBFBD>
post_max_size = 32M               # 銵典<E98AB5><E585B8>𣂷漱憭批<E686AD>
max_file_uploads = 20             # <20>峕𧒄銝𠹺<E98A9D><F0A0B9BA><EFBFBD><EFBFBD>?
# ========== <20><EFBFBD><E689AF>園𡢿嚗<F0A1A2BF><EFBFBD>桀紡<E6A180><EFBFBD><EFBFBD><E996AC>==========
max_execution_time = 300          # 5<><35><EFBFBD><EFBFBD><EFBFBD>唳旿撖澆枂嚗?max_input_time = 300              # 颲枏<E9A2B2><EFBFBD><E996AB><EFBFBD>園𡢿

# ========== <20><><EFBFBD>嚗㇌EDCap<61><70>雿舘<E99BBF><EFBFBD><E79899>==========
memory_limit = 256M               # REDCap<61><EFBFBD>256MB

# ========== <20>嗅躹嚗<E8BAB9><E59A97><EFBFBD><E996AC>嚗?=========
date.timezone = Asia/Shanghai     # <20>𦯀漪<F0A6AF80>園𡢿

# ========== <20>躰秤<E8BAB0><EFBFBD><EFBFBD><E59A97><EFBFBD>𤑳㴓憓<E3B493><E68693>==========
display_errors = On               # 撘<><E69298>𤑳㴓憓<E3B493>遬蝷粹<E89DB7>霂?error_reporting = E_ALL           # <20><EFBFBD><E4BA99><EFBFBD><EFBFBD><EFBFBD>霂?
# ========== Session<6F>滨蔭 ==========
session.gc_maxlifetime = 3600     # Session餈<6E><E9A488><EFBFBD>園𡢿嚗?撠𤩺𧒄嚗?session.cookie_lifetime = 0       # Cookie瘚讛<E7989A><E8AE9B><EFBFBD><E585B8>剜𧒄餈<F0A79284><E9A488>

3.2.2 PHP<48><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD>嚗?

# Dockerfile.redcap 銝剖<E98A9D><EFBFBD><E98B86>撅?
# <20><EFBFBD><E8A9A8><EFBFBD>嚗㇌EDCap敹<70><E695B9>嚗?RUN docker-php-ext-install \
    mysqli              # MySQL餈墧𦻖嚗<F0A6BB96><E59A97><EFBFBD><EFBFBD>嚗?    pdo_mysql           # PDO<44><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD>嚗?    gd                  # <20><EFBFBD><EFBFBD><E686AD><EFBFBD><E59A97><EFBFBD><E99C82><EFBFBD><EFBFBD>㦛銵剁<E98AB5>
    zip                 # <20>唳旿撖澆枂<E6BE86>讠憬
    mbstring            # 憭𡁜<E686AD><F0A1819C><EFBFBD><EFBFBD>蝚虫葡嚗㇎TF-8嚗?    curl                # API靚<49>
    soap                # Web Service<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
    ldap                # LDAP霈方<E99C88><EFBFBD><EFBFBD><EFBFBD>

# Apache璅<E79285>
RUN a2enmod rewrite ssl headers

3.2.3 Apache<68>滨蔭嚗ǐedcap.conf嚗?

# config/apache/redcap.conf

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /var/www/html/redcap
    
    <Directory /var/www/html/redcap>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
        
        # <20>脫迫<E884AB><EFBFBD><E6A180><EFBFBD>
        Options -Indexes
        
        # <20><>捂.htaccess
        AllowOverride All
    </Directory>
    
    # <20><EFBFBD><E4BA99>滨蔭
    ErrorLog ${APACHE_LOG_DIR}/redcap-error.log
    CustomLog ${APACHE_LOG_DIR}/redcap-access.log combined
    
    # 摰匧<E691B0>憭湛<E686AD><EFBFBD><E69298>𤑳㴓憓<E3B493><EFBFBD><EFBFBD>
    # Header always set X-Frame-Options "SAMEORIGIN"
    # Header always set X-Content-Type-Options "nosniff"
</VirtualHost>

3.3 REDCap database.php<68>滨蔭

3.3.1 <20>唳旿摨栞<E691A8><E6A09E>仿<EFBFBD>蝵?

<?php
// config/database.php

/**
 * REDCap<61>唳旿摨栞<E691A8><E6A09E>仿<EFBFBD>蝵殷<E89DB5>Docker<65><EFBFBD>嚗? * 甇斗<E79487>隞園<E99A9E><EFBFBD><E996AC><EFBFBD><EFBFBD>REDCap皞鞟<E79A9E><E99E9F><EFBFBD>edcap/<2F><EFBFBD>銝? */

global $log_all_errors;
$log_all_errors = TRUE;  // 撘<><E69298>𤑳㴓憓<E3B493><E68693><EFBFBD>航祕蝏<E7A595>𠯫敹?
// ========== MYSQL DATABASE CONNECTION ==========
// Docker摰孵膥<E5ADB5><E886A5><EFBFBD><EFBFBD>仿<EFBFBD>蝵?$hostname   = 'redcap-db';        # 摰孵膥<E5ADB5>滚𦛚<E6BB9A><EFBFBD>銝齿糓localhost嚗<74><E59A97>
$db         = 'redcap';           # <20>唳旿摨枏<E691A8>
$username   = 'redcap_user';      # <20><EFBFBD><E586BD>?$password   = 'redcap_pass_456';  # 撖<><E69296>

// ========== SALT VARIABLE嚗<45><E59A97><EFBFBD><E996AC>嚗?=========
// <20><EFBFBD><E585B6>唳旿<E594B3><EFBFBD><EFBFBD><E99C82><EFBFBD><EFBFBD><EFBFBD>
// <20>𩤃<EFBFBD><><E98A9D>西挽蝵殷<E89DB5>瘞貉<E7989E>銝滚虾<E6BB9A>湔㺿嚗?$salt = 'iit_dev_salt_2026_redcap_v15';  // <20><EFBFBD>8銝芸<E98A9D>蝚?
// ========== SSL餈墧𦻖嚗<F0A6BB96><E59A97><EFBFBD>𤑳㴓憓<E3B493><E68693><EFBFBD><EFBFBD><EFBFBD><E996AC>==========
$db_ssl_key  = '';
$db_ssl_cert = '';
$db_ssl_ca   = '';
$db_ssl_capath = NULL;
$db_ssl_cipher = NULL;
$db_ssl_verify_server_cert = false;

?>

3.3.2 Salt<6C>潸秩<E6BDB8>?

<EFBFBD><EFBFBD>糓Salt嚗?- <20><EFBFBD>REDCap<61>唳旿撖澆枂<E6BE86><EFBFBD><E597A5><EFBFBD><EFBFBD><E99C82>
- 敶勗<E695B6><E58B97><EFBFBD><EFBFBD><EFBFBD>唳旿<E594B3><E697BF><EFBFBD><EFBFBD>?- 銝<><E98A9D>西挽蝵桀<E89DB5>銝滚虾<E6BB9A>湔㺿嚗<E3BABF><E59A97>撖潸稲<E6BDB8><E7A8B2><EFBFBD>唳旿<E594B3><EFBFBD><EFBFBD><E996AB>嚗?
撘<><E69298>𤑳㴓憓<E3B493>遣霈殷<E99C88>
- 雿輻鍂<E8BCBB><EFBFBD><E7AE8F><EFBFBD>alt<6C><EFBFBD>靘蹂<E99D98>憭𡁏活<F0A1818F>滚遣<E6BB9A><EFBFBD>嚗?- <20><>鉄憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD><EFBFBD><E59A97>'iit_dev_salt_2026'嚗?- <20><EFBFBD>8銝芸<E98A9D>蝚佗<E89D9A>撱箄悅20+摮㛖泵

<0A>煺漣<E785BA><EFBFBD><EFBFBD><E996AC>嚗?- 雿輻鍂撘粹<E69298><E7B2B9>搴alt嚗?2+摮㛖泵嚗?- <20><>鉄憭批<E686AD><E689B9><EFBFBD>瘥溻<E798A5><E6BABB>㺭摮𨰜<E691AE><F0A8B09C>鸌畾𠰴<E795BE>蝚?- 憒亙<E68692><EFBFBD>遢嚗<E981A2>腺憭曹<E686AD>撖潸稲<E6BDB8>唳旿<E594B3><EFBFBD><EFBFBD><E996AB>嚗?```

---

## <20>𩣪 <20><EFBFBD><E49C98><EFBFBD>隞嗆<E99A9E><E59786><EFBFBD>蝵桃<E89DB5><E6A183>?
### 4.1 銝厩<E98A9D><E58EA9>滨蔭<E6BBA8><EFBFBD>撖寞<E69296>

| <20><EFBFBD> | 憭齿<E686AD>摨?| <20><EFBFBD> | <20><EFBFBD><E588BB>箸艶 |
|------|--------|------|---------|
| **<2A><EFBFBD>A嚗朞歲餈<E6ADB2><E9A488>蝵?* | 潃?<3F><><EFBFBD><E89D9E>?| <20>𣳇<EFBFBD>隞嗅<E99A9E><E59785>?| <20>?Day 2-8 API撘<49><E69298>?|
| **<2A><EFBFBD>B嚗鐝ailHog** | 潃鐥<E6BD83><><E89D9E>?| <20>砍𧑐<E7A08D>桐辣<E6A190>行⏛ | Day 9-10 <20>桐辣瘚贝<E7989A> |
| **<2A><EFBFBD>C嚗𡁶<E59A97>摰㓟MTP** | 潃鐥<E6BD83>潃?憭齿<E686AD> | <20><EFBFBD><E7AC94>桐辣<E6A190><EFBFBD>?| <20><EFBFBD><E693A7><EFBFBD><EFBFBD>瘚贝<E7989A> |

### 4.2 <20><EFBFBD>A嚗朞歲餈<E6ADB2><E9A488>蝵殷<E89DB5><E6AEB7><EFBFBD><E588BB><EFBFBD>Day 2-8嚗?
```yaml
隡睃飵嚗?<3F>?<3F>滨蔭<E6BBA8><E894AD><EFBFBD><E89D9E>?<3F>?<3F>臬𢆡<E887AC><F0A286A1>敹?<3F>?銝滚蔣<E6BB9A><E894A3>PI撘<49><E69298>?<3F>?REDCap<61>舀迤撣貉<E692A3>銵?
<0A>𣂼<EFBFBD>嚗?<3F>?<3F><EFBFBD><E4ADBE><EFBFBD><E785BE><EFBFBD><EFBFBD>仿<EFBFBD>霂?<3F>?<3F><EFBFBD><E4ADBE><EFBFBD><E785BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵桅<E89DB5>隞?<3F>?<3F><EFBFBD><E4ADBE><EFBFBD><E785BE>頂蝏罸<E89D8F>𡁶䰻

摰墧鴌<E5A2A7><EFBFBD>嚗?1. REDCap摰㕑<E691B0><E39591>嗉歲餈𦺋MTP<54>滨蔭甇仿炊
2. <20><EFBFBD>銝剖<E98A9D> <20>?Email & Notification <20>?<3F>嗵征
3. <20>湔𦻖餈𥡝<E9A488>API撘<49><E69298>?
<0A><>鍂鈭𠬍<E988AD>
<0A>?REDCap API Adapter撘<72><E69298>?<3F>?External Module撘<65><E69298>𡢅<EFBFBD>銝齿<E98A9D><E9BDBF>𢠃<EFBFBD>隞塚<E99A9E>
<0A>?<3F>唳旿撖澆<E69296>撖澆枂瘚贝<E7989A>

4.3 <20><EFBFBD>B嚗鐝ailHog嚗<67>𧋦<EFBFBD><EFBFBD>隞嗆<E99A9E>霂𤏪<E99C82>

# docker-compose.yml 瘛餃<E7989B>MailHog<6F>滚𦛚
services:
  mailhog:
    image: mailhog/mailhog
    container_name: redcap-mailhog
    ports:
      - "1025:1025"   # SMTP蝡臬藁
      - "8025:8025"   # Web UI蝡臬藁
    networks:
      - redcap-network

# REDCap SMTP<54>滨蔭
SMTP Host: mailhog
SMTP Port: 1025
SMTP Auth: <EFBFBD>𣳇<EFBFBD>霈方<EFBFBD>

# 霈輸䔮Web<65>屸𢒰<E5B1B8><EFBFBD><E4BAA6>桐辣
http://localhost:8025

雿輻鍂<EFBFBD>箸艶嚗𡁏<EFBFBD>霂閗<EFBFBD><EFBFBD>仿<EFBFBD>霂瑯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵桃<EFBFBD><EFBFBD>桐辣<EFBFBD><EFBFBD>

4.4 <20><EFBFBD>C嚗𡁶<E59A97>摰㓟MTP嚗𠃑mail/Outlook嚗?

# REDCap<61><EFBFBD>銝剖<E98A9D><E58996>滨蔭

# Gmail蝷箔<E89DB7>
SMTP Host: smtp.gmail.com
SMTP Port: 587
SMTP Auth: TLS
Username: your-email@gmail.com
Password: app-specific-password  # 銝齿糓Gmail撖<6C><E69296>嚗?
# <20>𣂼<EFBFBD>
- Gmail嚗𡁏<EFBFBD>憭?00撠<30><E692A0><EFBFBD>滩晶韐行<E99F90>嚗?- Outlook嚗𡁏<E59A97>憭?00撠?- <20><><EFBFBD><E996AC><EFBFBD>?銝滚<E98A9D>摰匧<E691B0><E58CA7><EFBFBD><EFBFBD><EFBFBD>刻挪<E588BB>?<3F>碶蝙<E7A2B6><EFBFBD><E585B8><EFBFBD><E585B6><EFBFBD><E585B8>?```

**<2A><EFBFBD>蝑𣇉裦**嚗?- **Day 2-8**嚗帋蝙<E5B88B>冽䲮獢㇁嚗<E38781>歲餈<E6ADB2><E9A488>
- **Day 9-10**嚗𡁜<E59A97><F0A1819C><EFBFBD>瘚贝<E7989A><E8B49D>桐辣嚗䔶葩<E494B6><EFBFBD><E59785><EFBFBD><EFBCB7><EFBFBD>B
- **<2A>煺漣<E785BA><EFBFBD>**嚗帋蝙<E5B88B><EFBFBD>銝锭MTP<54><EFBFBD><E7A2B6>滚𦛚嚗𠄎endGrid<69><64><EFBFBD><EFBFBD>DirectMail嚗?
---

## <20><> 鈭𢛵<E988AD><F0A29BB5>𧋦<EFBFBD>?vs 鈭𤑳垢<F0A491B3>函蔡

### 5.1 Docker<65>𨅯<EFBFBD><F0A885AF>舐宏璊齿<E7928A><EFBFBD><E689B9>?
#### <20>砍𧑐Docker <20>?<3F><EFBFBD>鈭䫿CS嚗𡁏糓<F0A1818F>血虾隞伐<E99A9E>

蝑娍<EFBFBD>嚗𡁜虾隞伐<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>湔𦻖餈<EFBFBD>宏嚗? <0A>臭誑餈蹱甅<E8B9B1>𡄯<EFBFBD>

  1. 撖澆枂Docker<EFBFBD>𨅯<EFBFBD> docker save redcap-local:1.0 -o redcap.tar
  2. 銝𠹺<EFBFBD><EFBFBD>蚩CS scp redcap.tar user@ecs-ip:/tmp/
  3. <EFBFBD>汞CS撖澆<EFBFBD> docker load -i /tmp/redcap.tar
  4. 餈鞱<EFBFBD>摰孵膥 docker run -d -p 80:80 redcap-local:1.0

<EFBFBD>蛹隞<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?<3F>?<3F><EFBFBD>嚗鋽ocker憭帋<E686AD><EFBFBD><E69285><EFBFBD><EFBFBD>嚗峕<E59A97>憭?0-20%<25><EFBFBD> <0A>?蝔喳<E89D94><E596B3><EFBFBD>摰孵膥撅<E886A5><E69285><EFBFBD><EFBFBD><E683A9><EFBFBD><EFBFBD><EFBFBD><E5B395>𦦵<EFBFBD> <0A>?餈鞟輕嚗𡁜龫<F0A1819C>㛖頂蝏罸<E89D8F><EFBFBD><E996AC>憭批虾<E689B9><EFBFBD>?<3F>?憭<>遢嚗𡁜捆<F0A1819C>冽㺭<E586BD><EFBFBD>隞賣凒憭齿<E686AD> <0A>?<3F>烐綉嚗𡁶凒<F0A181B6>仿<EFBFBD>蝵脫凒<E884AB><EFBFBD><E3AE96>烐綉<E78390><EFBFBD>霂?```

5.2 <20><EFBFBD><E588BB><EFBFBD><EFBFBD>蝡舫<E89DA1>蝵脩<E89DB5><E884A9>?

<EFBFBD>砍𧑐撘<EFBFBD><EFBFBD>𡢅<EFBFBD>Docker嚗争<EFBFBD> 鈭𤑳垢<F0A491B3>煺漣嚗<E6BCA3><E59A97><EFBFBD><EFBFBD><EFBFBD>蝵莎<E89DB5>

<0A>嗆挾1嚗𡁏𧋦<F0A1818F>蚤ocker撘<72><E69298>𡢅<EFBFBD>敶枏<E695B6>嚗?- <20><EFBFBD>嚗鋫PI Adapter撘<72><E69298><EFBFBD><E3BBAB>xternal Module撘<65><E69298>?- <20><EFBFBD>嚗阳indows + Docker Desktop
- <20>唳旿嚗𡁏<E59A97>霂閙㺭<E99699><EFBFBD><E6AEB7><EFBFBD><E888AB><EFBFBD><EFBFBD><E798A5>

<0A>嗆挾2嚗鍃CS<43><53><EFBFBD><EFBFBD>函蔡嚗<E894A1>𧊋<EFBFBD><EFBFBD>
- <20><EFBFBD>嚗𡁶<E59A97>鈭抒㴓憓<E3B493><E68693><EFBFBD><EFBFBD>摰𧼮龫<F0A7BCAE>埈㺭<E59F88>?- <20><EFBFBD>嚗䦧buntu 22.04 + LAMP
- <20>唳旿嚗鑹DS MySQL嚗<4C><E59A97><EFBFBD>舐鍂嚗? OSS摮睃<E691AE><>宏頝臬<E9A09D>嚗?1. <20>冽𧋦<E586BD>蚤ocker摰峕<E691B0>External Module撘<65><E69298>?2. 撉諹<E69289>API Adapter<65><EFBFBD>
3. <20>汞CS銝𦠜<E98A9D><F0A6A09C><EFBFBD><EFBFBD><EFBFBD>EDCap嚗𡿨AMP嚗?4. 憭滚<E686AD>External Module隞<65><E99A9E><EFBFBD>蚩CS
5. <20>滨蔭<E6BBA8>煺漣蝥扳㺭<E689B3><EFBFBD><E6A180>玺MTP
6. <20>滨蔭SSL霂<4C><EFBFBD><E9ABA1><EFBFBD><EFBFBD>?```

### 5.3 <20><EFBFBD>撖寞<E69296>銵?
| 撖寞<E69296>憿?| <20>砍𧑐Docker | <20><EFBFBD>鈭䫿CS嚗<53><E59A97><EFBFBD><EFBFBD><EFBFBD>蝵莎<E89DB5> |
|--------|-----------|---------------------|
| **<2A>函蔡<E587BD><EFBFBD>** | Docker Compose | LAMP<4D>见𢆡摰㕑<E691B0> |
| **霈輸䔮<E8BCB8><EFBFBD>** | localhost:8080 | https://redcap.domain.com |
| **<2A>唳旿摨?* | Docker摰孵膥 | RDS MySQL嚗<4C><EFBFBD><EFBFBD><E7909C>𡝗𧋦<F0A19D97>?|
| **摮睃<E691AE>** | Docker<65>?| OSS<53>𡝗𧋦<F0A19D97><EFBFBD><E59581>?|
| **<2A>桐辣** | 頝唾<E9A09D><E594BE>䤼ailHog | <20><EFBFBD>鈭飇irectMail/SendGrid |
| **SSL** | 銝漤<E98A9D>閬?| Let's Encrypt霂<74>髡 |
| **<2A><EFBFBD>** | 潃鐥<E6BD83>潃?| 潃鐥<E6BD83>潃鐥<E6BD83>潃?|
| **蝔喳<E89D94><E596B3>?* | 潃鐥<E6BD83>潃?| 潃鐥<E6BD83>潃鐥<E6BD83>潃?|
| **<2A>鞉𧋦** | $0 | $50-200/<2F>?|
| **<2A><><EFBFBD>箸艶** | 撘<><E69298><EFBFBD>霂?| <20>煺漣<E785BA><EFBFBD> |

---

## <20><> <20><EFBFBD><E58786><EFBFBD><EFBFBD>格釣<E6A0BC><EFBFBD>憿?
### 6.1 <20>𤑳<EFBFBD>1嚗𡁏<E59A97>隞嗆<E99A9E><E59786>鞾䔮憸?<3F>𩤃<EFBFBD>

#### <20><>𠶖
```bash
摰㕑<E691B0><E39591><EFBFBD>蝷綽<E89DB7>
"Unable to write to /var/www/html/edocs directory"
"Unable to write to /var/www/html/temp directory"

<EFBFBD><EFBFBD>

Apache餈鞱<EFBFBD><EFBFBD><EFBFBD>嚗òww-data嚗匧笆<E58CA7><EFBFBD><E6A180><EFBFBD><E683A9><EFBFBD><EFBFBD>
Docker摰孵膥<E5ADB5><E886A5><EFBFBD>隞嗆<E99A9E><E59786>𣂷<EFBFBD>銝餅㦤銝滚<E98A9D>甇?```

#### 閫<><E996AB><EFBFBD><EFBFBD>
```bash
# <20><EFBFBD>1嚗𡁜鍳<F0A1819C><EFBFBD><E585B8>见𢆡靽桀<E99DBD><EFBFBD><EFBFBD><EFBFBD>
docker exec -it redcap-web chown -R www-data:www-data /var/www/html/edocs
docker exec -it redcap-web chown -R www-data:www-data /var/www/html/temp
docker exec -it redcap-web chown -R www-data:www-data /var/www/html/modules

# <20><EFBFBD>2嚗𡁜銁Dockerfile銝剝<E98A9D><E5899D><EFBFBD><EFBFBD>蝵?RUN mkdir -p /var/www/html/edocs /var/www/html/temp /var/www/html/modules && \
    chown -R www-data:www-data /var/www/html

<EFBFBD><EFBFBD>芣鴌

# 璉<><E79289><EFBFBD><E4BAA4>?docker exec -it redcap-web ls -la /var/www/html/

# 摨磰砲<E7A3B0><EFBFBD>嚗?drwxr-xr-x  www-data www-data  edocs
drwxr-xr-x  www-data www-data  temp
drwxr-xr-x  www-data www-data  modules

6.2 <20>𤑳<EFBFBD>2嚗𡁏㺭<F0A1818F><EFBFBD>餈墧𦻖憭梯揖 <20>𩤃<EFBFBD>

<EFBFBD><EFBFBD>𠶖

摰㕑<EFBFBD>憿菟𢒰<EFBFBD>鞟內嚗?"Cannot connect to database"
"Access denied for user 'redcap_user'@'redcap-web.redcap-network'"

<EFBFBD><EFBFBD>

<EFBFBD><EFBFBD>1: MySQL摰孵膥<E5ADB5><EFBFBD><E88AB8>典鍳<E585B8>?<3F><EFBFBD>2: database.php<68>滨蔭<E6BBA8>躰秤嚗áostname嚗?<3F><EFBFBD>3: 霈方<E99C88><E696B9>雴辣銝滚<E98A9D>摰對<E691B0>caching_sha2_password嚗?```

#### 閫<><E996AB><EFBFBD><EFBFBD>

**<2A><EFBFBD>1嚗鐝ySQL<51>芸停蝏?*
```bash
# <20><EFBFBD>MySQL<51><EFBFBD>嚗𣬚<E59A97>敺?ready for connections"
docker-compose logs redcap-db | grep "ready for connections"

# 颲枏枂蝷箔<E89DB7>嚗?# 2026-01-01 10:00:00 [Server] /usr/sbin/mysqld: ready for connections.

# 撱箄悅蝑匧<E89D91>30蝘鍦<E89D98><E98DA6>滩挪<E6BBA9>展nstall.php

<EFBFBD><EFBFBD>2嚗冴ostname<EFBFBD>滨蔭<EFBFBD>躰秤

// <20>?<3F>躰秤<E8BAB0>滨蔭
$hostname = 'localhost';      // 摰孵膥<E5ADB5><E886A5>ocalhost銝齿糓MySQL
$hostname = '127.0.0.1';      // <20><EFBFBD>
$hostname = 'redcap-mysql';   // 摰孵膥<E5ADB5><EFBFBD><EFBFBD><E99BBF>雿輻鍂<E8BCBB>滚𦛚<E6BB9A>?
// <20>?甇<><EFBFBD>滨蔭
$hostname = 'redcap-db';      // Docker Compose<73>滚𦛚<E6BB9A>?```

**<EFBFBD><EFBFBD>3嚗朞恕霂<EFBFBD><EFBFBD>?*
```bash
# 蝖桐<E89D96>docker-compose.yml銝剖<E98A9D><E58996><EFBFBD>
command: --default-authentication-plugin=mysql_native_password

# <20>硋銁MySQL摰孵膥<E5ADB5><E886A5><EFBFBD><EFBFBD>其耨<E585B6>寧鍂<E5AFA7>?docker exec -it redcap-mysql mysql -uroot -p
ALTER USER 'redcap_user'@'%' IDENTIFIED WITH mysql_native_password BY 'redcap_pass_456';
FLUSH PRIVILEGES;

6.3 <20>𤑳<EFBFBD>3嚗䥪HP<48><EFBFBD>蝻箏仃 <20>𩤃<EFBFBD>

<EFBFBD><EFBFBD>𠶖

install.php璉<70><E79289>仿△<E4BBBF><EFBFBD>蝷綽<E89DB7>
"The GD extension is not loaded"
"The ZIP extension is not loaded"
"The MySQLi extension is not loaded"

<EFBFBD><EFBFBD>

php:8.1-apache<68><EFBFBD><E7AE87>𨅯<EFBFBD><F0A885AF><EFBFBD><E88AB8>急瓲敹<E793B2><E695B9>撅?REDCap<61><70><EFBFBD><E996AC>憭硋<E686AD>鋆?0+銝芣<E98A9D>撅?```

#### 閫<><E996AB><EFBFBD><EFBFBD>

**Dockerfile銝剝<E98A9D><EFBFBD><E98B86><EFBFBD><EFBFBD>嚗?*
```dockerfile
FROM php:8.1-apache

# 摰㕑<E691B0>蝟餌<E89D9F>靘肽<E99D98>
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libzip-dev \
    libldap2-dev \
    && rm -rf /var/lib/apt/lists/*

# 摰㕑<E691B0>PHP<48><EFBFBD>
RUN docker-php-ext-configure gd --with-freetype --with-jpeg && \
    docker-php-ext-install -j$(nproc) \
    mysqli \
    pdo_mysql \
    gd \
    zip \
    mbstring \
    curl \
    soap \
    ldap

# <20>舐鍂Apache璅<E79285>
RUN a2enmod rewrite ssl headers

撉諹<EFBFBD>摰㕑<EFBFBD>

# 餈𥕦<E9A488>摰孵膥璉<E886A5><E79289>?docker exec -it redcap-web php -m | grep -E '(mysqli|gd|zip|mbstring)'

# 摨磰砲<E7A3B0><EFBFBD>嚗?gd
mbstring
mysqli
zip

6.4 <20>𤑳<EFBFBD>4嚗阳indows頝臬<E9A09D><E887AC><EFBFBD> <20>𩤃<EFBFBD>

<EFBFBD><EFBFBD>𠶖

摰孵膥<EFBFBD>臬𢆡憭梯揖<EFBFBD>𡝗<EFBFBD>瘜閗挪<EFBFBD><EFBFBD>隞?Error: "no such file or directory"

<EFBFBD><EFBFBD>

Windows頝臬<EFBFBD><EFBFBD><EFBFBD>銝穥inux銝滚<EFBFBD>摰?<3F>齿<EFBFBD><E9BDBF>?\)銝擧迤<E693A7>𨀣<EFBFBD>(/)<29><EFBFBD>
蝏嘥笆頝臬<E9A09D><E887AC>求ocker Desktop銝剖虾<E58996><EFBFBD><E8B3A3><EFBFBD>

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

雿輻鍂<EFBFBD>詨笆頝臬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

# <20>?甇<>嚗𡁶㮾撖寡楝敺?volumes:
  - ../redcap15.8.0/redcap:/var/www/html/redcap
  - ./config/apache/redcap.conf:/etc/apache2/sites-available/000-default.conf

# <20>?<3F>躰秤嚗阳indows蝏嘥笆頝臬<E9A09D>
volumes:
  - D:\MyCursor\AIclinicalresearch\redcap15.8.0\redcap:/var/www/html/redcap

# <20><20><EFBFBD><E888AA>臭誑嚗阳SL頝臬<E9A09D><EFBFBD><E59A97><EFBFBD>靝蝙<E99D9D>汾SL2<4C>𡒊垢嚗?volumes:
  - /mnt/d/MyCursor/AIclinicalresearch/redcap15.8.0/redcap:/var/www/html/redcap

*PowerShell銝剛蓮<EFBFBD>楝敺?

# <20><EFBFBD>敶枏<E695B6><E69E8F><EFBFBD><E6A180><EFBFBD>㮾撖寡楝敺?$currentDir = Get-Location
$redcapSource = Join-Path $currentDir.Parent.FullName "redcap15.8.0\redcap"
Write-Host "REDCap Source: $redcapSource"

6.5 <20>𤑳<EFBFBD>5嚗𡁶垢<F0A181B6><E59EA2><EFBFBD>蝒?<3F>𩤃<EFBFBD>

<EFBFBD><EFBFBD>𠶖

docker-compose up -d 憭梯揖
Error: "Bind for 0.0.0.0:8080 failed: port is already allocated"

<EFBFBD><EFBFBD>

<EFBFBD>祆㦤撌脫<EFBFBD><EFBFBD>滚𦛚<EFBFBD>删鍂<EFBFBD><EFBFBD>蝡臬藁
- 8080: <20><EFBFBD><E888AA><EFBFBD>隞頟eb<65>滚𦛚
- 3306: <20><EFBFBD>撌脣<E6928C><EFBFBD>𧋦<EFBFBD>衽ySQL
- 8081: <20><EFBFBD><E888AA><EFBFBD>隞𣇉恣<F0A38789><E681A3><EFBFBD>?```

#### 閫<><E996AB><EFBFBD><EFBFBD>

**璉<><E79289>亦垢<E4BAA6><E59EA2><EFBFBD><EFBFBD><EFBFBD>Windows嚗?*
```powershell
# 璉<><E79289>?080蝡臬藁
netstat -ano | findstr :8080

# 颲枏枂蝷箔<E89DB7>嚗?# TCP    0.0.0.0:8080    0.0.0.0:0    LISTENING    1234

# <20><EFBFBD><E4BAA6>删鍂餈𤤿<E9A488>
tasklist | findstr 1234

# 蝏𤘪<E89D8F>餈𤤿<E9A488><EFBFBD><EFBFBD>𠬍<EFBFBD>嚗?taskkill /F /PID 1234

靽格㺿蝡臬藁<EFBFBD><EFBFBD>

# 憒<><E68692>8080鋡怠<E98BA1><E680A0><EFBFBD><E58981>寧鍂8888
services:
  redcap-web:
    ports:
      - "8888:80"  # 銝餅㦤8888 <20>?摰孵膥80

# 憒<><E68692>3306鋡怠<E98BA1><E680A0><EFBFBD><E58981>寧鍂3307
  redcap-db:
    ports:
      - "3307:3306"

*<EFBFBD><EFBFBD>雿喳<EFBFBD>頝?

# 憸<><E686B8><EFBFBD><E79289><EFBFBD><E4BAA4>厩垢<E58EA9>?netstat -ano | findstr :8080
netstat -ano | findstr :3306
netstat -ano | findstr :8081

# 憒<><E68692><EFBFBD>賜征<E8B39C><EFBFBD>雿輻鍂暺䁅恕蝡臬藁
# 憒<><E68692><EFBFBD><EFBFBD><EFBFBD><E89D92><EFBFBD>𣂼<EFBFBD>靽格㺿docker-compose.yml

6.6 <20>𤑳<EFBFBD>6嚗𡁏㺭<F0A1818F><EFBFBD><EFBFBD><E98A8B>霂臬躹 <20>𩤃<EFBFBD>

<EFBFBD><EFBFBD>𠶖

摰孵膥<EFBFBD>𣳇膄<EFBFBD>𠬍<EFBFBD><EFBFBD>唳旿銝仃
docker-compose down <20><EFBFBD>瘜閙<E7989C>憭漤★<E6BCA4>?```

#### <20><EFBFBD>

霂舐鍂鈭?-volumes<65><73><EFBFBD>𣳇膄鈭<E88684><EFBFBD>桀㭘 瘝⊥<E7989D><E28AA5><EFBFBD>圾Docker<65><EFBFBD><E8B3A2><EFBFBD><EFBFBD>


#### 甇<><EFBFBD><EFBC86>圾

**Docker<65>唳旿<E594B3>瑞掩<E7919E>?*
```yaml
# 蝐餃<E89D90>1嚗𡁜𦶢<F0A1819C>滚㭘嚗<E3AD98><EFBFBD><EFBFBD><EFBFBD><E69298>𤑳㴓憓<E3B493><E68693>
volumes:
  - redcap-db-data:/var/lib/mysql
# <20><EFBFBD>嚗鋽ocker蝞∠<E89D9E>嚗諹楊摰孵膥<E5ADB5><E886A5><EFBFBD><EFBFBD><EFBFBD><E59094>𣳇膄摰孵膥銝滚蔣<E6BB9A>?
# 蝐餃<E89D90>2嚗𡁶<E59A97>摰𡁏<E691B0>頧踝<E9A0A7>銝齿綫<E9BDBF><EFBFBD>Windows<77><EFBFBD>撌殷<E6928C>
volumes:
  - ./mysql-data:/var/lib/mysql
# <20><EFBFBD>嚗帋蜓<E5B88B>箇𤌍敶𤏪<E695B6><F0A48FAA><EFBFBD><EFBFBD><E99BBF><EFBFBD>撌?
# 蝐餃<E89D90>3嚗魩mpfs嚗<73><EFBFBD><EFBFBD>銝齿<E98A9D><EFBFBD><E98A8B>嚗?tmpfs:
  - /var/lib/mysql
# <20><EFBFBD>嚗𡁜<E59A97>摮睃<E691AE><E79D83><EFBFBD>摰孵膥<E5ADB5>𨀣迫<F0A880A3>喃腺憭?```

**摰匧<E691B0><E58CA7><EFBFBD>**
```bash
# <20>?<3F>𨀣迫摰孵膥嚗<E886A5><E59A97><EFBFBD>蹱㺭<E8B9B1><EFBFBD>
docker-compose stop

# <20>?<3F>𨀣迫撟嗅<E6929F><E59785>文捆<E69687><EFBFBD>靽萘<E99DBD><E89098>唳旿嚗?docker-compose down

# <20>𩤃<EFBFBD> <20>𣳇膄摰孵膥<E5ADB5>𣬚<EFBFBD>蝏頣<E89D8F><EFBFBD><E99BBF><EFBFBD>坔㭘嚗<E3AD98><E59A97><EFBFBD><EFBFBD>
docker-compose down --volumes=false

# <20>?<3F>𣳇膄<F0A3B387><E88684><EFBFBD><EFBFBD><E39A81><EFBFBD>𡠺<EFBFBD>唳旿<E594B3><EFBFBD><E79880>梢埯嚗<E59FAF><E59A97>
docker-compose down --volumes
docker-compose down -v  # <20><EFBFBD>

<EFBFBD>唳旿憭<EFBFBD>

# 憭<>遢MySQL<51>唳旿<E594B3>?docker run --rm -v redcap-db-data:/data -v $(pwd):/backup \
  ubuntu tar czf /backup/redcap-db-backup.tar.gz /data

# <20><EFBFBD><EFBCB7>唳旿<E594B3>?docker run --rm -v redcap-db-data:/data -v $(pwd):/backup \
  ubuntu tar xzf /backup/redcap-db-backup.tar.gz -C /

<EFBFBD><EFBFBD><><E98A9D><EFBFBD><EFBFBD>蝵脫<E89DB5>蝔页<E89D94>霂衣<E99C82>甇仿炊嚗?

7.1 <20>嗆挾1嚗𡁜<E59A97><EFBFBD><E686AD>蝵格<E89DB5>隞塚<E99A9E>15<31><35><EFBFBD>嚗?

甇仿炊1嚗𡁜<EFBFBD>撱粹★<EFBFBD>桃𤌍敶?```powershell

餈𥕦<EFBFBD>憿寧𤌍<EFBFBD>寧𤌍敶?cd D:\MyCursor\AIclinicalresearch

<EFBFBD>𥕦遣Docker<EFBFBD>函蔡<EFBFBD><EFBFBD>

New-Item -ItemType Directory -Path "redcap-docker-dev" -Force cd redcap-docker-dev

<EFBFBD>𥕦遣摮鞟𤌍敶?New-Item -ItemType Directory -Path "config\apache" -Force

New-Item -ItemType Directory -Path "config\php" -Force New-Item -ItemType Directory -Path "scripts" -Force


#### 甇仿炊2嚗𡁶<E59A97><F0A181B6><EFBFBD>蝵格<E89DB5>隞?```powershell
# 甇斗郊撉文<E69289><E69687>梯䌊<E6A2AF><EFBFBD><E585B8>𡁏𧋦摰峕<E691B0>嚗𣬚<E59A97><F0A3AC9A><EFBFBD>
# - docker-compose.yml
# - Dockerfile.redcap
# - .env
# - config/apache/redcap.conf
# - config/php/php.ini
# - config/database.php
# - scripts/*.ps1

甇仿炊3嚗𡁻<EFBFBD><EFBFBD>EDCap皞鞟<EFBFBD>

# 蝖株恕皞鞟<E79A9E>摮睃銁
Test-Path ..\redcap15.8.0\redcap\install.php

# 颲枏枂嚗関rue嚗<65>”蝷箸<E89DB7><E7AEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

7.2 <20>嗆挾2嚗𡁜鍳<F0A1819C>典捆<E585B8><EFBFBD>10<31><30><EFBFBD>嚗?

甇仿炊1嚗𡁏<EFBFBD>撱粹<EFBFBD><EFBFBD>?```powershell

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>銋兴EDCap<EFBFBD>𨅯<EFBFBD>

docker-compose build

颲枏枂蝷箔<EFBFBD>嚗?# Building redcap-web...

Step 1/10 : FROM php:8.1-apache

...

Successfully built abc123def456

Successfully tagged redcap-docker-dev_redcap-web:latest


#### 甇仿炊2嚗𡁜鍳<F0A1819C><EFBFBD><E586BD>匧捆<E58CA7>?```powershell
# <20>𤾸蝱<F0A4BEB8>臬𢆡
docker-compose up -d

# 颲枏枂蝷箔<E89DB7>嚗?# Creating network "redcap-docker-dev_redcap-network" ... done
# Creating volume "redcap-docker-dev_redcap-db-data" ... done
# Creating redcap-mysql ... done
# Creating redcap-web   ... done
# Creating redcap-phpmyadmin ... done

甇仿炊3嚗𡁶<EFBFBD><EFBFBD>ySQL撠梁貌

# <20><EFBFBD>MySQL<51><EFBFBD>
docker-compose logs redcap-db | Select-String "ready for connections"

# 蝑匧<E89D91><E58CA7><EFBFBD>嚗?# [Server] /usr/sbin/mysqld: ready for connections.

# 撱箄悅蝑匧<E89D91>30蝘?Start-Sleep -Seconds 30

甇仿炊4嚗帋耨憭齿<EFBFBD>隞嗆<EFBFBD><EFBFBD>?```powershell

<EFBFBD>芸𢆡靽桀<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡁏𧋦嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>究etup-redcap.ps1銝哨<E98A9D>

docker exec -it redcap-web chown -R www-data:www-data /var/www/html/edocs docker exec -it redcap-web chown -R www-data:www-data /var/www/html/temp docker exec -it redcap-web chown -R www-data:www-data /var/www/html/modules


#### 甇仿炊5嚗𡁻<E59A97><EFBFBD><EFBFBD>函𠶖<E587BD>?```powershell
# 璉<><E79289><EFBFBD><E4BAA4>匧捆<E58CA7><EFBFBD>銵𣬚𠶖<F0A3AC9A>?docker-compose ps

# 摨磰砲<E7A3B0><EFBFBD>嚗?# Name               State    Ports
# redcap-mysql       Up       0.0.0.0:3306->3306/tcp
# redcap-web         Up       0.0.0.0:8080->80/tcp
# redcap-phpmyadmin  Up       0.0.0.0:8081->80/tcp

7.3 <20>嗆挾3嚗鑹EDCap摰㕑<E691B0>嚗?0<><30><EFBFBD>嚗?

甇仿炊1嚗朞挪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>撖?```

<EFBFBD><EFBFBD>瘚讛<EFBFBD><EFBFBD>刻挪<EFBFBD><EFBFBD> http://localhost:8080/install.php


#### 甇仿炊2嚗𡁶頂蝏蠘<E89D8F><EFBFBD><E79899><EFBFBD>?```
REDCap隡朞䌊<E69C9E><EFBFBD><E586BD><EFBFBD>
<0A>?PHP<48><50>𧋦 8.1.x
<0A>?MySQL餈墧𦻖
<0A>?PHP<48><EFBFBD>嚗éysqli, gd, zip, etc.嚗?<3F>?<3F><><EFBFBD><E8BEA3><EFBFBD>嚗Ềdocs, temp<6D><EFBFBD>嚗?
憒<><E68692><EFBFBD>厩滯<E58EA9><EFBFBD>嚗峕覔<E5B395><EFBFBD>蝷箔耨憭?```

#### 甇仿炊3嚗𡁏㺭<F0A1818F><EFBFBD><E6A180>滨蔭

MySQL Hostname: redcap-db MySQL Database: redcap MySQL Username: redcap_user MySQL Password: redcap_pass_456 Table Prefix: (<28>嗵征嚗䔶蝙<E494B6><EFBFBD>霈?

Salt: iit_dev_salt_2026_redcap_v15


#### 甇仿炊4嚗𡁶恣<F0A181B6><E681A3><EFBFBD>韐行<E99F90>

Username: admin Password: Admin@123456 # 撘<><E69298>𤑳㴓憓<E3B493><E68693><EFBFBD>?Email: dev@example.com First Name: Admin Last Name: User


#### 甇仿炊5嚗锭MTP<54>滨蔭

<EFBFBD>㗇𥋘嚗锭kip SMTP Configuration嚗<6E>歲餈<E6ADB2><E9A488> <0A><EFBFBD>嚗鋽ay 2-8銝漤<E98A9D><EFBFBD><E996AC>隞嗅<E99A9E><E59785>?```

甇仿炊6嚗𡁜<EFBFBD><EFBFBD>𣂼<EFBFBD>鋆?```

<EFBFBD>孵稬 "Complete Installation" 蝑匧<E89D91><E58CA7>唳旿摨栞”<E6A09E>𥕦遣嚗<E981A3>漲2-3<><33><EFBFBD>嚗?<3F><EFBFBD> "Installation Complete!" 瘨<><E798A8>


#### 甇仿炊7嚗𡁻<E59A97>甈∠蒈敶?```
霈輸䔮嚗冴ttp://localhost:8080/
<0A><EFBFBD><E586BD><EFBFBD>admin
撖<><E69296>嚗鋫dmin@123456

<0A>?<3F><EFBFBD><E9A483>𣂼<EFBFBD>嚗𣬚<E59A97><F0A3AC9A>訌EDCap銝駁△

7.4 <20>嗆挾4嚗𡁜<E59A97>撱箸<E692B1>霂閖★<E99696><EFBFBD>30<33><30><EFBFBD>嚗?

甇仿炊1嚗𡁏鰵撱粹★<EFBFBD>?```

  1. <EFBFBD>孵稬 "New Project"
  2. 憿寧𤌍<EFBFBD><EFBFBD><EFBFBD>嚗䥑IT Test Project
  3. 憿寧𤌍<EFBFBD><EFBFBD>嚗鑹esearch
  4. 璅⊥踎嚗鍃mpty Project嚗<74><E59A97>憭游<E686AD>撱綽<E692B1>
  5. <EFBFBD>孵稬 "Create Project"

#### 甇仿炊2嚗朞挽霈⊥㺭<E28AA5><EFBFBD><E6A180>?
**<2A>𥕦遣銵典<E98AB5>1嚗𡁏<E59A97><F0A1818F><EFBFBD><EFBFBD><EFBFBD>Demographics嚗?*

摮埈挾<EFBFBD>𡑒”嚗?1. record_id (Record ID)

  • 蝐餃<EFBFBD>嚗関ext Box
  • 撉諹<EFBFBD>嚗䥑nteger
  • <EFBFBD><EFBFBD><EFBFBD>蝚佗<EFBFBD>Yes
  1. patient_name (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?

    • 蝐餃<EFBFBD>嚗関ext Box
    • <EFBFBD><EFBFBD><EFBFBD>蝚佗<EFBFBD>Yes
  2. age (撟湧<E6929F>)

    • 蝐餃<EFBFBD>嚗関ext Box
    • 撉諹<EFBFBD>嚗䥑nteger
    • <EFBFBD><EFBFBD>凒嚗?-120
  3. gender (<28><EFBFBD>)

    • 蝐餃<EFBFBD>嚗鑹adio Buttons
    • <EFBFBD>厰★嚗?, <20>?| 2, 憟?
  4. enrollment_date (<28><EFBFBD><E4BAA6><EFBFBD>)

    • 蝐餃<EFBFBD>嚗関ext Box
    • 撉諹<EFBFBD>嚗鋽ate (Y-M-D)

**<2A>𥕦遣銵典<E98AB5>2嚗𡁻<E59A97>霈輯扇敶𤏪<E695B6>Follow-up嚗?*

摮埈挾<EFBFBD>𡑒”嚗?1. followup_date (<28>讛挪<E8AE9B><EFBFBD>)

  • 蝐餃<EFBFBD>嚗関ext Box
  • 撉諹<EFBFBD>嚗鋽ate (Y-M-D)
  1. followup_type (<28>讛挪蝐餃<E89D90>)

    • 蝐餃<EFBFBD>嚗鋽ropdown
    • <EFBFBD>厰★嚗?, <20><EFBFBD> | 2, <20><EFBFBD> | 3, 蝥蹂<E89DA5>
  2. adverse_event (銝滩<E98A9D>鈭衤辣)

    • 蝐餃<EFBFBD>嚗枠es-No
    • 暺䁅恕嚗鐭o
  3. notes (憭<>釣)

    • 蝐餃<EFBFBD>嚗鐭otes Box (Paragraph Text)

#### 甇仿炊3嚗𡁜<E59A97>撱箸<E692B1>霂閙㺭<E99699>?```
瘛餃<E7989B>5<EFBFBD><EFBFBD>霂訫<E99C82>霂閗<E99C82><E99697>扇敶𤏪<E695B6>

Record 1:
- patient_name: 撘牐<E69298>
- age: 45
- gender: <20>?- enrollment_date: 2025-12-01

Record 2:
- patient_name: <20>𤾸<EFBFBD>
- age: 52
- gender: 憟?- enrollment_date: 2025-12-05

... (<28><>裦3<E8A3A6>?

甇仿炊4嚗𡁜鍳<EFBFBD>杗PI霈輸䔮

1. 餈𥕦<E9A488>憿寧𤌍
2. 撌虫儒<E899AB>𨅯<EFBFBD> <20>?Applications <20>?API
3. <20>孵稬 "Enable API Access"
4. <20><EFBFBD>?"Export"<22>?Import" <20><><EFBFBD>
5. <20>孵稬 "Request API Token"
6. 蝟餌<E89D9F><E9A48C><EFBFBD><EFBFBD>Token嚗<6E><EFBFBD>冽鸌<E586BD><E9B88C><EFBFBD><EFBFBD>牐蛹<E78990>舐恣<E88890><E681A3><EFBFBD>嚗?7. 憭滚<E686AD>Token靽嘥<E99DBD>嚗?   蝷箔<E89DB7>嚗鋫1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6

甇仿炊5嚗𡁏<EFBFBD>霂𧭈PI靚<EFBFBD>

# PowerShell瘚贝<E7989A>撖澆枂<E6BE86>唳旿
$apiUrl = "http://localhost:8080/api/"
$token = "YOUR_API_TOKEN_HERE"

$body = @{
    token = $token
    content = 'record'
    format = 'json'
    type = 'flat'
}

Invoke-RestMethod -Uri $apiUrl -Method Post -Body $body

# 摨磰砲餈𥪜<E9A488>JSON<4F><EFBFBD><EFBFBD><E59A97><EFBFBD>?<3F><EFBFBD>霂閙㺭<E99699>?```

---

### 7.5 <20>嗆挾5嚗𡁻<E59A97>蝵桀<E89DB5>蝡舐㴓憓<E3B493><E68693><EFBFBD>𧶏<EFBFBD>15<31><35><EFBFBD>嚗?
#### 甇仿炊1嚗𡁏凒<F0A1818F><EFBFBD>蝡?env
```bash
# AIclinicalresearch/backend/.env

# ========== REDCap<61>滨蔭嚗<E894AD>鰵憓痹<E68693>==========
REDCAP_API_URL=http://localhost:8080/api/
REDCAP_API_TOKEN=A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
REDCAP_PROJECT_ID=1

# 瘜冽<E7989C>嚗饝ocalhost<73>求ocker摰孵膥<E5ADB5><E886A5><EFBFBD><EFBFBD>㺿銝榴ost.docker.internal
# 憒<><E68692><EFBFBD>𡒊垢銋笔銁Docker<65><72><EFBFBD>摨𥪯蝙<F0A5AAAF>典捆<E585B8>沉P<E6B289>𡝗<EFBFBD><F0A19D97><EFBFBD>

甇仿炊2嚗𡁜<EFBFBD>撱態PI瘚贝<EFBFBD><EFBFBD>𡁏𧋦

// backend/src/modules/iit-manager/test-redcap-api.ts

import axios from 'axios';

const REDCAP_API_URL = process.env.REDCAP_API_URL || 'http://localhost:8080/api/';
const REDCAP_API_TOKEN = process.env.REDCAP_API_TOKEN || '';

async function testREDCapAPI() {
  console.log('<27><> Testing REDCap API Connection...');
  
  try {
    const response = await axios.post(REDCAP_API_URL, new URLSearchParams({
      token: REDCAP_API_TOKEN,
      content: 'record',
      format: 'json',
      type: 'flat'
    }));
    
    console.log('<27>?API Connection Successful!');
    console.log(`<60><> Retrieved ${response.data.length} records`);
    console.log('Sample Record:', response.data[0]);
  } catch (error: any) {
    console.error('<27>?API Connection Failed:', error.message);
  }
}

testREDCapAPI();

甇仿炊3嚗朞<EFBFBD>銵峕<EFBFBD>霂?```powershell

cd D:\MyCursor\AIclinicalresearch\backend npx ts-node src/modules/iit-manager/test-redcap-api.ts

<EFBFBD><EFBFBD>颲枏枂嚗?# <20><> Testing REDCap API Connection...

<EFBFBD>?API Connection Successful!

<EFBFBD><EFBFBD> Retrieved 5 records

Sample Record: { record_id: '1', patient_name: '撘牐<E69298>', ... }


---

### 7.6 <20>函蔡摰峕<E691B0>撉諹<E69289><EFBFBD><E79A9C>

撉諹<EFBFBD>憿? <20><EFBFBD>?<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><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><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> <0A>?Docker摰孵膥<E5ADB5><EFBFBD>餈鞱<E9A488> [ ] <0A>?MySQL<51>唳旿摨枏虾餈墧𦻖 [ ] <0A>?REDCap摰㕑<E691B0><E39591>𣂼<EFBFBD> [ ] <0A>?蝞∠<E89D9E><E288A0>䁅揭<E48185>瑕虾<E79195><EFBFBD> [ ] <0A>?瘚贝<E7989A>憿寧𤌍撌脣<E6928C>撱? [ ] <0A>?API Token撌脩<E6928C><E884A9>? [ ] <0A>?API靚<49>鍂瘚贝<E7989A><E8B49D><EFBFBD> [ ] <0A>?<3F>𡒊垢<F0A1928A><EFBFBD><E887AC><EFBFBD>撌脤<E6928C>蝵? [ ] <0A>?phpMyAdmin<69>航挪<E888AA><EFBFBD><E6AEB7><EFBFBD><EFBFBD> [ ]

<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗諹”蝷粹<EFBFBD>蝵脫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>


---

## <20><20><EFBFBD><E68092><EFBFBD>蝏渡恣<E6B8A1><E681A3><EFBFBD><EFBFBD>?
### 8.1 <20>臬𢆡<E887AC>𡁏𧋦嚗ìtart-redcap.ps1嚗?
```powershell
#!/usr/bin/env pwsh
# start-redcap.ps1 - <20>臬𢆡REDCap撘<70><E69298>𤑳㴓憓?
Write-Host "<22><> Starting REDCap Development Environment..." -ForegroundColor Cyan

# 璉<><E79289>主ocker<65>臬炏餈鞱<E9A488>
$dockerRunning = docker info 2>&1 | Select-String "Server Version"
if (-not $dockerRunning) {
    Write-Host "<22>?Docker is not running. Please start Docker Desktop." -ForegroundColor Red
    exit 1
}

# <20>臬𢆡摰孵膥
docker-compose up -d

# 蝑匧<E89D91>MySQL撠梁貌
Write-Host "<22>?Waiting for MySQL to be ready..." -ForegroundColor Yellow
Start-Sleep -Seconds 10

docker-compose logs redcap-db | Select-String "ready for connections"

# <20>曄內<E69B84>滚𦛚<E6BB9A><EFBFBD>?Write-Host ""
Write-Host "<22>?REDCap Environment Started!" -ForegroundColor Green
Write-Host ""
Write-Host "<22><> Service URLs:" -ForegroundColor Cyan
Write-Host "  REDCap:      http://localhost:8080" -ForegroundColor White
Write-Host "  phpMyAdmin:  http://localhost:8081" -ForegroundColor White
Write-Host ""
Write-Host "<22><> Container Status:" -ForegroundColor Cyan
docker-compose ps

8.2 <20>𨀣迫<F0A880A3>𡁏𧋦嚗ìtop-redcap.ps1嚗?

#!/usr/bin/env pwsh
# stop-redcap.ps1 - <20>𨀣迫REDCap撘<70><E69298>𤑳㴓憓?
Write-Host "<22><EFBFBD>  Stopping REDCap Development Environment..." -ForegroundColor Yellow

# <20>𨀣迫摰孵膥嚗<E886A5><E59A97><EFBFBD>蹱㺭<E8B9B1><EFBFBD>
docker-compose stop

Write-Host "<22>?REDCap Environment Stopped!" -ForegroundColor Green
Write-Host ""
Write-Host "<22>働 Data volumes are preserved." -ForegroundColor Cyan
Write-Host "   Run 'start-redcap.ps1' to restart." -ForegroundColor Cyan

8.3 <20><EFBFBD><E4BAA6><EFBFBD><E4BA99>𡁏𧋦嚗ēogs-redcap.ps1嚗?

#!/usr/bin/env pwsh
# logs-redcap.ps1 - <20><EFBFBD>REDCap<61><EFBFBD>

param(
    [string]$Service = "",
    [switch]$Follow
)

Write-Host "<22><> REDCap Container Logs" -ForegroundColor Cyan
Write-Host ""

if ($Follow) {
    # 摰墧𧒄頝蠘葵<E8A098><EFBFBD>
    if ($Service) {
        docker-compose logs -f $Service
    } else {
        docker-compose logs -f
    }
} else {
    # <20>曄內<E69B84><E585A7>餈烐𠯫敹?    if ($Service) {
        docker-compose logs --tail=50 $Service
    } else {
        docker-compose logs --tail=50
    }
}

8.4 皜<><E79A9C><EFBFBD>𡁏𧋦嚗Ếlean-redcap.ps1嚗?

#!/usr/bin/env pwsh
# clean-redcap.ps1 - 皜<><E79A9C>REDCap<61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿頣<E99BBF>嚗?
Write-Host "<22><>儭? REDCap Environment Cleanup" -ForegroundColor Red
Write-Host ""
Write-Host "<22>𩤃<EFBFBD>  WARNING: This will DELETE ALL DATA!" -ForegroundColor Red
Write-Host ""

$confirm = Read-Host "Type 'YES' to confirm deletion"

if ($confirm -ne "YES") {
    Write-Host "<22>?Cleanup cancelled." -ForegroundColor Yellow
    exit 0
}

Write-Host ""
Write-Host "<22><>儭? Removing containers..." -ForegroundColor Yellow
docker-compose down

Write-Host "<22><>儭? Removing volumes (DATA LOSS!)..." -ForegroundColor Red
docker-compose down --volumes

Write-Host "<22><>儭? Removing images..." -ForegroundColor Yellow
docker rmi redcap-docker-dev_redcap-web

Write-Host ""
Write-Host "<22>?Cleanup Complete!" -ForegroundColor Green
Write-Host "   Run 'setup-redcap.ps1' to redeploy." -ForegroundColor Cyan

<EFBFBD>㴓 銋腈<E98A8B><E88588><EFBFBD>蝑𡝗<E89D91><F0A19D97>?

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵脣<EFBFBD>嚗諹窈蝖株恕隞乩<EFBFBD><EFBFBD><EFBFBD>嚗?

9.1 敹<><E695B9><EFBFBD><EFBFBD>

<EFBFBD><EFBFBD>憿? <EFBFBD>厰★ <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>㗇𥋘
<EFBFBD>函蔡雿滨蔭 redcap-docker-dev/ <EFBFBD>?<3F><EFBFBD> [ ]
REDCap蝡臬藁 8080 / <20><EFBFBD> 8080 [ ]
MySQL蝡臬藁 3306 / <20><EFBFBD> 3306 [ ]
phpMyAdmin <EFBFBD><EFBFBD>閬?/ 銝漤<E98A9D>閬? <EFBFBD><EFBFBD>閬? [ ]
SMTP<EFBFBD>滨蔭 頝唾<EFBFBD> / <20>滨蔭 頝唾<EFBFBD> [ ]
*<EFBFBD>唳旿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <EFBFBD><EFBFBD><EFBFBD>?/ 蝏穃<E89D8F><E7A983><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>? [ ]

9.2 <20><EFBFBD><E887AC><EFBFBD>

# 蝖株恕隞乩<E99A9E><EFBFBD><E69296><EFBFBD><E59A97><EFBFBD>𤑳㴓憓<E3B493><E68693>
MYSQL_ROOT_PASSWORD=redcap_root_123        # <20><EFBFBD> [ ]
MYSQL_DATABASE=redcap                      # <20><EFBFBD> [ ]
MYSQL_USER=redcap_user                     # <20><EFBFBD> [ ]
MYSQL_PASSWORD=redcap_pass_456             # <20><EFBFBD> [ ]

# Salt<6C><EFBFBD><E6BD98><EFBFBD><EFBFBD><E59A97><EFBFBD>西挽蝵桐<E89DB5><E6A190>舀凒<E88880><EFBFBD>
REDCAP_SALT=iit_dev_salt_2026_redcap_v15   # <20><EFBFBD> [ ]

9.3 蝡臬藁<E887AC><EFBFBD><EFBFBD><E79289>?

# 霂瑕<E99C82>餈鞱<E9A488>隞乩<E99A9E><E4B9A9>賭誘璉<E8AA98><E79289>亦垢<E4BAA6>?netstat -ano | findstr :8080   # REDCap
netstat -ano | findstr :3306   # MySQL
netstat -ano | findstr :8081   # phpMyAdmin

# 憒<><E68692><EFBFBD><EFBFBD><EFBFBD><E89D92>霈啣<E99C88><E595A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝡臬藁嚗?# REDCap蝡臬藁<E887AC>嫣蛹嚗噔______
# MySQL蝡臬藁<E887AC>嫣蛹嚗噔______
# phpMyAdmin蝡臬藁<E887AC>嫣蛹嚗噔______

<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>蝏剜郊撉?

10.1 Day 2撘<32><E69298><EFBFBD>憭?

<EFBFBD>函蔡摰峕<EFBFBD><EFBFBD>𠬍<EFBFBD>蝡见朖<EFBFBD>臭誑撘<EFBFBD>憪页<EFBFBD>

<EFBFBD>?REDCap API Adapter撘<72><E69298>?   - exportRecords() 摰䂿緵
   - importRecords() 摰䂿緵
   - exportMetadata() 摰䂿緵

<0A>?<3F><EFBFBD>API瘚贝<E7989A>
   - 雿輻鍂摰鮋<E691B0>API Token
   - 撉諹<E69289>JSON<4F><EFBFBD><E6BB9A><EFBFBD>
   - 瘚贝<E7989A><E8B49D>躰秤憭<E7A7A4><E686AD>

<0A>?SyncManager撘<72><E69298>?   - 瘛瑕<E7989B><E79195>峕郊璅<E79285>嚗Áebhook + Polling嚗?   - <20>唳旿憓鮋<E68693><E9AE8B><EFBFBD>
   - pg-boss隞餃𦛚靚<F0A69B9A>

10.2 External Module撘<65><E69298>𡢅<EFBFBD>Day 8嚗?

敶㯄<EFBFBD><EFBFBD><EFBFBD><EFBFBD>䫿xternal Module<6C><EFBFBD>
1. <20>?redcap15.8.0/redcap/modules/ <20>𥕦遣璅<E79285><E288AA><EFBFBD>
2. 蝻硋<E89DBB> config.json <20>?Module.php
3. 摰孵膥隡朞䌊<E69C9E><EFBFBD>頧踝<E9A0A7><E8B89D>牐蛹雿輻鍂<E8BCBB><EFBFBD><EFBFBD><E692A0>
4. REDCap<61><EFBFBD>銝剖<E98A9D><E58996>舐鍂璅<E79285>

10.3 餈<><EFBFBD><EFBFBD>鈭抒㴓憓<E3B493><E68693><EFBFBD>芣䔉嚗?

<EFBFBD>砍𧑐撘<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𠬍<EFBFBD>
1. <20>券燵<E588B8><EFBFBD>ECS<43><53><EFBFBD>摰㕑<E691B0>REDCap嚗𡿨AMP嚗?2. <20>滨蔭RDS MySQL嚗<4C><E59A97><EFBFBD>舐鍂嚗?3. <20>滨蔭OSS摮睃<E691AE>嚗Ềdocs<63><EFBFBD>嚗?4. <20>滨蔭SSL霂<4C>髡嚗𡿨et's Encrypt嚗?5. <20>滨蔭SMTP嚗<50><EFBFBD><EFBFBD>DirectMail嚗?6. 憭滚<E686AD>External Module<6C><EFBFBD>鈭抒㴓憓?7. 撖澆<E69296>瘚贝<E7989A>憿寧𤌍嚗<F0A48C8D><E59A97>隞𤾸仍<F0A4BEB8>𥕦遣嚗?```

---

## <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>獢?
### 11.1 憿寧𤌍<E5AFA7><F0A48C8D>﹝

- [REDCap鈭峕活撘<E6B4BB><E69298>烐楛摨行<E691A8><E8A18C>㻩(./REDCap%20鈭峕活撘<E6B4BB><E69298>烐楛摨行<E691A8><E8A18C>?md) - REDCap<61><EFBFBD><E59786>袏M撘<4D><E69298>?- [REDCap<61>函蔡<E587BD><E894A1><EFBFBD>銝𡒊㴓憓<E3B493><E68693><EFBFBD>(./02-REDCap<61>函蔡<E587BD><E894A1><EFBFBD>銝𡒊㴓憓<E3B493><E68693>瘙?md) - <20>煺漣<E785BA><EFBFBD><E887AC>函蔡
- [IIT Manager Agent<6E><74><EFBFBD>舀䲮獢?V1.1](../IIT%20Manager%20Agent/02-<2D><><EFBFBD>航挽霈?IIT%20Manager%20Agent%20摰峕㟲<E5B395><E39FB2><EFBFBD><EFBFBD><E887AC>烐䲮獢?20(V1.1).md) - REDCap<61><70><EFBFBD><EFBFBD><EFBFBD>
- [MVP撘<50><E69298>睲遙<E79DB2><EFBFBD><E28AA5>騟(../IIT%20Manager%20Agent/04-撘<><E69298>𤏸恣<F0A48FB8>?MVP撘<50><E69298>睲遙<E79DB2><EFBFBD><E28AA5>?md) - Day 2隞餃𦛚

### 11.2 摰䀹䲮<E480B9><E4B2AE>﹝

- REDCap摰条<E691B0>嚗冴ttps://projectredcap.org/
- REDCap API<50><49>﹝嚗冴ttps://redcap.vanderbilt.edu/api/help/
- External Module<6C><65>﹝嚗冴ttps://github.com/vanderbilt-redcap/external-module-framework-docs

### 11.3 Docker<65><72>﹝

- Docker Compose嚗冴ttps://docs.docker.com/compose/
- Docker PHP<48>𨅯<EFBFBD>嚗冴ttps://hub.docker.com/_/php
- Docker MySQL<51>𨅯<EFBFBD>嚗冴ttps://hub.docker.com/_/mysql

---

## <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𨀣<EFBFBD><F0A880A3>?
### 12.1 摰孵膥<E5ADB5><EFBFBD><E4ADBE>臬𢆡

```powershell
# 璉<><E79289>主ocker<65><EFBFBD>?docker info

# <20><EFBFBD>摰孵膥<E5ADB5><EFBFBD>
docker-compose logs

# 璉<><E79289>亦垢<E4BAA6><E59EA2><EFBFBD><EFBFBD>?netstat -ano | findstr :8080
netstat -ano | findstr :3306

# <20>滚遣摰孵膥
docker-compose down
docker-compose up -d --force-recreate

12.2 <20><EFBFBD>霈輸䔮REDCap

# 璉<><E79289>亙捆<E4BA99><EFBFBD>銵𣬚𠶖<F0A3AC9A>?docker-compose ps

# 璉<><E79289>丕pache<68><EFBFBD>
docker-compose logs redcap-web

# 餈𥕦<E9A488>摰孵膥霂𦠜鱏
docker exec -it redcap-web bash
curl localhost

12.3 <20>唳旿摨栞<E691A8><E6A09E>亙仃韐?

# 璉<><E79289>仗ySQL<51><EFBFBD>
docker-compose logs redcap-db

# 瘚贝<E7989A>MySQL餈墧𦻖
docker exec -it redcap-mysql mysql -uredcap_user -predcap_pass_456 -e "SHOW DATABASES;"

# 璉<><E79289>卡atabase.php<68>滨蔭
docker exec -it redcap-web cat /var/www/html/redcap/database.php

12.4 API靚<49>鍂憭梯揖

# 撉諹<E69289>API Token
# REDCap <20>?Applications <20>?API <20>?<3F><EFBFBD>Token

# 瘚贝<E7989A>API餈墧𦻖
curl -X POST http://localhost:8080/api/ `
  -d "token=YOUR_TOKEN" `
  -d "content=version"

# 摨磰砲餈𥪜<E9A488>REDCap<61><70>𧋦<EFBFBD>?```

---

## <20>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵脫<E89DB5><E884AB><EFBFBD><EFBFBD>敹?
敶𤘪<EFBFBD><EFBFBD><EFBFBD>隞乩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧒄嚗諹蝷粹<EFBFBD>蝵脫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

<EFBFBD>?<3F><EFBFBD>摰孵膥<E5ADB5><EFBFBD><E59786><EFBFBD><EFBFBD><E695B9>嚗? - redcap-mysql: Up

  • redcap-web: Up

潃?颲<>𨭌摰孵膥<E5ADB5><EFBFBD><E59786><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E99A9E><EFBFBD>𤑳㴓憓<E3B493><E68693>

  • redcap-phpmyadmin: Up嚗<70><EFBFBD><EFBFBD><E39A81>煺漣<E785BA><EFBFBD><EFBFBD>鍂嚗? <0A>?<3F>滚𦛚<E6BB9A>航挪<E888AA>? - http://localhost:8080 <20>?REDCap<61><EFBFBD>憿蛛<E686BF><E89B9B><EFBFBD>嚗? - http://localhost:8081 <20>?phpMyAdmin<69>屸𢒰嚗<F0A292B0><EFBFBD><EFBFBD><EFBFBD><E99D9A><EFBFBD><EFBFBD>

<EFBFBD>?<3F><EFBFBD>撉諹<E69289>

  • 蝞∠<EFBFBD><EFBFBD>条蒈敶閙<EFBFBD><EFBFBD>? - 瘚贝<E7989A>憿寧𤌍撌脣<E6928C>撱? - API Token撌脩<E6928C><E884A9>? - API靚<49>鍂餈𥪜<E9A488><F0A5AA9C>唳旿

<EFBFBD>?<3F>𡒊垢<F0A1928A><E59EA2><EFBFBD>

  • .env<6E>滨蔭摰峕<E691B0>
  • API瘚贝<EFBFBD><EFBFBD>𡁏𧋦<EFBFBD><EFBFBD>
  • Node.js<6A>航挪<E888AA>娜EDCap

霂湔<EFBFBD>嚗?- phpMyAdmin<69>臬虾<E887AC><EFBFBD><EFBFBD><E69298>𤏸<EFBFBD>霂訫極<E8A8AB>?- <20>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>摰匧<E691B0><E58CA7><EFBFBD><EFBFBD>摨𠉛<E691A8><F0A0899B>?- 銝滚蔣<E6BB9A>㣔EDCap<61><EFBFBD><E8A9A8><EFBFBD>


---

## <20><>儭?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鈭抒㴓憓<E3B493><E68693>蝵脫<E89DB5><E884AB>?
### 14.1 <20>砍𧑐撘<F0A79190><E69298>?<3F>?<3F>煺漣<E785BA><EFBFBD><EFBFBD>宏頝臬<E9A09D>

```yaml
<0A>嗆挾1: <20>砍𧑐撘<F0A79190><E69298>𤑳㴓憓<E3B493><E68693>敶枏<E695B6>嚗?<3F><EFBFBD> <20><EFBFBD>嚗鋫PI撘<49><E69298><EFBFBD><E3BBAB>M靚<4D><E99D9A>
<0A><EFBFBD> <20><EFBFBD>嚗阳indows/Mac + Docker Desktop
<0A><EFBFBD> <20>唳旿摨橒<E691A8>Docker MySQL摰孵膥
<0A><EFBFBD><>𨭌撌亙<E6928C>嚗䮝hpMyAdmin嚗<6E><E59A97>霂𤏪<E99C82>
<0A><EFBFBD> <20>鞉𧋦嚗?0

<0A>嗆挾2: <20><EFBFBD>鈭烐<E988AD>霂閧㴓憓?<3F><EFBFBD> <20><EFBFBD>嚗𡁻<E59A97><F0A181BB><EFBFBD>霂𨰻<E99C82><F0A8B0BB><EFBFBD><EFBFBD>瘚贝<E7989A>
<0A><EFBFBD> <20>滚𦛚<E6BB9A><EFBFBD><E58981><EFBFBD>鈭䫿CS嚗?<3F>?GB嚗?<3F><EFBFBD> <20>唳旿摨橒<E691A8><E6A992><EFBFBD>鈭駵DS MySQL<51><EFBFBD><E7AE87>?<3F><EFBFBD> 摮睃<E691AE>嚗帋<E59A97><E5B88B><EFBFBD>40GB ESSD嚗?<3F><EFBFBD> <20><EFBFBD>嚗魩est-redcap.yourdomain.com
<0A><EFBFBD> <20>鞉𧋦嚗块?00-700/<2F>?
<0A>嗆挾3: <20><EFBFBD>鈭𤑳<E988AD>鈭抒㴓憓?<3F><EFBFBD> <20><EFBFBD>嚗𡁏迤撘讐<E69298>鈭扯<E988AD>銵?<3F><EFBFBD> <20>滚𦛚<E6BB9A><EFBFBD><E58981><EFBFBD>鈭䫿CS嚗?<3F>?GB嚗?<3F><EFBFBD> <20>唳旿摨橒<E691A8><E6A992><EFBFBD>鈭駵DS MySQL擃睃虾<E79D83><EFBFBD>
<0A><EFBFBD> 摮睃<E691AE>嚗帋<E59A97><E5B88B><EFBFBD>100GB ESSD嚗?+ OSS憭<53><0A><EFBFBD> 韐蠘蝸<E8A098><E89DB8>﹛嚗𡁻燵<F0A181BB><EFBFBD>SLB + SSL霂<4C><0A><EFBFBD> <20>烐綉嚗鋴loudMonitor + <20><EFBFBD><E4BA99>滚𦛚
<0A><EFBFBD> <20><EFBFBD>嚗鬏edcap.yourdomain.com
<0A><EFBFBD> <20>鞉𧋦嚗块?500-2000/<2F>?
<0A>嗆挾4: <20>駁堺蝘<E5A0BA><E89D98><EFBFBD><EFBFBD>蝵?<3F><EFBFBD> <20><EFBFBD>嚗𡁜龫<F0A1819C><EFBFBD>蝵𤏸<E89DB5>銵?<3F><EFBFBD> <20>滚𦛚<E6BB9A><EFBFBD><E58981>駁堺<E9A781>𣂷<EFBFBD><F0A382B7>滚𦛚<E6BB9A>?<3F><EFBFBD> <20>唳旿摨橒<E691A8>Docker MySQL <20>?<3F>駁堺MySQL<51>滚𦛚<E6BB9A>?<3F><EFBFBD> <20>函蔡<E587BD><EFBFBD>嚗鋽ocker蝳餌瑪<E9A48C>𨅯<EFBFBD><F0A885AF>?<3F><EFBFBD> 鈭支<E988AD><E694AF><EFBFBD><EFBFBD><E98A9D><EFBFBD>蝵脰<E89DB5><E884B0>?+ <20>寡悌<E5AFA1><EFBFBD>
<0A><EFBFBD> <20>鞉𧋦嚗帋<E59A97>甈⊥<E79488><EFBFBD>蝵脰晶<E884B0>?```

### 14.2 <20>煺漣<E785BA><EFBFBD>Docker<65>滨蔭靚<E894AD>㟲

#### 靚<>㟲1嚗𡁶宏<F0A181B6>小hpMyAdmin

```yaml
# docker-compose.yml <20>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>𧋦

services:
  redcap-db:
    # ... MySQL<51>滨蔭靽脲<E99DBD>銝滚<E98A9D>

  redcap-web:
    # ... REDCap<61>滨蔭靽脲<E99DBD>銝滚<E98A9D>

  # <20>?蝘駁膄phpMyAdmin嚗<6E><E59A97><EFBFBD><EFBFBD><E588BB><EFBFBD>嚗?  # phpmyadmin:
  #   ...

# <20>煺漣<E785BA><EFBFBD><E887AC>唳旿摨梶恣<E6A2B6><E681A3>䲮撘𧶏<E69298>
# 1. 雿輻鍂<E8BCBB><EFBFBD>鈭駵DS<44><EFBFBD><E689B9>?# 2. SSH餈墧𦻖ECS<43>𦒘蝙<F0A69298>皂ysql<71>賭誘銵?# 3. <20><EFBFBD><E783BE><EFBFBD>MS<4D>唳旿蝞∠<E89D9E><E288A0>滚𦛚

<EFBFBD>㟲2嚗帋蝙<EFBFBD>沖DS MySQL

# docker-compose.yml <20>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>𧋦

services:
  # <20>?蝘駁膄redcap-db摰孵膥嚗<E886A5><EFBFBD>沖DS嚗?  # redcap-db:
  #   ...

  redcap-web:
    image: redcap-web:v1.0
    environment:
      # 餈墧𦻖<E5A2A7><EFBFBD>鈭駵DS
      REDCAP_DB_HOST: rm-xxxxxx.mysql.rds.aliyuncs.com
      REDCAP_DB_PORT: 3306
      REDCAP_DB_NAME: redcap_prod
      REDCAP_DB_USER: redcap_user
      REDCAP_DB_PASS: ${MYSQL_PASSWORD}  # 隞𡒊㴓憓<E3B493><E68693><EFBFBD>讛粉<E8AE9B>?    # ... <20><EFBFBD><E597A1>滨蔭

<EFBFBD>㟲3嚗𡁻<EFBFBD>蝵娟SL霂<EFBFBD>

# docker-compose.yml <20>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>𧋦

services:
  redcap-web:
    volumes:
      # <20><>蝸SSL霂<4C>
      - ./ssl/cert.pem:/etc/ssl/certs/redcap.crt:ro
      - ./ssl/key.pem:/etc/ssl/private/redcap.key:ro
    ports:
      - "80:80"
      - "443:443"  # HTTPS蝡臬藁

<EFBFBD>㟲4嚗朞<EFBFBD>皞鞾<EFBFBD><EFBFBD>?

# docker-compose.yml <20>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>𧋦

services:
  redcap-web:
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 4G
        reservations:
          cpus: '1'
          memory: 2G
    restart: always  # <20>芸𢆡<E88AB8>滚鍳

<EFBFBD>㟲5嚗𡁏𠯫敹㛖恣<EFBFBD>?

# docker-compose.yml <20>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>𧋦

services:
  redcap-web:
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

14.3 <20>煺漣<E785BA><EFBFBD>摰匧<E691B0><E58CA7>惩𤐄

<EFBFBD><EFBFBD>憿對<EFBFBD>
<EFBFBD><EFBFBD> 靽格㺿<E6A0BC><E3BABF><EFBFBD><EFBFBD>霈文<E99C88><E69687><EFBFBD><EFBFBD>MySQL<51><4C>EDCap admin嚗?<3F><EFBFBD> <20>舐鍂HTTPS嚗<53><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> <20>滨蔭<E6BBA8><EFBFBD>憓躰<E68693><E8BAB0><EFBFBD><EFBFBD><E99A9E><EFBFBD>?0/443蝡臬藁嚗?<3F><EFBFBD><>鍂phpMyAdmin嚗<6E><EFBFBD>文捆<E69687><EFBFBD>
<EFBFBD><EFBFBD> <20>滨蔭摰𡁏<E691B0><F0A1818F>芸𢆡憭<F0A286A1>遢嚗<E981A2><EFBFBD><EFBFBD> + <20><>辣嚗?<3F><EFBFBD> <20>滨蔭<E6BBA8>烐綉<E78390>𡃏郎嚗㇃PU<50><55><EFBFBD>摮塩<E691AE><E5A1A9><EFBFBD><EFBFBD><EFBFBD><E5A1A9><EFBFBD><EFBFBD>∠𠶖<E288A0><F0A0B696><EFBFBD>
<EFBFBD><EFBFBD> <20>𣂼<EFBFBD>SSH霈輸䔮嚗<E494AE><E59A97><EFBFBD>亥恕霂?+ IP<49><EFBFBD><E8B3A2>𤏪<EFBFBD>
<EFBFBD><EFBFBD> 摰𡁏<E691B0><F0A1818F>湔鰵摰匧<E691B0>銵乩<E98AB5>

<EFBFBD><EFBFBD>憿對<EFBFBD>
<EFBFBD><EFBFBD> 雿輻鍂<E8BCBB><EFBFBD>鈭騌LB<4C><EFBFBD>頧賢<E9A0A7><E98AB5>SSL<53>貉蝸
<EFBFBD><EFBFBD> <20>滨蔭WAF嚗Áeb摨𠉛鍂<F0A0899B><EFBFBD>憓辷<E68693>
<EFBFBD><EFBFBD> <20>舐鍂RDS<44>芸𢆡憭<F0A286A1>遢嚗<E981A2><E59A97><EFBFBD><EFBFBD>隞踝<E99A9E>靽萘<E99DBD>7憭抬<E686AD>
<EFBFBD><EFBFBD> <20>滨蔭OSS摮睃<E691AE><EFBFBD>遢嚗<E981A2><E59A97><EFBFBD>啣捆<E595A3><EFBFBD>
<EFBFBD><EFBFBD> 雿輻鍂CloudMonitor摰墧𧒄<E5A2A7>烐綉

14.4 <20>煺漣<E785BA><EFBFBD><E887AC>鞉𧋦隡啁<E99AA1>

<EFBFBD><EFBFBD>鈭𤑳<EFBFBD>鈭抒㴓憓<EFBFBD><EFBFBD>蝵殷<EFBFBD>

霈∠<EFBFBD><EFBFBD><EFBFBD>嚗?<3F><EFBFBD> ECS 4<>?GB嚗块?00/<2F>?<3F><EFBFBD> 鈭𤑳<E988AD> 100GB ESSD嚗块?0/<2F>?<3F><EFBFBD> 撠讛恣嚗块?50/<2F>?
<EFBFBD>唳旿摨橒<EFBFBD>
<EFBFBD><EFBFBD> RDS MySQL擃睃虾<E79D83><EFBFBD> 2<>?GB嚗块?00/<2F>?<3F><EFBFBD> 摮睃<E691AE> 100GB嚗𡁜<E59A97><F0A1819C>?<3F><EFBFBD> 撠讛恣嚗块?00/<2F>?
蝵𤑳<EFBFBD>銝𤾸<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> SLB韐蠘蝸<E8A098><E89DB8>﹛嚗块?0/<2F>?<3F><EFBFBD> SSL霂<4C>髡嚗块?00/撟湛<E6929F>Let's Encrypt<70>滩晶嚗?<3F><EFBFBD> <20><EFBFBD><EFBFBD><E7989A>嚗块?.8/GB嚗<42>摯蝞䪖?0/<2F><><EFBFBD>
<EFBFBD><EFBFBD> 撠讛恣嚗块?10/<2F>?
摮睃<EFBFBD>銝𤾸<EFBFBD>隞踝<EFBFBD>
<EFBFBD><EFBFBD> OSS摮睃<E691AE> 100GB嚗块?0/<2F>?<3F><EFBFBD> OSS瘚<53><E7989A>嚗块?0/<2F>?<3F><EFBFBD> 撠讛恣嚗块?0/<2F>?
<EFBFBD>烐綉銝擧𠯫敹梹<EFBFBD>
<EFBFBD><EFBFBD> CloudMonitor嚗𡁜<E59A97>韐?<3F><EFBFBD> <20><EFBFBD><E4BA99>滚𦛚 10GB嚗块?/<2F>?<3F><EFBFBD> 撠讛恣嚗块?/<2F>?
<EFBFBD>餉恣嚗块?185/<2F><><EFBFBD>蝥汕?4,220/撟湛<E6929F>

隡睃<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟湛<EFBFBD>嚗?<3F><EFBFBD> ECS 4<>?GB嚗?撟湛<E6929F>嚗块?600/撟湛<E6929F>瞼300/<2F><><EFBFBD>
<EFBFBD><EFBFBD> RDS MySQL擃睃虾<E79D83><EFBFBD>嚗块?00/<2F>?<3F><EFBFBD> <20><EFBFBD>嚗块?35/<2F>?<3F><EFBFBD> <20>餉恣嚗块?035/<2F><><EFBFBD>蝥汕?2,420/撟湛<E6929F>

14.5 <20>駁堺蝘<E5A0BA><E89D98><EFBFBD><EFBFBD>蝵脖漱隞䀹<E99A9E><E480B9>?

鈭支<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𤏪<EFBFBD>

1. Docker<65>𨅯<EFBFBD><F0A885AF><EFBFBD><EFBFBD>
   <EFBFBD><EFBFBD> redcap-web:v1.0.tar嚗<72><EFBFBD><EFBFBD><E7AE87>𨅯<EFBFBD><F0A885AF><EFBFBD>辣嚗?   <20><EFBFBD> mysql:8.0.tar嚗<72><E59A97><EFBFBD>駁堺<E9A781>䭾㺭<E4ADBE><EFBFBD>嚗?   <20><EFBFBD> docker-compose.yml嚗<6C><E59A97>蝵格<E89DB5>隞塚<E99A9E>

2. <20>函蔡<E587BD>𡁏𧋦嚗?   <20><EFBFBD> install-docker.sh嚗㇄ocker摰㕑<E691B0><E39591>𡁏𧋦嚗?   <20><EFBFBD> setup-redcap.sh嚗<68><E59A97><EFBFBD><EFBFBD>蝵脰<E89DB5><E884B0>穿<EFBFBD>
   <EFBFBD><EFBFBD> start-redcap.sh嚗<68><EFBFBD><EFBFBD><E588BB>穿<EFBFBD>
   <EFBFBD><EFBFBD> stop-redcap.sh嚗<68><E59A97><E79487><EFBCBA>穿<EFBFBD>
   <EFBFBD><EFBFBD> backup-redcap.sh嚗<68><E59A97>隞質<E99A9E><E8B3AA>穿<EFBFBD>

3. <20><>﹝嚗?   <20><EFBFBD> <20>函蔡<E587BD><E894A1><EFBFBD>.pdf嚗<66><EFBFBD>T<EFBCA0><54><EFBFBD>
   <EFBFBD><EFBFBD> 餈鞟輕<E99E9F><EFBFBD>.pdf嚗<66>𠯫撣豢<E692A3>雿頣<E99BBF>
   <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>埝䰻<E59F9D><EFBFBD>.pdf嚗<66>䔮憸䁅<E686B8><E48185><EFBFBD>
   <EFBFBD><EFBFBD> 摰匧<E691B0><E58CA7>惩𤐄<E683A9><F0A49084><EFBFBD>.pdf嚗<66><E59A97><EFBFBD><E996AB><EFBFBD><E79899>

4. <20>滨蔭璅⊥踎嚗?   <20><EFBFBD> database.php.template嚗<65><EFBFBD><EFBFBD><E6A180>滨蔭嚗?   <20><EFBFBD> php.ini.template嚗㇊HP<48>滨蔭嚗?   <20><EFBFBD> apache.conf.template嚗㇁pache<68>滨蔭嚗?   <20><EFBFBD> .env.template嚗<65>㴓憓<E3B493><E68693><EFBFBD>𧶏<EFBFBD>

5. <20>寡悌<E5AFA1><EFBFBD>嚗?   <20><EFBFBD> 蝟餌<E89D9F><E9A48C><EFBFBD>霂湔<E99C82>.pptx
   <EFBFBD><EFBFBD> <20>亙虜餈鞟輕<E99E9F>寡悌.pptx
   <EFBFBD><EFBFBD> <20><EFBFBD>瞍𠉛內閫<E585A7><E996AB>.mp4

<EFBFBD>函蔡瘚<EFBFBD><EFBFBD>嚗?Step 1: <20>駁堺IT摰㕑<E691B0>Docker嚗?0<><30><EFBFBD>嚗?Step 2: 撖澆<E69296>Docker<65>𨅯<EFBFBD>嚗?0<><30><EFBFBD>嚗?Step 3: <20>滨蔭<E6BBA8><EFBFBD><E887AC><EFBFBD>嚗?0<><30><EFBFBD>嚗?Step 4: <20>臬𢆡摰孵膥嚗?<3F><><EFBFBD>嚗?Step 5: <20><EFBFBD><E598A5>餸EDCap嚗?0<><30><EFBFBD>嚗?Step 6: 撉諹<EFBFBD><EFBFBD><EFBFBD>嚗?0<><30><EFBFBD>嚗?<3F>餉恣嚗𡁶漲2撠𤩺𧒄

14.6 <20>煺漣<E785BA><EFBFBD><E887AC>烐綉<E78390><EFBFBD>

<EFBFBD>烐綉<EFBFBD><EFBFBD><EFBFBD>嚗?
蝟餌<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> CPU雿輻鍂<E8BCBB><E98D82><EFBFBD><EFBFBD>𡃏郎<F0A1838F><E9838E><EFBFBD><EFBFBD>>80% <20><>賒5<E8B392><35><EFBFBD>嚗?<3F><EFBFBD> <20><><EFBFBD>雿輻鍂<E8BCBB><E98D82><EFBFBD><EFBFBD>𡃏郎<F0A1838F><E9838E><EFBFBD><EFBFBD>>85%嚗?<3F><EFBFBD><><E89DA4>雿輻鍂<E8BCBB><E98D82><EFBFBD><EFBFBD>𡃏郎<F0A1838F><E9838E><EFBFBD><EFBFBD>>80%嚗?<3F><EFBFBD> 蝵𤑳<E89DB5><EFBFBD><E7989A><EFBFBD><E59A97>撣豢<E692A3><E8B1A2><EFBFBD>霅佗<E99C85>

摨𠉛鍂撅<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> REDCap<61>舐鍂<E88890><EFBFBD>HTTP<54>亙熒璉<E78692><E79289><EFBFBD>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD>嚗?<3F><EFBFBD> <20><EFBFBD><E6BB9A>園𡢿嚗<F0A1A2BF><E59A97>霅阡<E99C85><E998A1><EFBFBD>>3蝘𡜐<E89D98>
<EFBFBD><EFBFBD> <20>躰秤<E8BAB0><E7A7A4><EFBFBD><EFBFBD>𡃏郎<F0A1838F><E9838E><EFBFBD><EFBFBD>>1%嚗?<3F><EFBFBD> 撟嗅<E6929F><E59785><EFBFBD><E586BD>?
<EFBFBD>唳旿摨枏<EFBFBD>嚗?<3F><EFBFBD> RDS餈墧𦻖<E5A2A7><EFBFBD><E5A086>𡃏郎<F0A1838F><E9838E><EFBFBD><EFBFBD>>80%嚗?<3F><EFBFBD> <20>䰻霂㺭嚗?1蝘垍<E89D98><E59E8D>亥砭嚗?<3F><EFBFBD><><E89DA4>IOPS雿輻鍂<E8BCBB>?<3F><EFBFBD> CPU雿輻鍂<E8BCBB>?
摰孵膥撅<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> 摰孵膥餈鞱<E9A488><E99EB1><EFBFBD><E59786><EFBFBD><EFBFBD>芸𢆡<E88AB8>滚鍳<E6BB9A>烐綉嚗?<3F><EFBFBD> 摰孵膥韏<E886A5><E99F8F>雿輻鍂嚗<E98D82><E59A97>摮䀹<E691AE>瞍𤩺<E79E8D>瘚页<E7989A>
<EFBFBD><EFBFBD> 摰孵膥<E5ADB5><EFBFBD><E4BA99>躰秤<E8BAB0>?
<EFBFBD>𡃏郎<EFBFBD><EFBFBD>嚗?<3F><EFBFBD> <20>凋縑嚗<E7B891><EFBFBD><EFBFBD>霅佗<E99C85>
<EFBFBD><EFBFBD> <20>桐辣嚗<E8BEA3><E59A97><EFBFBD><EFBFBD>霅佗<E99C85>
<EFBFBD><EFBFBD> <20><EFBFBD>/隡<><E99AA1>敺桐縑嚗<E7B891>𣪧<EFBFBD><EFBFBD>𡁶䰻嚗?<3F><EFBFBD> CloudMonitor<6F><EFBFBD><E689B9>?```

---

## <20><> 蝏栞祗

### <20>砍𧑐撘<F0A79190><E69298>𤑳㴓憓<E3B493><E68693>蝵脣<E89DB5><E884A3>?<3F>?
**<2A><EFBFBD><EFBFBD><E59A97>撌脫<E6928C><E884AB>﹕EDCap Docker<EFBFBD>函蔡<EFBFBD><EFBFBD><EFBFBD>?*

餈坔<EFBFBD>Docker<EFBFBD>滨蔭<EFBFBD><EFBFBD>隞乩<EFBFBD><EFBFBD><EFBFBD>嚗?- <20>?**撘<><E69298>?<3F>煺漣<E785BA><EFBFBD><EFBFBD><E98A9D>?*嚗𡁏<E59A97><F0A1818F>斤㴓憓<E3B493><E68693>蝘?- <20>?**<2A>舐凒<E88890>亦鍂鈭𡒊<E988AD>鈭?*嚗𡁶<E59A97><EFBFBD><E9A488><EFBFBD><EFBFBD><E8AE9B>游朖<E6B8B8>?- <20>?**<2A><EFBFBD>蝳餌瑪鈭支<E988AD>**嚗𡁜龫<F0A1819C><EFBFBD><EFBCB9><EFBFBD><E58CA7>函蔡
- <EFBFBD>?**2鈭箏𣪧<E7AE8F>笔虾蝏湔擪**嚗𡁶<E59A97><F0A181B6>𨰻<EFBFBD><F0A8B0BB><EFBFBD>𤩺<EFBFBD><F0A4A9BA><EFBFBD><EFBFBD>?
### 銝衤<E98A9D>甇亥<E79487><E4BAA5>?
**蝡见朖撘<E69C96>憪?*嚗?- Day 2嚗𡁜<E59A97>憪苄EDCap API Adapter撘<72><E69298>?- <20><><EFBFBD><EFBFBD><EFBFBD>[MVP撘<50><E69298>睲遙<E79DB2><EFBFBD><E28AA5>騟(../IIT%20Manager%20Agent/04-撘<><E69298>𤏸恣<F0A48FB8>?MVP撘<50><E69298>睲遙<E79DB2><EFBFBD><E28AA5>?md)

**<2A>芣䔉閫<E49489><E996AB>**嚗?- Week 2-3嚗𡁻燵<F0A181BB><EFBFBD>ECS瘚贝<E7989A><E8B49D><EFBFBD><E887AC>函蔡
- Month 1-2嚗𡁜龫<F0A1819C><EFBFBD><EFBCBA><EFBFBD>蝵?- Month 3+嚗𡁏<E59A97><F0A1818F><EFBFBD><EFBFBD>鈭支<E988AD><EFBFBD><E7989A>

### <20><><EFBFBD><EFBFBD><EFBFBD>

- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD>埝䰻"蝡㰘<E89DA1>
- <EFBFBD><EFBFBD>Docker摰孵膥<EFBFBD><EFBFBD>嚗䫤docker-compose logs`
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>EDCap摰䀹䲮<EFBFBD><EFBFBD>﹝嚗冴ttps://projectredcap.org/
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>CS<EFBFBD>唾悅<EFBFBD><EFBFBD>嚗靀REDCap<EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD>函蔡嚗鍃CS vs SAE瘛勗漲<E58B97>唾悅<E594BE><EFBFBD>](./REDCap%20<32>煺漣<E785BA><EFBFBD><E887AC>函蔡嚗鍃CS%20vs%20SAE%20瘛勗漲<E58B97>唾悅<E594BE><EFBFBD>.md)

---

> **<2A><>﹝蝏湔擪**嚗𡁏𧋦<F0A1818F><F0A78BA6><EFBFBD>苢IT Manager Agent憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD>湔鰵  
> **<2A><>𧋦<EFBFBD><F0A78BA6>蟮**嚗? 
> - v1.0 (2026-01-01): <EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦  
> - v2.0 (2026-01-01): <EFBFBD>寞旿ECS<EFBFBD>唾悅<EFBFBD><EFBFBD>靽株恥嚗<EFBFBD>撩靚<EFBFBD><EFBFBD><EFBFBD>?<3F>煺漣銝<E6BCA3><E98A9D><EFBFBD>? 
> **<2A><><EFBFBD>擧凒<E693A7>?*嚗?026-01-01  
> **銝𧢲活摰⊥䰻**嚗𡁶<E59A97>鈭抒㴓憓<E3B493><E68693>甈⊿<E79488>蝵脣<E89DB5>