feat/sdlc-plan-requirement-issue/main #21

Merged
admin merged 6 commits from feat/sdlc-plan-requirement-issue/main into master 2026-09-17 04:51:03 +00:00
6 Commits
Author SHA1 Message Date
jiantw83andClaude Opus 5 9b9ab33a53 test(issue-create): 覆蓋建立議題與試跑預覽的契約
沿用既有接縫:子行程執行、stub server 錄下每一筆請求。涵蓋標籤名稱解析、
未知標籤中止、不碰 labels 的寫入端點、同標題不重建、前後空白視為同一顆,
以及寫入型腳本一樣跑滿前置檢查。

試跑的部分特別驗「預覽要忠實」:預覽的 body 必須看得出標籤會被貼上、標籤
錯字在試跑就該擋下、同名議題已存在時預覽不得預告要建立議題,且全程不發出
任何寫入請求。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 04:44:47 +00:00
jiantw83andClaude Opus 5 9e57a5db99 test(sdlc-plan): 釘住正本與模板的結構
正本與模板是檔案而非程式,卻是本工作包實際交付的東西:模板段落順序決定下游
解析得到什麼,正本的平台中立性決定轉接檔能不能一份寫到底。以測試釘住段落
順序、佔位格式、description 前綴、平台專屬字樣的缺席、流程圖的上限,以及
模板不得寫死 mermaid 圍欄。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 04:44:47 +00:00
jiantw83andClaude Opus 5 3f4e1a683b feat(issue-create): 建立議題,標籤限既有、以標題查重
標籤以名稱指定,送出前換成 repo 上既有標籤的 id;指到不存在的標籤即中止並列出
可選項目。本工具不具備建立標籤的能力,錯字當場講清楚,不悄悄少貼一個。

以標題查重,同名議題已存在就回傳既有那一顆並把 created 設為 false,讓中斷後
重跑不產生重複議題。先驗標籤再查重:參數打錯要立刻講。

--dry-run 不寫入,但會讀。要讓預覽忠實反映將送出的請求,就得先把標籤名稱換成
id、也得先查過重——否則預覽看起來會建一顆議題,實跑卻是 no-op,或反過來實跑
才爆標籤錯字。同名議題已存在時,預覽的 requests 為空陣列並附上既有議題編號。

body 由 --body-file 讀入後原樣送出,避免長 markdown 擠在命令列上。

Closes #4

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 04:44:46 +00:00
jiantw83andClaude Opus 5 453cf47188 feat(sdlc-plan): 新增需求議題模板與流程正本
templates/requirement-issue.md 固定需求議題的九個段落與順序:總覽/背景/
目標/非目標/領域名詞表/流程圖/驗收標準/影響範圍/未決事項。段落順序即
下游 issue-extract 的解析依據,總覽段落預留總覽網頁的連結佔位。

流程圖段落只放佔位、不寫死 mermaid 圍欄:正本允許「乾脆不畫」,若圍欄寫死在
模板裡,不畫時就會在議題頁留下一塊渲染失敗的空 mermaid 區塊。圍欄改由填入的
內容自己帶。

prompts/sdlc-plan.md 是流程正本,平台中立 markdown,不含任何平台專屬語法,
description 以「僅由 /sdlc-plan 指令叫用。」起頭。正本交代:三種輸入來源、
一次問一題且不得替使用者編造、九個段落的填法、Mermaid flowchart 的 12 節點與
8 字上限、標籤只能從 labels-list 挑、寫入前先 --dry-run。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 04:44:46 +00:00
jiantw83andClaude Opus 5 b0bd061852 refactor(測試): 共用假 Gitea 的啟動與環境變數
每支測試各自寫一次「啟動 stub、登記 close、組環境變數」已經重複三次,抽到
helpers 之後新增測試檔只要一行。各檔仍保留自己的預設路由,因為那是該檔的
情境設定,不該共用。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 04:44:45 +00:00
jiantw83andClaude Opus 5 4f542d9c86 refactor(標籤): 把列標籤抽到 lib,讓要貼標籤的腳本共用
labels-list 與後續要挑標籤的腳本都要打同一個端點,抽成 lib.listLabels 之後
端點只寫在一個地方。順帶把「本專案不建立標籤,這是取得標籤的唯一途徑」寫進
函式註解,讓下一個要加功能的人先看到這條界線。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 04:44:45 +00:00