# 第四階段後續功能節點切分表

本文件承接 [第四階段線上驗收紀錄](phase-four-final-online-acceptance-record.md)，用來回答「真正 Loader、外部 DLL、DB audit、config schema、WebApi auth / Swagger / 正式部署安全模型、Windows Service 什麼時候開始驗證並撰寫程式」。

本表不是程式實作授權。它只把第四階段最小範圍完成後，後續功能的建議切分、開始條件、驗證方式與停止線整理清楚。

## 0. 文件狀態

| 項目 | 內容 |
|---|---|
| 文件狀態 | 已建立 |
| 建立日期 | 2026-06-07 |
| 承接基準 | 第四階段最小範圍已完成線上驗收 |
| 程式基準 | `6f34bb9 新增 4D 最小 Application plugin contract` |
| 目前結論 | 可開始後續節點規劃；尚未授權 Loader、DLL、DB、config、auth 或 Windows Service 程式修改 |

## 1. 目前已完成與尚未啟用

| 項目 | 目前狀態 | 說明 |
|---|---|---|
| 4B WebApi 第一版 | 已完成 | 已有最小 WebApi route / DTO / controller / API tests；尚未做正式 auth、Swagger、正式部署安全模型。 |
| 4C ServiceHost 第一版 | 已完成 | 已有最小 ServiceHost runtime / state / status / options / tests；尚未做 Windows Service 安裝、正式背景服務部署或 recovery 設定。 |
| 4D 最小 Application plugin contract | 已完成 | 已有 plugin metadata、state、verification result、audit record model 與 tests；尚未建立真正 Loader。 |
| 真正 PluginLoader | 未啟用 | 尚未建立 `IPluginLoader`、Loader class、plugin folder 掃描或外部 DLL 載入。 |
| 外部 DLL 載入 | 未啟用 | 尚未定義 trust model 落地、簽章 / checksum、來源白名單、測試 DLL 或隔離策略。 |
| config schema | 未啟用 | 尚未新增 plugin path、enable flag、trust policy、service install 或 auth 設定欄位。 |
| DB audit table | 未啟用 | 尚未新增正式 DB table、DDL、migration、Apply 或真實 DB 寫入節點。 |
| WebApi auth / Swagger | 未啟用 | 尚未導入身分驗證、權限、token、Swagger 或外部發布設定。 |
| Windows Service | 未啟用 | 尚未做 install / uninstall、start / stop、recovery、服務帳號或正式 log 路徑。 |

## 2. 建議切分總覽

| 建議節點 | 主題 | 何時開始驗證 | 何時開始寫程式 | 必備前置 |
|---|---|---|---|---|
| 4E | 後續功能總切分與決策確認 | 現在即可開始文件確認 | 不寫程式 | 本文件完成後，使用者確認切分順序與停止線 |
| 5A | PluginLoader 安全模型與最小 Loader | 4E 七項決策確認後 | 5A 實作前確認通過後 | trust model、來源白名單、checksum / signature、錯誤隔離、測試 DLL 規則 |
| 5B | config schema for plugin / service / auth | 5A contract 穩定後 | config 欄位確認後 | 需先知道 Loader、Service、auth 需要哪些非敏感欄位 |
| 5C | DB audit table / audit writer | 5A audit event 與欄位固定後 | DB DDL / manual-only 驗證確認後 | 欄位、索引、保留策略、DDL 權限、rollback、測試 DB gate |
| 5D | WebApi auth / Swagger / 正式 API 安全 | 4B route 穩定且使用場景確認後 | auth 決策確認後 | 使用者角色、token 方式、Swagger 開放範圍、部署環境 |
| 5E | Windows Service 正式部署 | 4C ServiceHost lifecycle 穩定後 | service install 設計確認後 | service account、start/stop/recovery、log path、設定位置、部署權限 |
| 5F | 整合驗證與部署驗收 | 5A 至 5E 各自完成後 | 不作為第一個程式節點 | 需先完成 isolated tests，再做整合與回復測試 |

## 3. 功能逐項說明

