jimmy60504 commited on
Commit
fef6341
·
1 Parent(s): 3562630

docs: update change log and project initialization prompt for clarity and structure

Browse files
.github/prompts/project.init.prompt.md CHANGED
@@ -1,43 +1,44 @@
1
  # /project.init — 初始化規格(Project Init)
2
 
3
- 目的
4
  - 快速產生或盤點 `spec/spec.md`,作為契約與不變條件的單一來源。
5
- - 自動判斷是 greenfield 專案(無既有程式)還是 brownfield 專案(有既有程式),輸出相應的內容。
6
-
7
- 輸入(由提問者提供)
8
- - 專案摘要(目前用途、使用者、主要流程)
9
- - 已知的 I/O 與外部依賴(若未知可空白)
10
- - 任何現有文件或 README 的連結(若有)
11
- - 工作區根目錄的程式碼結構概述(若提供,LLM 將判定為 brownfield)
12
-
13
- 自動判定邏輯
14
- 1. **Greenfield(無既有程式碼)**:LLM 產生初版規格骨架
15
- 2. **Brownfield(有既有程式碼)**:LLM 盤點現有程式,提出規格建議
16
-
17
- 請輸出
18
-
19
- ### 若判定為 Greenfield
20
- - `.github/spec-template.md` 為藍本,產出初版章節骨架與示範內容
21
- - 填入已知資訊,未知處留 TODO
22
- - 顯示「後續補齊清單」,列出缺漏與建議的尋找路徑
23
-
24
- ### 若判定為 Brownfield
25
- - 根據既有程式和文件,提出 `spec/spec.md` 應包含的主要章節與內容建議,包含:
26
- - 系統架構與核心組件
27
- - I/O 契約(輸入/輸出 shape、格式、限制)
28
- - 依賴與外部資源
29
- - 失敗降級與可觀測性
30
- - 性能限制與資源上限
31
- - UI/UX 規範(若適用)
32
- - 缺漏清單:哪些重要規格缺失或不清楚
33
- - 建議的驗證步驟(在哪些檔案/程式入口可以找到相關證據)
34
- - 風險與優先序(高/中/低)
35
-
36
- 完成後
37
- - 提示使用者確認並根據建議建立或更新 `spec/spec.md`
38
- - 建議使用者在 spec 確認後,**手動執行** `/project.plan` 以進入迭代規劃階段
39
-
40
- 守則
41
- - 不做檔案修改或實際編寫 spec.md(僅提供建議)。
42
- - 盡量將領域數值與限制導向 `spec/spec.md`,避免散落在其它文件。
43
- - 僅輸出文字;如需代辦清單,標記 TODO。
 
 
1
  # /project.init — 初始化規格(Project Init)
2
 
3
+ ## 目的
4
  - 快速產生或盤點 `spec/spec.md`,作為契約與不變條件的單一來源。
