jimmy60504 commited on
Commit
8d4cef3
·
1 Parent(s): 81b83d1

docs: simplify spec and task templates for single-project use

Browse files
Files changed (2) hide show
  1. .github/spec-template.md +75 -59
  2. .github/task-template.md +35 -58
.github/spec-template.md CHANGED
@@ -1,71 +1,87 @@
1
- # 規格(Spec)模板
2
 
3
- > 用途:作為專案的契約與不變條件單一來源(Single Source of Truth)。本模板為領域無關,請依實際專案填寫。
 
4
 
5
  ## 1. 概述(Overview)
6
- - 背景:本專案要解決的問題與目標。
7
- - 目標(Goals):可量化或可驗證的目標。
8
- - 非目標(Non-goals):此次不處理的事項,避免範圍擴張。
9
- - 詞彙(Terminology/Glossary):關鍵名詞定義。
10
 
11
- ## 2. 架構與入口(Architecture & Entry Points
12
- - 系統構成:高階元件與資料流示意(可附圖)。
13
- - 主要入口與執行路徑:CLI/腳本/服務端點等(僅列型態與責任,避免固定檔名)。
14
- - 模組邊界:各模組職責與相依。
15
 
16
  ## 3. I/O 與資料契約(Data Contracts)
17
- - 輸入:資料形狀、欄位、必填/選填、預設值、驗證規則。
18
- - 輸出:資料形狀、欄位、誤差/置信指標(如適用)。
19
- - 錯誤模型:錯誤碼/訊息格式、可重試性。
20
- - 相容性:版本欄位或相容策略。
21
-
22
- ## 4. 限制與不變條件(Invariants & Limits)
23
- - 時間/長度/頻率/資源上限(用語義而非硬寫數值;具体值置於設定或附錄)。
24
- - 批次或分段處理策略與上限。
25
- - 資料完整性與順序保證。
26
-
27
- ## 5. 外部依賴與設定(Dependencies & Configuration)
28
- - 外部服務/檔案/模型/金鑰:用途、介面、授權界線。
29
- - 設定來源:環境變數、設定檔欄位、預設值。
30
- - 快取策略:命中/失敗行為、TTL。
31
-
32
- ## 6. 失敗降級與可觀測性(Failure & Observability)
33
- - 降級矩陣:各失敗點對應的替代行為(阻斷/退回/占位/重試)。
34
- - Logging:層級、訊息格式、關鍵欄位。
35
- - Metrics/Tracing:重要指標與取樣策略。
36
-
37
- ## 7. 使用者介面行為(UI Behavior)
38
- - 主要互動流程:狀態轉移與可見性規則。
39
- - 警告/錯誤顯示準則:何時顯示、文案風格。
40
- - 無障礙與國際化(如適用)。
41
-
42
- ## 8. 效能與擴展性(Performance & Scalability)
43
- - 資料量/延遲/吞吐目標。
44
- - 批次/併發策略與資源界線。
45
-
46
- ## 9. 測試與驗收(Testing & Acceptance
47
- - 最小測試集合:Happy path + 1–2 個邊界案例。
48
- - 手動冒煙步驟:最短可驗證路徑與預期輸出。
49
- - 模擬/替身策略(Mock/Fake/Stubs)。
50
-
51
- ## 10. 相容性、版本與遷移(Compatibility & Migration)
52
- - 版本策略:如何識別破壞性變更。
53
- - 遷移與回滾:步驟、風險、時間視窗。
54
-
55
- ## 11. 安全性與隱私(Security & Privacy)
56
- - 存取控制、資料保留、最小權限、稽核需求。
57
-
58
- ## 12. 開放議題(Open Questions)
59
- - 尚待釐清的需求、依賴或量化門檻。
60
-
61
- ## 13. 變更記錄(Spec Change Log)
62
  - YYYY-MM-DD: 條目、影響、相容性、連結(PR/Issue)。
63
 
64
  ---
65
 
66
- 附錄 A:參考設定(可選)
67
- - 以鍵值方式列出可調參數與預設值(置於設定檔,非硬編於程式)。
68
 
