diff --git a/docs/governance/sdd-gitea-governance.md b/docs/governance/sdd-gitea-governance.md index a3a6722..198596e 100644 --- a/docs/governance/sdd-gitea-governance.md +++ b/docs/governance/sdd-gitea-governance.md @@ -826,8 +826,10 @@ PATCH /repos/inkstone/ISEP/issues/56 {"state":"closed"} ← 子票還開著 ### 16.7 工具與機械閘 ``` -scripts/ticket subtask <母票> --title -F <檔> [--label] [--assign] +scripts/ticket subtask <母票> --title -F <檔> [--label] [--assign X --next "<一句>"] 討論串裡的一件事 → 子票 + 回鏈 Parent: + Gitea 原生相依(三格一次到位) + 🔴 `--assign` 一定要配 `--next`:有人被指到票上,他撈到它的第一件事就是問 + 「所以我要做什麼」——那句話開票當下就要寫,不是等他重讀整串 scripts/ticket handback <票> --to --next "<一句話>" [--label] [--evidence] 收工 = 指派 + 改 tag + 寫下一步,一個動作三件事 scripts/ticket mine [--user <誰>] diff --git a/scripts/ticket b/scripts/ticket index bd40252..bc67b41 100755 --- a/scripts/ticket +++ b/scripts/ticket @@ -409,7 +409,8 @@ def cmd_subtask(argv): """ if len(argv) < 1: die("用法:ticket subtask <母票 owner/repo#N> --title \"\" -F <內文檔>\n" - " [--repo <收件 repo,預設跟母票同一個>] [--assign <誰做>] [--label ]") + " [--repo <收件 repo,預設跟母票同一個>] [--label ]\n" + " [--assign <誰做> --next \"<他第一件事要做什麼>\"] ← 指派了就一定要寫下一步") powner, prepo, pnum = parse_ref(argv[0]) def opt(name, default=None): @@ -432,6 +433,12 @@ def cmd_subtask(argv): repo = opt("--repo", prepo) label = opt("--label", "s/todo") assign = opt("--assign") + nxt = opt("--next") + if assign and not nxt: + die("🚫 指派了人卻沒寫 --next。\n" + " **有人被指到這張票,他撈到它的第一件事就是問「所以我要做什麼」**——\n" + " 那句話現在就要寫下來,不是等他重讀整串。\n" + " (沒有要指派給誰就不要加 --assign,那張票會留在票池等人領。)") body = (f"Parent: {powner}/{prepo}#{pnum}\n" f"> 這張票是從母票的討論串裡長出來的一件事。\n" @@ -445,7 +452,11 @@ def cmd_subtask(argv): print(f" tag:{label}(它卡在哪一段)") if assign: api(f"/repos/{ORG}/{repo}/issues/{cnum}", {"assignees": [assign]}, method="PATCH") + api(f"/repos/{ORG}/{repo}/issues/{cnum}/comments", + {"body": f"{BATON_MARK} → `{assign}`\n\n**下一步**:{nxt}\n\n" + f"(這張票是 `{powner}/{prepo}#{pnum}` 的相依——它沒關,母票關不掉)"}) print(f" 指派:{assign}(誰該動)") + print(f" 下一步:{nxt}") # 🔴 相依掛不上去 = 這張子票對母票是隱形的 ⇒ 整個動作算失敗,要讓人看到 api(f"/repos/{powner}/{prepo}/issues/{pnum}/dependencies",