Spaces:
Sleeping
Sleeping
Commit
·
8d4cef3
1
Parent(s):
81b83d1
docs: simplify spec and task templates for single-project use
Browse files- .github/spec-template.md +75 -59
- .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 |
-
-
|
| 8 |
-
-
|
| 9 |
-
- 詞彙(Terminology/Glossary):關鍵名詞定義。
|
| 10 |
|
| 11 |
-
## 2. 架構與入口(
|
| 12 |
-
-
|
| 13 |
-
-
|
| 14 |
-
-
|
| 15 |
|
| 16 |
## 3. I/O 與資料契約(Data Contracts)
|
| 17 |
-
-
|
| 18 |
-
-
|
| 19 |
-
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
-
|
| 24 |
-
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
-
|
| 29 |
-
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
-
|
| 34 |
-
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
-
|
| 39 |
-
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
-
|
| 44 |
-
-
|
| 45 |
-
|
| 46 |
-
## 9.
|
| 47 |
-
-
|
| 48 |
-
-
|
| 49 |
-
-
|
| 50 |
-
|
| 51 |
-
|
| 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 |
-
|
| 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 |
|
| 7 |
|
| 8 |
## 背景與目標
|
| 9 |
-
-
|
| 10 |
-
-
|
| 11 |
-
-
|
| 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 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
-
|
| 42 |
-
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
-
|
| 52 |
-
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 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 |
|