69
- 附錄 B:資料/結構圖(可選)
70
- - 圖表或連結。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
 
1
+ # 規格(Spec)模板 — 單人專案簡化版
2
 
3
+ > 用途:作為專案的契約與不變條件單一來源(Single Source of Truth)。
4
+ > 注意:本模板為單人小型專案優化版,著重於核心契約與邊界情境;評估必要時補充完整版章節。
5
 
6
  ## 1. 概述(Overview)
7
+ - **背景與目標**:專案要解決的問題、可量化/驗證的目標。
8
+ - **非目標**:此次不處理的事項(避免範圍擴張)。
9
+ - **主要輸入/輸出**:一句話定義資料流的起點與終點。
 
10
 
11
+ ## 2. 架構與入口(Compact
12
+ - **主要入口**:CLI/Web/腳本/服務端點(僅列責任,不綁定檔名)。
13
+ - **核心流程**:3–5 步的高層流程圖或敘述。
14
+ - **關鍵相依**:外部服務/檔案/第三方庫。
15
 
16
  ## 3. I/O 與資料契約(Data Contracts)
17
+ - **輸入形狀與欄位**:資料形狀、必填欄位、預設值、驗證規則。
18
+ - **輸出形狀與欄位**:預期格式、誤差/置信指標(如適用)。
19
+ - **版本與相容性**:如何識別破壞性變更、遷移策略(若有)。
20
+
21
+ ## 4. 不變條件與限制(Invariants & Limits)
22
+ - **核心規則**:業務邏輯中不可破壞的假設(如取樣率、窗口長度、測站數上限等)。
23
+ - **邊界情境與降級**:資料不足/缺漏/格式錯誤時的行為(退回/佔位/跳過/重試)。
24
+ - **資源上限**:記憶體/時間/API 配額(語義層級,具體值置於設定檔)。
25
+
26
+ ## 5. 外部依賴與設定(Dependencies)
27
+ - **外部服務/檔案/模型**:用途、介面、失敗時的降級方案。
28
+ - **設定來源**:環境變數/設定檔欄位與預設值。
29
+ - **快取與重試**:命中/失敗/TTL 策略。
30
+
31
+ ## 6. 失敗降級與可觀測性(Resilience & Observability)
32
+ - **降級矩陣**:各失敗點 替代行為(繼續/佔位/使用預設值)+ Log 等級。
33
+ - **Logging**:關鍵節點需有 INFO/WARNING/ERROR,記錄現象、原因、替代方案。
34
+ - **測試邊界情境**:Happy path + 1–2 個代表邊界案例(如資料缺漏、逾時、格式錯誤)。
35
+
36
+ ## 7. UI/交互行為(若適用)
37
+ - **主要流程**:使用者操作序列與預期結果。
38
+ - **警告/錯誤顯示**:何時顯示、文案風格(應面向終端使用者)。
39
+ - **無障礙/國際化**:如有特殊需求則列出。
40
+
41
+ ## 8. 擴充點(Extensibility)
42
+ - **新增資料來源/目標**:如何添加新資源而不修改核心邏輯。
43
+ - **新增輸入源/功能模組**:預留的設定/表格/介面位置。
44
+ - **版本遷移**:破壞性變更時的因應步驟。
45
+
46
+ ## 9. 最小測試(Testing Checklist
47
+ - Happy path:完整流程 1 次(包含所有必填欄位)。
48
+ - ✅ 邊界 1:資料不足/缺漏時能降級並顯示警告。
49
+ - ✅ 邊界 2:外部服務失敗時能使用預設值/佔位。
50
+ - ✅ 邊界 3:異常格式/超限時能記錄並繼續。
51
+
52
+ ## 10. 變更紀錄(Decision Log)
 
 
 
 
 
 
 
 
 
53
  - YYYY-MM-DD: 條目、影響、相容性、連結(PR/Issue)。
54
 
55
  ---
56
 
