jimmy60504 commited on
Commit
a9cfb34
·
1 Parent(s): 51bd8bf

docs: update copilot instructions and project prompts for spec compliance clarity

Browse files
.github/ISSUE_TEMPLATE/spec.yml CHANGED
@@ -8,7 +8,7 @@ body:
8
  label: 使用者故事(User Story)
9
  description: 作為 ___,我想要 ___,以便 ___。
10
  placeholder: >-
11
- 作為地震分析人員,我想選擇事件、時間窗與震央位置並查看預測震度與實際觀測的對照,以便快速比對模型表現。
12
  validations:
13
  required: true
14
 
@@ -24,29 +24,28 @@ body:
24
  label: 預期行為(Behavior)
25
  description: 描述介面/流程/輸出行為,盡量具體
26
  placeholder: >-
27
- - UI:在右側新增一個開關,控制是否顯示觀測震度圖的透明疊加。
28
- - 模型:不變。
29
 
30
  - type: textarea
31
  id: contract
32
  attributes:
33
  label: 契約(資料形狀/輸入輸出/限制)
34
- description: 例如 tensor shape、欄位、預設值、邊界值
35
  placeholder: >-
36
- - waveform: (1, 25, 3000, 3)
37
- - station/target: (1, 25, 4) -> [lat, lon, elev, vs30]
38
 
39
  - type: textarea
40
  id: edge-cases
41
  attributes:
42
  label: 邊界情境與降級策略(Edge cases & fallback)
43
- placeholder: 站數不足、分量缺失、Vs30 載入失敗、duration < 30 秒…
44
 
45
  - type: textarea
46
  id: ui
47
  attributes:
48
  label: UI 變更
49
- placeholder: 新增/調整元件、固定高度、文案、提示訊息…
50
 
51
  - type: checkboxes
52
  id: checklist
 
8
  label: 使用者故事(User Story)
9
  description: 作為 ___,我想要 ___,以便 ___。
10
  placeholder: >-
11
+ 作為使用者,我想選擇資料與參數並查看輸出結果的呈現與對照,以便快速比對系統表現。
12
  validations:
13
  required: true
14
 
 
24
  label: 預期行為(Behavior)
25
  description: 描述介面/流程/輸出行為,盡量具體
26
  placeholder: >-
27
+ - UI:新增或調整元件的可見性、狀態與提示文案。
28
+ - 核心:不變。
29
 
30
  - type: textarea
31
  id: contract
32
  attributes:
33
  label: 契約(資料形狀/輸入輸出/限制)
34
+ description: 例如資料結構、欄位、預設值、邊界值
35
  placeholder: >-
36
+ - 參見 docs/spec.md 中的 I/O shape、欄位約束與限制。
 
37
 
38
  - type: textarea
39
  id: edge-cases
40
  attributes:
41
  label: 邊界情境與降級策略(Edge cases & fallback)
42
+ placeholder: 例如:輸入不足、來源缺失、逾時、格式錯誤…(以 docs/spec.md 為準)
43
 
44
  - type: textarea
45
  id: ui
46
  attributes:
47
  label: UI 變更
48
+ placeholder: 新增/調整元件、固定尺寸、文案、提示訊息…(具體規格以 docs/spec.md 為準)
49
 
50
  - type: checkboxes
51
  id: checklist
.github/copilot-instructions.md CHANGED
@@ -3,22 +3,22 @@
3
  請在本倉庫撰寫或修改程式碼時,務必遵循 `docs/spec.md` 的契約與不變條件。以下是重點守則與常見情境處理方式:
4
 
5
  關鍵文件
6
- - 必讀:`docs/spec.md`(專案規格與設計)
7
- - 主要程式:`app.py`(Gradio GUI 與推論主流程)
8
- - 參考:`ttsam_realtime.py`(即時流程樣板,不是 GUI 主流程)
9
  - 任務追蹤:`docs/task.md`(跨對話追蹤的任務拆解與驗收)
10
  - 變更摘要:`change-log.md`(完成後的高層摘要,非逐 Task 對應)
11
 
12
  核心守則(務必遵守)
13
- - 取樣率固定 100 Hz;模型輸入固定 30 秒(3000 samples)。不足 30 秒時尾段 0 填充。
14
- - 輸入測站最多 25 站;少於 25 站允許,需在 UI 顯示警告,且仍可推論。
15
- - N/E 分量缺失時一律以 Z 分量代替,並統計缺分站數於輸出摘要。
16
- - 目標測站需分批推論,每批最多 25 站,最後合併全部結果。
17
- - Folium 地圖高度固定 800px;實際震度圖缺失時以空白占位並記錄警告。
18
- - Vs30 來自 SeisBlue/TaiwanVs30;查詢/下載失敗時改用使用者預設值(預設 600 m/s),且記錄 log。
19
- - `station/site_info.csv` `station/eew_target.csv` 欄位要求不可違反:
20
- - site_info.csv: Station, Latitude, Longitude, Elevation
21
- - eew_target.csv: station, latitude, longitude, elevation
22
 
