fix(ticket-management): 首行三级域路径同改半角 - —— 域=L1-L2-L3(断言 3 同步 split(-);SKILL.md §3.1/§7 同步)
This commit is contained in:
@@ -31,10 +31,10 @@ description: 用 Gitea 工单库做「人读 + 机读」双面管理 —— 标
|
|||||||
|
|
||||||
### 3.1 首行 = 机读行(也是人读的第一行)
|
### 3.1 首行 = 机读行(也是人读的第一行)
|
||||||
|
|
||||||
域=L1/L2/L3 | 闸门=… | 优先级=… | 类型=… | 模式=… | 端=… | 环境=… | 证据=…
|
域=L1-L2-L3 | 闸门=… | 优先级=… | 类型=… | 模式=… | 端=… | 环境=… | 证据=…
|
||||||
|
|
||||||
- **字段顺序固定**;分隔符 = 空格 + 竖线 + 空格。
|
- **字段顺序固定**;分隔符 = 空格 + 竖线 + 空格。
|
||||||
- **`域` 的 L1 必须等于标题主前缀**(机器可校验);`域` 三段逐级更细:**L1 受控**(= 标题词表)· **L2 受控小词表** · **L3 自由**(表 / 文件 / 函数 / 接口)。
|
- **`域` 的 L1 必须等于标题主前缀**(机器可校验);`域` 三段逐级更细、**用半角连字符 `-` 分隔**(`域=L1-L2-L3`,如 `域=报表-统计-模式分列`):**L1 受控**(= 标题词表)· **L2 受控小词表** · **L3 自由**(表 / 文件 / 函数 / 接口)。
|
||||||
- 枚举建议:`闸门`=可开工|等口径|等取证|等部署 · `优先级`=立即|本迭代|排队 · `类型`=安全|数据|性能|可用|债务 · `端`=后端|前端|小程序|运维 · `环境`=正式服|测服 · `证据`=E1|E2|需生产取证。
|
- 枚举建议:`闸门`=可开工|等口径|等取证|等部署 · `优先级`=立即|本迭代|排队 · `类型`=安全|数据|性能|可用|债务 · `端`=后端|前端|小程序|运维 · `环境`=正式服|测服 · `证据`=E1|E2|需生产取证。
|
||||||
- 若标题出现第二段,**必须与 `闸门=` 一致**。
|
- 若标题出现第二段,**必须与 `闸门=` 一致**。
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ node bin/ticket.mjs rename 142 --repo xbc/xbc --domain=平台 [--gate=等口径]
|
|||||||
|
|
||||||
1. 标题以 `【…】` 开头,且内文 ∈ 问题域词表;
|
1. 标题以 `【…】` 开头,且内文 ∈ 问题域词表;
|
||||||
2. 正文第一行存在且含 `域=`;
|
2. 正文第一行存在且含 `域=`;
|
||||||
3. **标题主域 = 首行 `域=` 的 L1**;
|
3. **标题主域 = 首行 `域=` 的 L1**(`域` 内以 `-` 分层);
|
||||||
4. 标题 `-` 后的闸门 ∈ 词表 **且** 等于首行 `闸门=`;**可开工时标题不得带 `-闸门`**(多写即 FAIL);
|
4. 标题 `-` 后的闸门 ∈ 词表 **且** 等于首行 `闸门=`;**可开工时标题不得带 `-闸门`**(多写即 FAIL);
|
||||||
5. 人读部分(第一个 `<!--` 之前)**不含**工作区路径与内部分析编号 —— 判据用**具体前缀**(`codes/` · `分析/数据/` · `分析/D-`…`分析/F-` · `分析/_tmp` · `分析/_archive` · `86 §` · `80 · V` · 盘符路径);⚠ **不要用裸 `分析/`**(会误伤中文词组,如「进货分析/商品维度」);
|
5. 人读部分(第一个 `<!--` 之前)**不含**工作区路径与内部分析编号 —— 判据用**具体前缀**(`codes/` · `分析/数据/` · `分析/D-`…`分析/F-` · `分析/_tmp` · `分析/_archive` · `86 §` · `80 · V` · 盘符路径);⚠ **不要用裸 `分析/`**(会误伤中文词组,如「进货分析/商品维度」);
|
||||||
6. 正文若含 `<!--` ⇒ 该注释块必须含 `ref-owner:`。
|
6. 正文若含 `<!--` ⇒ 该注释块必须含 `ref-owner:`。
|
||||||
@@ -56,7 +56,7 @@ function checksOf(title, body) {
|
|||||||
return [
|
return [
|
||||||
["1 标题主前缀 ∈ 词表", sp.parts.length > 0 && DOMAINS.indexOf(sp.parts[0]) >= 0],
|
["1 标题主前缀 ∈ 词表", sp.parts.length > 0 && DOMAINS.indexOf(sp.parts[0]) >= 0],
|
||||||
["2 首行含 域=", L.indexOf("域=") >= 0],
|
["2 首行含 域=", L.indexOf("域=") >= 0],
|
||||||
["3 标题主域 = 首行 域 的 L1", sp.parts.length > 0 && dom.split("/")[0] === sp.parts[0]],
|
["3 标题主域 = 首行 域 的 L1", sp.parts.length > 0 && dom.split("-")[0] === sp.parts[0]],
|
||||||
["4 标题闸门 = 首行 闸门=", sp.parts.length < 2 ? (gate === "可开工") : (GATES.indexOf(sp.parts[1]) >= 0 && sp.parts[1] === gate)],
|
["4 标题闸门 = 首行 闸门=", sp.parts.length < 2 ? (gate === "可开工") : (GATES.indexOf(sp.parts[1]) >= 0 && sp.parts[1] === gate)],
|
||||||
["5 人读部分无本地 / 外部引用", !BAD.some(function (b) { return hp.indexOf(b) >= 0; })],
|
["5 人读部分无本地 / 外部引用", !BAD.some(function (b) { return hp.indexOf(b) >= 0; })],
|
||||||
["6 有引用块 ⇒ 有 ref-owner", body.indexOf("<!--") < 0 ? true : body.indexOf("ref-owner:") >= 0]
|
["6 有引用块 ⇒ 有 ref-owner", body.indexOf("<!--") < 0 ? true : body.indexOf("ref-owner:") >= 0]
|
||||||
|
|||||||
Reference in New Issue
Block a user