57
+ ## 附錄 A:常數與參考設定(可選)
 
58
 
59
+ | 項目 | 預設值 | 來源 |
60
+ |------|--------|------|
61
+ | 取樣率 | 100 Hz | 硬編 |
62
+ | 窗口長度 | 30 秒 | 模型輸入約束 |
63
+ | 最大測站數 | 25 | 批次上限 |
64
+ | 預設 Vs30 | 600 m/s | 降級用 |
65
+
66
+ ---
67
+
68
+ ## 附錄 B:資料欄位(可選)
69
+
70
+ ### 輸入欄位範例
71
+ - `station/site_info.csv`: `[Station, Latitude, Longitude, Elevation, ...]`
72
+ - `station/eew_target.csv`: `[station, latitude, longitude, elevation, ...]`
73
+
74
+ ---
75
+
76
+ ## 使用建議
77
+
78
+ ### 單人專案快速檢查清單
79
+ 1. **初期**:先填 1–4 節(明確 I/O 與邊界),不必逐章完整。
80
+ 2. **開發中**:發現新的邊界情境或外部依賴時,補充到第 4、5、6 節。
81
+ 3. **測試前**:確認第 6、9 節的降級與測試覆蓋。
82
+ 4. **新增功能**:先更新本文件(尤其 I/O 與邊界),再寫程式。
83
+
84
+ ### 何時升級為完整版
85
+ - 多人協作開始、需求快速變化、或涉及多層級服務時,補充第 7–8 節與完整圖表。
86
+ - 仍需參考原始 spec-template.md 作為參考。
87
 
.github/task-template.md CHANGED
@@ -1,70 +1,47 @@
1
- # Task: <在此填寫任務標題>
2
 
3
  - Task ID: T-<YYYYMMDD>-<shortname>
4
- - Owner: <name>
5
  - Date: <YYYY-MM-DD>
6
- - Status: Planning | In Progress | Review | Done
7
 
8
  ## 背景與目標
9
- - 背景:為何需要這個變更?與 `spec/spec.md` 的哪一段相關?
10
- - 目標:本次要達成的使用者價值與交付物(可量化)。
11
- - 不在範圍:明確說明此次不處理的部分,避免 scope creep。
12
 
13
- ## 相關文件與位置
14
- - 規格:`spec/spec.md`(若公共行為變更,務必同步更新)
15
- - 主要程式與入口/樣板流程:請參考 `spec/spec.md` 中對應章節(本模板不列舉檔名)
16
- - 其他:<連結到 PR、議題、筆記、外部參考>
17
-
18
- ## 不變條件與約束(對齊 spec 要點)
19
- - 請列出與本任務相關的關鍵不變條件與限制,並指向 `spec/spec.md` 的條目,例如:
20
- - I/O shape 與資料欄位約束
21
- - 處理批次與資源上限(長度/頻率/數量/逾時/重試)
22
- - UI 尺寸與交互限制
23
- - 外部依賴的預設值、快取與降級策略
24
-
25
- > 若本任務可能影響以上不變條件,請明列風險與必要的 `spec/spec.md` 更新計畫(含相容性與回滾方案)。
26
-
27
- ## 任務拆解(可勾選,可跨對話沿用)
28
  - [ ] 子任務 1:<描述>(變更檔案:`...`)
29
- - 驗收標準:<明確可驗證的條件>
30
- - 測試/冒煙:<如何驗證,輸入/輸出示例>
31
  - [ ] 子任務 2:<描述>(變更檔案:`...`)
32
- - 驗收標準:<...>
33
- - 測試/冒煙:<...>
34
  - [ ] 子任務 3:<描述>(變更檔案:`...`)