23
  程式碼風格與作法
24
  - 加入或變更功能時,請以註解說明與 spec 的對齊;無需使用編號標籤。
@@ -27,17 +27,17 @@
27
  - 避免將模型結構分散於多處;若需重構,提供明確入口(工廠或封裝函式)。
28
 
29
  常見任務提示
30
- - 新增事件:
31
- - 將 .mseed 放入 `waveform/`,更新 `app.py` 的 `EARTHQUAKE_EVENTS`。
32
- - 若有實際震度圖,放入 `intensity_map/`,檔名 `YYYYMMDD.png`。
33
- - 新增目標測站:
34
- - 更新 `station/eew_target.csv`,勿修改模型與核心流程。
35
- - 新增輸入測站:
36
- - 更新 `station/site_info.csv`,去除重複站名列。
37
 
38
  提交前檢查(最低需求)
39
  - 是否符合 `docs/spec.md` 的輸入/輸出 shape 與不變條件?
40
- - 少於 25 站、缺分量、Vs30 下載失敗等情境是否有測試或至少手動冒煙?
41
  - Log 是否清楚易懂,足以追蹤降級與邊界情境?
42
 
43
  任務工作流:docs/task.md(跨對話沿用)
 
3
  請在本倉庫撰寫或修改程式碼時,務必遵循 `docs/spec.md` 的契約與不變條件。以下是重點守則與常見情境處理方式:
4
 
5
  關鍵文件
6
+ - 必讀:`docs/spec.md`(專案規格與設計;專案入口與主要程式請以此為準)
7
+ - 主要程式與入口:請參考 `docs/spec.md` 中「主要程式/入口」章節(本文件不列舉檔名)
8
+ - 範例/樣板流程:請參考 `docs/spec.md` 中的相關章節(本文件不列舉檔名)
9
  - 任務追蹤:`docs/task.md`(跨對話追蹤的任務拆解與驗收)
10
  - 變更摘要:`change-log.md`(完成後的高層摘要,非逐 Task 對應)
11
 
12
  核心守則(務必遵守)
13
+ - 合約優先:一切行為以 `docs/spec.md` 為準,不在本文件重複或硬編領域常數。若發現不一致,先以 spec 為準並提出修正建議。
14
+ - I/O 與資料契約:嚴格遵循 spec 定義的輸入/輸出形狀與資料欄位;任何變更需先更新 spec,並標註相容性與回滾策略。
15
+ - 失敗降級與可觀測性:對所有可能失敗點提供明確降級方案與可追溯的 log;避免單一站點/檔案/服務錯誤導致整體中斷。
16
+ - 邏輯集中與封裝:將跨處共用的關鍵規則與資源(例如資料載入、批次策略、對外服務查詢)集中封裝,避免分散於多處。
17
+ - UI 行為:UI 顯示警告與提示的判準來自 spec;UI 不做字串解析以偷渡參數,不將關鍵參數藏於顯示名稱中。
18
+ - 外部資源與預設:對外部依賴(檔案、API、模型、地圖資源)提供預設值、快取與退回路徑,並記錄使用情況與原因。
19
+ - 相容性優先:新增或變更功能時,優先保持向後相容;若必須變更公共行為或 I/O,先在 spec 說明,並準備遷移與回滾。
20
+ - 測試與驗收:對邊界情境(輸入不足、資料缺失、逾時、格式錯誤)至少提供冒煙測試或最小可驗證步驟,並在 PR 說明列出。
21
+ - 原則性限制(抽象):批次處理、長度/頻率/資源上限等僅在 spec 定義;本文件僅要求「遵循 spec 的限制」,不重複具體數值。
22
 
23
  程式碼風格與作法
24
  - 加入或變更功能時,請以註解說明與 spec 的對齊;無需使用編號標籤。
 
27
  - 避免將模型結構分散於多處;若需重構,提供明確入口(工廠或封裝函式)。
28
 
29
  常見任務提示
30
+ - 注意:本節僅提供流程範例;所有領域細節、檔名/欄位/限制一律以 `docs/spec.md` 為準。
31
+ - 新增資料來源:
32
+ - `docs/spec.md` 放置必要輸入,並更新程式的資料清單或索引。
33
+ - 新增目標對象:
34
+ - `docs/spec.md` 更新目標清單,不修改核心流程與模型行為。
35
+ - 新增輸入來源:
36
+ - `docs/spec.md` 更新來源清單,避免重複與格式不符。
37
 
38
  提交前檢查(最低需求)
39
  - 是否符合 `docs/spec.md` 的輸入/輸出 shape 與不變條件?
40
+ - 針對 spec 中定義的邊界情境(如輸入不足、資料缺失、逾時、格式錯誤等)是否提供冒煙測試或最小驗證步驟?
41
  - Log 是否清楚易懂,足以追蹤降級與邊界情境?
