FSTS 架構決策紀錄(ADR)

docs/project/project.architecture-decisions.md待填寫的決策模板,六大主題(A–F)共 13 項 checklist,目前所有 [ ] 尚未勾選、決策理由:{理由} 多為佔位符。本頁摘要模板架構,實際選型尚未定案。回到 Planning 總覽

狀態說明:本頁標記為 status: draft,原因是原始模板使用 {YYYY-MM-DD} 等佔位符、所有項目皆為待決策。實際決策一旦完成,應在原始 raw 更新內容並重新 ingest(觸發 hash-drift)。

一句話

此模板定義六大技術決策領域:錯誤處理、橫切面 Middleware、共用基礎設施、排程任務、報表套件、DI 註冊方式,供技術負責人於專案初始化時依實際選型填寫並勾選 [x]1

六大決策主題

2

類別項目說明
A錯誤處理體系A1 自訂 Exception、A2 Filter/Handler、A3 驗證錯誤格式
B橫切面 MiddlewareB1 Request Logging、B2 Security Headers、B3 Rate Limiting、B4 Response Compression、B5 驗證訊息在地化
C共用基礎設施C1 強型別 Options Pattern、C2 CurrentUserService
D排程任務D1 排程框架選型、D2 分工規則
E報表套件E1 Excel 匯出、E2 PDF 匯出
FDI 註冊方式F1 DI Extension Methods

A. 錯誤處理體系(範例項)

3

ID項目內容
A1自訂 Exception 類型體系BusinessExceptionValidationExceptionNotFoundExceptionUnauthorizedExceptionForbiddenException、其他專案特定
A2Exception Filter / Handler依 Exception 類型自動對應 HTTP StatusCode + Log Level + 統一回傳格式;整合 UserId / Controller / Action / 異常詳情
A3驗證錯誤格式定義ValidateErrors 型別(Dictionary<string, string[]> 或其他)

D. 排程框架候選

4

選項授權特色適用
Quartz.NETApache 2.0輕量、RAM Store、無需額外 DBCron 排程任務
HangfireLGPL / 商業版有 Dashboard、需要 DB 表需監控的背景任務
BackgroundService(內建)免費最輕量、無 Cron 支援常駐型任務

D2 分工建議:常駐任務 → BackgroundService(WebSocket 連線保持、定時輪詢);Cron 排程 → Quartz.NET / Hangfire(每日報表、夜間資料清洗)。

E1. Excel 匯出候選

5

選項授權說明
NPOIApache 2.0純 .NET、Linux 相容
ClosedXMLMITAPI 較友善
EPPlus商業版 / GPL功能豐富,商業需付費

E2. PDF 匯出候選

6

選項授權說明
Puppeteer SharpMITHTML + CSS 模板,排版精確;Dockerfile 需裝 Chromium + fonts-noto-cjk + PUPPETEER_EXECUTABLE_PATH
QuestPDF社群版有限制DSL 撰寫,商業需付費
LibreOffice(Word→PDF)LGPLContainer image 較大,轉換偶有跑版

決策修訂紀錄(模板欄位)

模板預留以下欄位待填:7

日期項目修訂內容決策者
{YYYY-MM-DD}{項目編號}{修訂說明}{決策者}

確認不融合的項目(模板欄位)

供記錄評估過但決定不引入的技術或模式,及決策理由。目前尚無條目。8

相關頁面

補充資訊

(未來 ingest 新來源會在此追加段落。一旦原始 ADR 實際填入選型,請觸發 re-ingest。)


參考資料

Footnotes

  1. project.architecture-decisions.md §標題與使用方式

  2. project.architecture-decisions.md §Checklist

  3. project.architecture-decisions.md §A 錯誤處理體系

  4. project.architecture-decisions.md §D 排程任務

  5. project.architecture-decisions.md §E1 Excel 匯出

  6. project.architecture-decisions.md §E2 PDF 匯出

  7. project.architecture-decisions.md §決策修訂紀錄

  8. project.architecture-decisions.md §確認不融合的項目