diff --git a/scripts/validate-changelog-frontmatter.mjs b/scripts/validate-changelog-frontmatter.mjs index 54bf11cc..5f2ebac8 100644 --- a/scripts/validate-changelog-frontmatter.mjs +++ b/scripts/validate-changelog-frontmatter.mjs @@ -411,7 +411,9 @@ export function validateV2Document(file, text, { requireV2 = false } = {}) { errors.push(ruleError('E_TYPE_MISMATCH', file, `change_type=${metadata.change_type} 与文件名=${filenameType} 不一致`)); } // 单花括号是 REST 路径参数惯例({orderId}),只拦真正的模板残留:双花括号、TODO、待补充 - if (/\{\{[^{}\n]+\}\}|\bTODO\b|待补充/i.test(body)) { + // 代码围栏与反引号内文本不参与占位符检测:接口枚举值本身可能就叫 TODO(团期芯片聚合态 TODO/DOING/DONE,#7204),契约必须能原样写枚举值。 + const proseBody = body.replace(/```[\s\S]*?```/g, '').replace(/`[^`\n]*`/g, ''); + if (/\{\{[^{}\n]+\}\}|\bTODO\b|待补充/i.test(proseBody)) { errors.push(ruleError('E_PLACEHOLDER', file, '正文仍有 TODO、待补充或模板占位符')); } // 接口类条目必须逐项遵循根模板,保证前端不依赖 Swagger 或口头补充也能联调。