跳至主要内容

GAMP5 Category 5 驗證策略 — Git-Based Quality System

本文件定義 GatherSystemTech 針對 FDA 21 CFR Part 11 合規軟體的驗證策略, 以 Git + GitHub + Linear 為核心品質管理工具。

1. 適用範圍

項目說明
適用專案Jope-SMB(模擬移動床控制系統)及所有需符合 FDA 21 CFR Part 11 的軟體專案
GAMP5 分類Category 5 — 客製化軟體(Custom/Bespoke Software)
法規依據FDA 21 CFR Part 11 — Electronic Records; Electronic Signatures

2. 品質管理工具組合

2.1 工具對應表

品質活動工具說明
需求管理Linear Issue每個需求對應一個 Issue,含描述、優先順序、狀態追蹤
變更管理Git + GitHub PR所有程式碼變更透過 PR 流程,含審查與核准
版本控制Git完整的變更歷史,不可竄改(搭配 Branch Protection)
程式碼審查GitHub PR ReviewReviewer approve = 正式審查紀錄
測試管理Git commit + Test Agent測試結果記錄於 commit 與 PR 中
追蹤鏈Linear → Git → GitHub → Test端到端可追溯
文件版控Git repo(markdown)驗證文件以 markdown 格式納入版本控制
文件審核GitHub PR Review文件變更同樣透過 PR 審查流程

2.2 Git 已滿足的 FDA Part 11 要求

FDA Part 11 要求Git/GitHub 對應滿足程度
Audit Trail(稽核軌跡)git loggit blame — 記錄誰、何時、改了什麼完全滿足
Change Control(變更控制)PR review + approve 流程完全滿足
Code Review(程式碼審查)PR review comments、approve 紀錄永久保留完全滿足
Traceability(可追溯性)Commit → PR → Linear Issue 完整追蹤鏈完全滿足
Attributable(可歸因)每個 commit 含 author + timestamp完全滿足

2.3 需要補強的部分

FDA Part 11 要求缺口解決方案複雜度
Electronic Signature(電子簽章)Git commit 不等於法規定義的電子簽章GPG signed commits + Branch Protection 要求簽章
System Validation(系統驗證)Git/GitHub 本身不是 validated system撰寫 IQ/OQ/PQ 驗證文件
Access Control(存取控制)需證明權限管理是受控的GitHub Branch Protection Rules + 文件化權限矩陣
Prevent Record Deletion(防止紀錄刪除)git push --force 可竄改歷史禁用 force push + Branch Protection
Reason for Change(變更理由)不一定每次都記錄「為什麼改」強制 commit message 包含 Issue ID
Closed System(封閉系統)GitHub 是雲端服務撰寫安全控制文件,定義存取範圍

3. Git 工作流程(合規版)

3.1 Merge 策略

Squash Merge 為標準策略,所有 feature branch 合併至 master/develop 時使用。

優勢說明
1:1 對應master 上一個 commit = 一個 PR = 一個 Linear Issue
容易 Revert回滾一個功能只需 revert 一個 commit
歷史乾淨git log --oneline master 直接作為版本變更記錄
稽核友善每個 commit 都是完整、可追蹤的變更單元

3.2 分支生命週期

feature branch 建立 → 開發 → PR 建立 → Review + Approve → Squash Merge → 刪除 branch
  • Feature branch 合併後必須刪除,避免分支雜亂
  • 開發過程保留在 GitHub PR 中(所有原始 commits、diff、review 討論永久保留)
  • Branch 刪除不影響任何歷史紀錄

3.3 追蹤鏈