| 功能 | 建議所屬節點 | 第一個可做的工作 | 第一個程式驗證 | 不可直接跳過的停止線 |
|---|---|---|---|---|
| 真正 PluginLoader | 5A | 建立 Loader 實作前確認表 | 不載入外部 DLL 的 fake loader / metadata validation tests | 不得未確認就建立 `IPluginLoader` public contract 或掃描 plugin folder |
| 外部 DLL 載入 | 5A 後段或 5F | 建立 DLL trust / checksum / signature 決策表 | 使用測試 DLL 與隔離資料夾做 manual-only 驗證 | 不得載入未知來源 DLL；不得在一般 CI 跑外部 DLL |
| config schema | 5B | 列出 plugin、service、auth 所需非敏感欄位 | ConfigValidator / ConfigLoader tests | 不得把 token、密碼、正式 IP、正式 path 寫進 repo |
| DB audit table | 5C | 建立 audit 欄位 / 索引 / DDL 安全表 | fake gateway + manual-only 測試 DB write/read/cleanup | 不得未確認就執行 DDL / ALTER TABLE / Apply |
| WebApi auth | 5D | 建立 auth / role / token / route protection 決策表 | API tests 驗證 unauthorized / forbidden / success | 不得未確認就導入套件、secret、正式帳號或公開 Swagger |
| Swagger | 5D | 決定只限開發環境或內網 | WebApi 啟動與文件可見性測試 | 不得預設外網公開正式 API 文件 |
| Windows Service | 5E | 建立 service install / recovery / log path 設計 | 本機 install / start / stop manual-only 驗證 | 不得未確認就修改啟動方式、服務帳號或正式機器設定 |

## 4. 建議實作順序

1. 先做 4E 後續功能總切分與決策確認。
2. 再做 5A PluginLoader 安全模型與最小 Loader。
3. Loader contract 穩定後，再做 5B config schema。
4. audit event 與欄位穩定後，再做 5C DB audit table。
5. WebApi 正式對外或跨主機使用前，再做 5D auth / Swagger / 正式 API 安全。
6. ServiceHost 要進現場常駐執行前，再做 5E Windows Service。
7. 各節點各自通過後，再做 5F 整合驗證與部署驗收。

## 5. 不建議的順序

| 不建議做法 | 原因 |
|---|---|
| 直接先寫 DLL 載入 | trust model、來源白名單、checksum、隔離與測試 DLL 尚未固定，風險最高。 |
| 先改 config schema | Loader / Service / auth 欄位未固定，容易讓未成熟欄位變成正式契約。 |
| 先建 DB audit table | audit event 還未固定，DDL 與資料保留策略容易返工。 |
| 先做 Windows Service 安裝 | ServiceHost 第一版只驗證 lifecycle，尚未確認服務帳號、recovery、log path 與部署權限。 |
| 先開 Swagger / auth 套件 | route protection、角色與部署環境尚未固定，容易引入未確認套件與 secret 流程。 |

## 6. 驗證節點規劃

| 節點 | 驗證類型 | 驗證內容 |
|---|---|---|
| 5A PluginLoader | Unit + manual-only | metadata validation、safe path、checksum mismatch、disabled plugin、loader error mapping、測試 DLL 載入停止線 |
| 5B config schema | Unit | 缺欄位、錯誤欄位、敏感資訊拒絕、路徑白名單、向下相容 |
| 5C DB audit | Unit + manual-only DB | fake gateway insert mapping、schema precheck、write/read/cleanup、DDL gate |
| 5D WebApi auth | API tests | unauthorized、forbidden、valid token、role mapping、Swagger 可見性 |
| 5E Windows Service | manual-only | install、start、stop、restart、recovery、log path、config path |
| 5F 整合驗收 | manual-only | ServiceHost + Loader + config + audit + WebApi 的最小閉環與回復測試 |

## 7. 建議決策確認項目

| 編號 | 決策項 | 建議 |
|---|---|---|
| 1 | 是否接受先做 4E 後續節點決策確認 | 建議同意，先固定順序，不直接寫程式。 |
| 2 | 第一個程式節點是否從 5A PluginLoader 開始 | 建議同意，因 Loader 是 DLL、config、audit 的上游。 |
| 3 | 外部 DLL 是否需獨立 manual-only 驗證 | 建議同意，不進一般 CI，不載入未知 DLL。 |
| 4 | config schema 是否等 Loader contract 穩定後再改 | 建議同意，避免不成熟設定欄位進入正式契約。 |
| 5 | DB audit 是否獨立成 DB 安全節點 | 建議同意，DDL / ALTER TABLE / Apply 需單獨確認。 |
| 6 | auth / Swagger 是否獨立成 WebApi 安全節點 | 建議同意，避免把安全模型混入 Loader 或 Service 節點。 |
| 7 | Windows Service 是否獨立成正式部署節點 | 建議同意，需另行確認服務帳號、recovery、log path 與部署權限。 |

## 8. 結論

這些功能可以開始「規劃與決策確認」，但不建議同時開始寫程式。第一個適合進入程式實作的後續節點是 5A PluginLoader 安全模型與最小 Loader；外部 DLL、config schema、DB audit、WebApi auth / Swagger 與 Windows Service 都應排在各自前置決策完成之後。

## 9. 建議下一步

建議下一步整理「4E 後續功能節點決策確認表」，請使用者逐項確認上方七項決策。確認後，才進入 5A PluginLoader 實作前確認。
