feat/plan-document-section/main #81
@@ -9,7 +9,7 @@ description: 僅由 /sdlc-plan 指令叫用。把一段口語需求轉成結構
|
||||
|
||||
1. 讀齊輸入,列出九個段落中已有依據與缺漏。
|
||||
2. 一次問一題補齊缺漏;未獲回答的內容放入「未決事項」,不得自行編造。
|
||||
3. 套用 `templates/requirement-issue.md`,填入總覽、背景、目標、非目標、領域名詞表、流程圖、驗收標準、影響範圍與未決事項。
|
||||
3. 套用 `templates/requirement-issue.md`,填入總覽、背景、目標、非目標、領域名詞表、文件、驗收標準、影響範圍與未決事項;全程使用繁體中文。
|
||||
4. 用 `scripts/labels-list.js` 取得既有標籤,只能選既有標籤。
|
||||
5. 寫入前先執行:
|
||||
|
||||
@@ -19,9 +19,14 @@ node scripts/issue-create.js --repo <owner/name> --title "<標題>" --body-file
|
||||
|
||||
確認內容後移除 `--dry-run` 實跑。重跑以標題查重,不建立重複議題。
|
||||
|
||||
## 流程圖限制
|
||||
## 文件限制
|
||||
|
||||
流程圖只保留抽象節點與邊的文字描述;本流程不產生 HTML、SVG、manifest、截圖、附件或平台 preview。
|
||||
文件段落只填以下其中一種:
|
||||
|
||||
- `待 /sdlc-analyze 產生`。
|
||||
- 抽象節點與邊的文字描述,不寫具體圖形語法。
|
||||
|
||||
plan 階段禁止產生 HTML、SVG、manifest、截圖、附件或任何平台 preview。
|
||||
|
||||
## 邊界
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import {
|
||||
assertNeutralPrompt,
|
||||
assertTemplateSections,
|
||||
readPrompt,
|
||||
readTemplate,
|
||||
} from './helpers/prompt-doc.js';
|
||||
|
||||
const prompt = readPrompt('sdlc-plan');
|
||||
const template = readTemplate('requirement-issue');
|
||||
const SECTIONS = ['總覽', '背景', '目標', '非目標', '領域名詞表', '文件', '驗收標準', '影響範圍', '未決事項'];
|
||||
|
||||
test('plan prompt 使用文件段落並維持繁體中文', () => {
|
||||
assertNeutralPrompt(prompt, 'sdlc-plan');
|
||||
assert.match(prompt, /領域名詞表、文件、驗收標準/);
|
||||
assert.match(prompt, /全程使用繁體中文/);
|
||||
assert.doesNotMatch(prompt, /流程圖/);
|
||||
});
|
||||
|
||||
test('文件段落只允許 analyze 佔位或抽象節點與邊', () => {
|
||||
assert.match(prompt, /`待 \/sdlc-analyze 產生`/);
|
||||
assert.match(prompt, /抽象節點與邊的文字描述/);
|
||||
assert.match(prompt, /不寫具體圖形語法/);
|
||||
assert.match(prompt, /禁止產生 HTML、SVG、manifest、截圖、附件或任何平台 preview/);
|
||||
});
|
||||
|
||||
test('plan 重跑沿用同標題議題,不建立重複議題', () => {
|
||||
assert.match(prompt, /重跑以標題查重,不建立重複議題/);
|
||||
});
|
||||
|
||||
test('需求議題模板與 plan prompt 使用相同九段落', () => {
|
||||
assertTemplateSections(template, SECTIONS);
|
||||
assert.match(template, /\{\{文件\}\}/);
|
||||
assert.doesNotMatch(template, /^## 流程圖$/m);
|
||||
});
|
||||
Reference in New Issue
Block a user