git log                  →  查看「改了什麼」(每個 commit 帶 PR 編號)
GitHub PR (#N) → 查看「怎麼開發的」(原始 commits、diff、review)
Linear Issue (JOP-XXX) → 查看「為什麼做」(需求、開發指令、討論)

3.4 Branch Protection Rules(必須啟用)

規則設定
Require pull request reviews至少 1 位 reviewer approve
Require signed commitsGPG 簽章(電子簽章替代)
Do not allow force pushes禁止竄改歷史
Do not allow deletions禁止刪除 protected branch

4. 驗證文件架構

4.1 文件清單

文件編號文件名稱說明狀態
VP-001Validation Plan驗證策略、範圍、工具、角色定義待撰寫
SOP-001Software Development SOP軟體開發生命週期程序(含 Git 工作流程)待撰寫
SOP-002Change Control SOP變更控制程序(含 PR review 流程)待撰寫
SOP-003Testing SOP測試策略與程序待撰寫
RA-001Risk Assessment風險評估(FMEA 方法)待撰寫
RTM-001Requirements Traceability Matrix需求追溯矩陣待建立
IQ-001Installation Qualification安裝確認報告待撰寫
OQ-001Operational Qualification操作確認報告待撰寫
PQ-001Performance Qualification效能確認報告待撰寫
VSR-001Validation Summary Report驗證總結報告待撰寫

4.2 文件存放位置

{validation-repo}/
├── sop/
│ ├── SOP-001-software-development.md
│ ├── SOP-002-change-control.md
│ └── SOP-003-testing.md
├── validation/
│ ├── VP-001-validation-plan.md
│ ├── RA-001-risk-assessment.md
│ ├── RTM-001-traceability-matrix.md
│ └── reports/
│ ├── IQ-001-installation-qualification.md
│ ├── OQ-001-operational-qualification.md
│ ├── PQ-001-performance-qualification.md
│ └── VSR-001-validation-summary.md
├── templates/
│ └── (文件範本)
└── .github/
└── workflows/
└── pdf-export.yml ← markdown → PDF 自動化(稽核提交用)

4.3 文件管理流程

1. 撰寫/修改文件(markdown in Git)

2. 建立 PR → Reviewer approve(= 正式文件簽核)

3. Squash Merge(signed commit = 電子簽章)

4. CI 自動產生 PDF(稽核提交用)

5. RTM(需求追溯矩陣)

5.1 用途

RTM 證明每個需求都有對應的實作和測試,稽核員可據此確認無遺漏。

5.2 格式

需求(Linear Issue)設計規格實作(PR)測試方法測試結果狀態
JOP-99:Recipe 版本控制Recipe Version Control DesignPR #14單元測試 + 整合測試通過
JOP-101:Alarm/InterlockAlarm Classification DesignPR #12單元測試 + 整合測試通過
JOP-102:Backup/RecoveryBackup System DesignPR #13單元測試 + 整合測試通過

5.3 自動化方案

現有工具鏈已具備自動產出 RTM 的條件:

Linear Issue(需求)
↓ Issue ID 記錄在 commit message
Git commit / PR(實作)
↓ PR 包含測試結果
Test Report(測試)

腳本自動比對 → 產出 RTM 表格

自動化腳本可從以下來源收集資料:

  1. Linear API — 撈取所有 Issue(需求清單)
  2. Git log — 比對哪些 Issue 有對應的 commit/PR
  3. Test report — 比對測試結果
  4. 自動組出 RTM — 標記缺少實作或測試的需求

6. 電子簽章策略

6.1 GPG Signed Commits

項目說明
目的證明 commit 來自特定開發者,不可偽造
機制每位開發者產生 GPG key pair,commit 時自動簽章
驗證GitHub 顯示 "Verified" 標記
SOP 定義在 SOP-001 中定義「GPG signed commit = 電子簽章」

6.2 PR Approve 作為簽核

角色動作等同於
開發者GPG signed commit開發者簽名
審查者PR approve審查者簽核
合併者Squash merge(signed)核准放行

7. 現有專案合規狀態

Jope-SMB(主要合規專案)

合規項目實作狀態說明
User Management✅ DoneGST.Plugin.UserManagement(GST-14)
Audit Trail✅ DoneGST.Plugin.AuditTrail
Electronic Signature✅ Done(應用層)應用內電子簽名機制
Session Idle Timeout✅ DoneSessionIdleService(GST-11)
NTP Time Sync✅ DoneNTP 時間同步(GST-10)
Recipe Version Control✅ DoneJOP-99
Backup/Recovery✅ DoneJOP-102
Alarm/Interlock✅ DoneJOP-101
Data Export⬜ BacklogJOP-100
Device Validation⬜ BacklogJOP-103
驗證文件⬜ 未開始本文件定義的文件架構

8. 後續行動

優先順序項目說明
1啟用 Branch Protection禁止 force push、要求 PR review、要求 signed commits
2設定 GPG Signed Commits所有開發者產生 GPG key,設定自動簽章
3撰寫 SOP-001 ~ SOP-003將現行 Git 工作流程正式文件化
4撰寫 VP-001 Validation Plan定義驗證策略與範圍
5建立 RTM-001從現有 Linear Issues 產出初版追溯矩陣
6撰寫 RA-001 Risk AssessmentFMEA 風險評估
7執行 IQ/OQ/PQ安裝/操作/效能確認
8撰寫 VSR-001彙整所有證據的驗證總結報告
9建立 PDF Export PipelineCI/CD markdown → PDF 自動化
10RTM 自動化腳本Linear + Git → 自動產出追溯矩陣

文件版本:v1.0 建立日期:2026-03-16 最後更新:2026-03-16 負責人:PM Agent