5
+ - 判斷 greenfield(無程式)還是 brownfield(有程式),輸出精簡的規格建議。
6
+
7
+ ## 輸入
8
+ 使用者提供:
9
+ - 專案摘要(用途、主要流程、使用者)
10
+ - I/O 與外部依賴(已知則填,未知可空)
11
+ - 現有文件/README(若有)
12
+ - 程式碼結構(若提供 → brownfield)
13
+
14
+ ## 判定邏輯
15
+ - **Greenfield**:無程式碼,LLM 產生初版骨架
16
+ - **Brownfield**:有程式碼,LLM 盤點代碼、提出建議
17
+
18
+ ## 輸出
19
+
20
+ ### Greenfield 模式
21
+ 以 `.github/spec-template.md` 為範本,產出:
22
+ 1. 簡潔骨架:7 個章節(見 template)各列 1–2 行
23
+ 2. 填入已知資訊,未知處留 TODO
24
+ 3. 「後續補齊清單」:需要調查或決策的項目
25
+
26
+ ### Brownfield 模式
27
+ 掃描既有程式,產出簡潔建議:
28
+ 1. **系統概觀**:架構 & 核心組件(3–5 句)
29
+ 2. **I/O 契約**:輸入/輸出形狀、必填欄位、格式
30
+ 3. **不變條件 & 邊界**:核心規則、失敗時降級方式
31
+ 4. **外部依賴**:主要服務/檔案、失敗降級
32
+ 5. **缺漏清單**:規格缺失或不清楚的項
33
+ 6. **驗證位置**:程式入口、設定檔位置(供查證)
34
+
35
+ ## 完成後
36
+ - 提示使用者確認內容
37
+ - 建議根據建議手動建立或更新 `spec/spec.md`
38
+ - 提示下一步:在 spec 確認後執行 `/project.plan` 進入迭代規劃
39
+
40
+ ## 守則
41
+ - **不修改檔案**:僅提供建議文字(不實際寫 spec
42
+ - **簡潔優先**:決策層級,不列完整資料結構或假資料
43
+ - **領域知識集中**:數值、規則盡量導向 spec,避免散落
44
+ - **實務優先**:只記錄「必須知道的」
.github/spec-template.md CHANGED
@@ -1,89 +1,48 @@
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
- | 常數 1 | 值 A | 硬編/約束/降級 |
62
- | 常數 2 | 值 B | 硬編/約束/降級 |
63
- | 常數 N | 值 N | 硬編/約束/降級 |
64
-
65
- ---
66
-
67
- ## 附錄 B:資料欄位(可選)
68
-
69
- ### 輸入欄位範例
70
- - `[源 1 路徑]`: `[欄位 A, 欄位 B, 欄位 C, ...]`
71
- - `[源 2 路徑]`: `[欄位 D, 欄位 E, 欄位 F, ...]`
72
-
73
- ### 輸出欄位範例
74
- - `[輸出格式]`: `[欄位 1, 欄位 2, 欄位 3, ...]`
75
 
76
  ---
77
 
78
  ## 使用建議
79
 
80
- ### 單人專案快速檢查清單
81
- 1. **初期**:先填 14 節(明確 I/O 與邊界),不必逐章完整。
82
- 2. **開發中**:發現新的邊界情境或外部依賴時,補充到第 4、5、6 節。
83
- 3. **測試前**:確認第 6、9 節的降級與測試覆蓋。
84
- 4. **新增功能**:先更新本文件(尤其 I/O 與邊界),再寫程式。
85
-
86
- ### 何時升級為完整版
87
- - 多人協作開始、需求快速變化、或涉及多層級服務時,補充第 7–8 節與完整圖表。
88
- - 仍需參考原始 spec-template.md 作為參考。
89
 
 
1
  # 規格(Spec)模板 — 單人專案簡化版
2
 
3
+ > **用途**:作為專案的契約與不變條件單一來源(Single Source of Truth)。
4
+ > **原則**:簡潔、可執行、易維護。只記錄「必須知道的」,不列完整執行結果或逐行詳解。
5
 
6
  ## 1. 概述(Overview)
7
+ **三句話說清楚**:
8
+ - 問題 & 目標:一句話
9
+ - 非目標:避免什麼
10
+ - 主要輸入/輸出:資料流向
11
+
12
+ ## 2. 核心流程
13
+ - 主要入口:CLI/Web/腳本/API
14
+ - 3–5 步簡述
15
+ - 關鍵外部依賴:服務/檔案/第三方庫名稱
16
+
17
+ ## 3. I/O 契約
18
+ - **輸入**:資料形狀、必填欄位、預設值
19
+ - **輸出**:預期格式、主要欄位
20
+ - **相容性**:破壞性變更如何識別
21
+
22
+ ## 4. 不變條件 & 邊界
23
+ - **核心規則**:不可破壞的假設(採樣率、處理單位上限、並行限制等)
24
+ - **邊界行為**:缺漏/格式錯誤 → 降級策略(跳過/預設值/日誌警告)
25
+ - **資源限制**:記憶體/時間/配額(語義級,具體值在設定檔)
26
+
27
+ ## 5. 外部依賴 & 降級
28
+ - **主要依賴**:用途、介面、失敗時的替代行為
29
+ - **日誌原則**:各失敗點應記 WARNING/ERROR(描述現象+替代方案)
30
+ - **重試/快取**:簡述策略(無則不列)
31
+
32
+ ## 6. 擴充與相容(可選)
33
+ - 新增資料源/模組的預留方式
34
+ - 版本遷移計畫(若有破壞性變更)
35
+
36
+ ## 7. 驗收清單
37
+ - ✅ Happy path:完整流程
38
+ - ✅ 邊界情境:最常見的 1–2 個失敗案例
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
  ---
41
 
42
  ## 使用建議
43
 
44
+ 1. **初期**:填 1–4 節,建立基本契約
45
+ 2. **開發中**:發現新邊界時更新第 45
46
+ 3. **功能擴展**:先更新本文,再寫程式
47
+ 4. **記住**:不需列完整的執行結果、逐行說明或假資料,只記「決策」與「規則」
 
 
 
 
 
48
 
change-log.md CHANGED
@@ -1,58 +1,35 @@
1
- # Change Log
2
-
3
- 用途
4
- - 用於在任務完成後,將改動簡化整理為高層摘要,方便回顧與版本對齊。
5
- - 無需與 `docs/task.md` 一對一對應;可依里程碑/批次/日期合併紀錄。
6
-
7
- 使用方式
8
- - 每次完成一批有意義的變更(合併 PR、完成里程碑、或結束一輪對話)時,新增一個條目。
9
- - 條目內容建議包含下列要點;若無則可省略,但公共行為與 I/O shape 變更必寫:
10
- - Highlights(做了什麼、為何做)
11
- - Spec/契約影響(是否更新 `docs/spec.md`、不變條件有無變動)
12
- - 行為或 I/O 變更(UI、張量 shape、欄位變化與相容性)
13
- - 資料/站台檔影響(`station/*.csv` 欄位或資料需求變更)
14
- - 降級與 Logging(新增/調整的降級策略、關鍵 log 片語)
15
- - 測試與驗收(新增/更新的測試、手動冒煙結果要點)
16
- - 風險與回滾(若適用)
17
- - 連結(PR、Commits、相關 Task IDs 可選)
18
 
19
  ---
20
 
21
- ## 2025-10-25文件與工作流強化:task.md change-log.md
22
- - Highlights
23
- - 新增 `docs/task.md` 工作流與 `docs/task-template.md`,支援跨對話任務拆解與驗收。
24
- - 新增 `change-log.md`,集中紀錄高層摘要,完成批次後可重置 `docs/task.md`。
25
- - 擴充 `.github/copilot-instructions.md` 與 `README.md`,說明任務→摘要→重置之流程。
26
- - Spec/契約影響
27
- - 無功能性調整;僅文件與流程。沿用既有不變條件(100 Hz/30s、<=25 站、Z 代 NE、Vs30 降級、地圖 800px)。
28
- - 行為或 I/O 變更
29
- - 無;僅文件與維運工作流。
30
- - 資料/站台檔影響
31
- - 無。
32
- - 降級與 Logging
33
- - 無變更;維持現行策略。
34
- - 測試與驗收
35
- - 手動檢查:新增/編輯的文檔檔案可正確顯示;連結指向正確位置。
36
- - 風險與回滾
37
- - 低;如需回滾,移除新增文檔即可。
38
- - 連結
39
- - Task: T-20251025-docs-workflow(規劃)
40
-
41
- ## 2025-10-25 UI 對齊不變條件:時間長度滑桿改為 0–30
42
- - Highlights
43
- - 將 `app.py` 之「時間長度 (秒)」滑桿範圍由 1–60 調整為 0–30(預設 30)。
44
- - 新增說明文字:模型最多 30 秒;不足 30 秒以 0 填充至 30 秒(100 Hz,共 3000 點)。
45
- - Spec/契約影響
46
- - 與 `docs/spec.md` 不變條件一致;無公共行為或 I/O 破壞性變更。
47
- - 行為或 I/O 變更
48
- - UI 限制使用者輸入於 0–30 秒;後端行為不變(既有 30 秒窗口與補齊)。
49
- - 資料/站台檔影響
50
- - 無。
51
- - 降級與 Logging
52
- - 維持原有:duration < 30 秒時記錄 INFO 並 0 填充;其他降級策略不變。
53
- - 測試與驗收
54
- - 手動冒煙:duration=0/5/30 均可載入與預測;看到不足 30 秒之補齊 log 與正常輸出。
55
- - 風險與回滾
56
- - 低;若需回復,可將滑桿改回 1–60(單行改動)。
57
- - 連結
58
- - Task: T-20251025-duration-slider-0-30
 
1
+ # 變更記錄 (Change Log)
2
+
3
+ **專案**:TTSAM(Taiwan Transformer-based Shake Alert Model)
4
+ **格式**:高層變更摘要,按日期倒序排列
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
6
  ---
7
 
8
+ ## 2025-10-26Brownfield Spec Init
9
+
10
+ ### 新增
11
+ - **`spec/spec.md`**(v1.0):完整規格書
12
+ - 系統架構、I/O 契約、不變條件、限制
13
+ - 錯誤處理與日誌原則(spec #1–#7)
14
+ - 資源依賴、擴充指南、版本管理
15
+ - 審核檢查清單
16
+ - **`spec/plan.md`**:迭代計畫模板(待填)
17
+ - **`spec/task-template.md`**:任務拆解模板(待填)
18
+
19
+ ### 說明
20
+ - 基於現有 `app.py` 與 README.md 進行 Brownfield 盤點
21
+ - 正式化 I/O 契約、不變條件、降級策略
22
+ - 確立長期設計參考點(`spec/spec.md`)與短期迭代計畫(`spec/plan.md`、`spec/task.md`)
23
+
24
+ ### 後續工作清單
25
+ - [ ] 驗證 spec 對應現有程式碼(app.py、ttsam_realtime.py)
26
+ - [ ] 若發現差異或缺漏,更新 spec 或程式碼
27
+ - [ ] 根據開發需求,在 `spec/plan.md` 定義下一迭代目標
28
+ - [ ] 進行程式碼審核,確保滿足 spec 第 10 節檢查清單
29
+
30
+ ---
31
+
32
+ **End of Change Log**
33
+
34
+ *此檔案記錄每個迭代/變更的高層摘要。詳細內容應參考 `spec/spec.md` 與 git commit 訊息。*
35
+