35
- - 驗收標準:<...>
36
- - 測試/冒煙:<...>
37
-
38
- > 建議每個子任務都能在 1 小時內完成並可獨立驗收;大型變更請再細分。
39
-
40
- ## 介面與資料形狀變更評估
41
- - UI 影響:是否需要新增/修改提示、警告或欄位?
42
- - I/O shape:輸入/輸出資料結構或欄位是否改變?
43
- - 向後相容:如何保持既有使用者不受影響?若無法,請先更新 `spec/spec.md` 並標註破壞性變更與遷移策略。
44
-
45
- ## 降級與記錄策略
46
- - 可能失敗點:<列出>(例如:外部依賴失敗、輸入不足、格式錯誤、資源不足/逾時等)
47
- - 降級方案:<對應每一種失敗點的替代行為,需符合 `spec/spec.md`>
48
- - Logging:<關鍵訊息,包含資訊/警告/錯誤的字串格式,便於追蹤>
49
-
50
- ## 測試與驗收
51
- - 單元/整合測試:<若有測試框架,列出測試案例>
52
- - 手動冒煙:
53
- - 啟動方式:請依 `spec/spec.md` 或 `README.md` 中的指引
54
- - 驗收步驟:<步驟 1, 2, 3>
55
- - 預期結果:<清楚描述>
56
- - 品質檢查(最低):
57
- - [ ] Build/型別/格式檢查通過
58
- - [ ] 關鍵邊界情境可正確降級並記錄 log(依 `spec/spec.md`)
59
- - [ ] 與 `spec/spec.md` 之契約一致
60
-
61
- ## 風險、回滾與後續
62
- - 風險:<列出主要風險與緩解方式>
63
- - 回滾:<若出問題如何快速回復>
64
- - 後續工作:<可選,列出延伸 task>
65
-
66
- ## 進度紀錄(跨對話追蹤)
67
- - <YYYY-MM-DD HH:MM>:<進度更新,關鍵決策/PR 連結/驗收結果>
68
 
69
  ---
70
 
 
1
+ # Task: <標題>
2
 
3
  - Task ID: T-<YYYYMMDD>-<shortname>
 
4
  - Date: <YYYY-MM-DD>
5
+ - Status: Planning | In Progress | Done
6
 
7
  ## 背景與目標
8
+ - **背景**:為何需要?與 `spec/spec.md` 的哪一段相關?
9
+ - **目標**:交付物與驗收標準(一句或要點形式)。
10
+ - **不在範圍**:明確避免 scope creep。
11
 
12
+ ## 任務拆解(可勾選)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  - [ ] 子任務 1:<描述>(變更檔案:`...`)
14
+ - 驗收:<可驗證的條件>
 
15
  - [ ] 子任務 2:<描述>(變更檔案:`...`)
16
+ - 驗收:<可驗證的條件>
 
17
  - [ ] 子任務 3:<描述>(變更檔案:`...`)
18
+ - 驗收:<可驗證的條件>
19
+
20
+ > 每個子任務盡量控制在 1 小時內可完成。
21
+
22
+ ## 不變條件與約束檢查
23
+ - [ ] 是否影響 `spec/spec.md` 中的 I/O shape、欄位、或不變條件?
24
+ - [ ] 如是,已更新 spec 並標註破壞性變更?
25
+ - [ ] 邊界情境(資料缺漏、外部依賴失敗等)是否正確降級並記錄 log?
26
+
27
+ > 填寫相關 spec 章節編號或行號(如 spec #3, #6)。
28
+
29
+ ## 手動驗收(冒煙測試)
30
+ - **步驟**:
31
+ 1. <步驟 1>
32
+ 2. <步驟 2>
33
+ 3. <步驟 3>
34
+ - **預期結果**:<清楚描述>
35
+ - **失敗情境測試**(若適用):<一個邊界案例的驗證步驟>
36
+
37
+ ## 完成檢查
38
+ - [ ] 程式碼符合 `spec/spec.md` 約束
39
+ - [ ] 手動驗收通過
40
+ - [ ] 關鍵邊界情況有 log(INFO/WARNING/ERROR)
41
+ - [ ] 若改動 CSV 或模型契約,spec 已同步
42
+
43
+ ## 進度紀錄
44
+ - <YYYY-MM-DD HH:MM>:<進度更新或決策>
 
 
 
 
 
 
45
 
46
  ---
47