42
 
43
  任務工作流:docs/task.md(跨對話沿用)
.github/prompts/project.plan.prompt.md CHANGED
@@ -2,7 +2,7 @@
2
 
3
  目的
4
  - 輸出一個可審核的計畫草案,不做任何檔案修改或指令執行。
5
- - 對齊本倉庫 `docs/spec.md` 的不變條件與契約,特別注意:100 Hz、30s 窗口、<=25 站、Z 代 NE、Vs30 降級、地圖 800px、CSV 欄位約束。
6
 
7
  輸入(由提問者提供)
8
  - 需求描述或問題背景。
@@ -13,7 +13,7 @@
13
  - Checklist(最多 7 項):
14
  - 要做的子任務(小而可驗收),每項附驗收標準。
15
  - 依序標注:Plan→Propose→Apply→Test→Report 對應到哪些子任務。
16
- - Invariants 對齊:逐條列出是否受影響(Done/Not Impacted/At Risk)。
17
  - 風險與回滾:主要風險、緩解、回滾方式(最小可逆)。
18
  - 冒煙測試:2–4 個步驟,含預期輸出要點。
19
  - 等待核准訊息:請明示「回覆『核准』或指出需調整的項目」。
 
2
 
3
  目的
4
  - 輸出一個可審核的計畫草案,不做任何檔案修改或指令執行。
5
+ - 對齊本倉庫 `docs/spec.md` 的不變條件與契約;所有領域常數與限制一律以 spec 為準,不在此重述。
6
 
7
  輸入(由提問者提供)
8
  - 需求描述或問題背景。
 
13
  - Checklist(最多 7 項):
14
  - 要做的子任務(小而可驗收),每項附驗收標準。
15
  - 依序標注:Plan→Propose→Apply→Test→Report 對應到哪些子任務。
16
+ - Invariants 對齊:逐條列出是否受影響(Done/Not Impacted/At Risk),並指向 `docs/spec.md` 的相關條目。
17
  - 風險與回滾:主要風險、緩解、回滾方式(最小可逆)。
18
  - 冒煙測試:2–4 個步驟,含預期輸出要點。
19
  - 等待核准訊息:請明示「回覆『核准』或指出需調整的項目」。
.github/prompts/project.report.prompt.md CHANGED
@@ -6,6 +6,6 @@
6
  請輸出
7
  - 變更摘要(對照 `docs/task.md` 與 `change-log.md`)
8
  - 品質門檻:Build/Lint/Test 狀態(PASS/FAIL)
9
- - Requirements coverage:對照不變條件與需求,標記 Done/Deferred(含原因)
10
  - 冒煙測試成果重點
11
  - 建議的後續工作與風險
 
6
  請輸出
7
  - 變更摘要(對照 `docs/task.md` 與 `change-log.md`)
8
  - 品質門檻:Build/Lint/Test 狀態(PASS/FAIL)
9
+ - Requirements coverage:對照 `docs/spec.md` 的不變條件與需求,標記 Done/Deferred(含原因)
10
  - 冒煙測試成果重點
11
  - 建議的後續工作與風險
.github/pull_request_template.md CHANGED
@@ -4,14 +4,12 @@
4
  ## 規格對齊(spec compliance)
5
  - 相關規格:
6
  - [ ] 介面/流程契約符合 `docs/spec.md`
7
- - [ ] 核心不變條件(取樣率 100 Hz、30 秒窗口、<=25 站、缺分量處理、分批推論、地圖高度 800px、Vs30 降級)
8
- - [ ] 欄位要求(site_info.csv / eew_target.csv)
9
 
10
  ## 邊界/降級驗證
11
- - [ ] 少於 25 站可用時,UI 有明確警告且仍可推論
12
- - [ ] N/E 缺分以 Z 代替並統計
13
- - [ ] Vs30 載入失敗使用預設值並記錄 log
14
- - [ ] duration < 30 秒零填充
15
 
16
  ## 測試與驗證
17
  - 測試方式或冒煙步驟(貼出輸出截圖/關鍵 log):
 
4
  ## 規格對齊(spec compliance)
5
  - 相關規格:
6
  - [ ] 介面/流程契約符合 `docs/spec.md`
7
+ - [ ] 核心不變條件(依 `docs/spec.md` 條目)
8
+ - [ ] 欄位/資料格式要求(依 `docs/spec.md`)
9
 
10
  ## 邊界/降級驗證
11
+ - [ ] 針對 `docs/spec.md` 定義的邊界情境已驗證(輸入不足、來源缺失、逾時、格式錯誤等)
12
+ - [ ] 降級策略符合 `docs/spec.md`,並提供清楚 log
 
 
13
 
14
  ## 測試與驗證
15
  - 測試方式或冒煙步驟(貼出輸出截圖/關鍵 log):