chore(copy): check:copy 加用词规则,拦客服腔、营销腔与「请…」「进行 + 动词」

其它路负责的 web 文件里现有命中先加 copy-allow,文案由对应路改。

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
rootandClaude Opus 5.5 committed 2026-10-07 01:52:23 +08:00
1 parent 542f107566
commit 50aa02cfc5
6 files changed
+46 -4

No files matched your search

+35 -3
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env -S deno run -A
// 文案标点检查(规范见 docs/design/glossary.md「标点」)。只看源码里的字符串字面量、模板字符串与 JSX 文本,
// 文案标点与用词检查(规范见 docs/design/glossary.md「标点」与 .claude/skills/human-copy)。只看源码里的字符串字面量、模板字符串与 JSX 文本,
// 不看注释、类型字面量、对象键、比较/匹配用的字符串(includes / split / === 等)和像正则的字符串。
//
// deno run -A scripts/check-copy-punctuation.mjs # 报告,warn 模式(退出码 0)
@@ -45,9 +45,41 @@ function findIssues(text) {
push("括号内有中文应用全角括号", new RegExp(`\\([^()]*[${CJK}][^()]*\\)`, "g"));
push("引号应为「」", /[“”]/g);
if (termScope) push("处理状态写「整理」不写「入库」(见 glossary)", TERM_RUKU);
for (const m of text.matchAll(BANNED_WORDS)) out.push({ rule: `用词「${m[0]}」(见 human-copy)`, index: m.index });
return out;
}
// 用词:human-copy 规范里的客服腔、营销腔、AI 套话与「进行 + 动词」。只收误报低的写法:
// 「请」只拦祈使搭配(请先 / 请检查…),不碰「请求」「申请」;「一键」排除「同一键」;「进行」只拦后接动作名词。
const BANNED_WORDS = new RegExp(
[
"您",
"温馨提示",
"非常抱歉",
"敬请谅解",
"不便之处",
"(?<!同)一键",
"轻松",
"赋能",
"智能化",
"一站式",
"全新体验",
"无限可能",
"释放潜能",
"尽在掌握",
"成功地",
"恭喜",
"太棒了",
"哎呀",
"别担心",
"无需担心",
"好消息是",
"请(?:先|检查|输入|重新|重试|选择|确认|稍后|填写|勿|务必|联系|注意|在|到|用)",
"进行(?:操作|处理|整理|下载|搜索|识别|删除|修改|设置|配置|校验|验证|检查|更新|同步|刷新|创建|安装|连接|测试|登录|保存|上传|备份|恢复|重试|清理)",
].join("|"),
"g",
);
// 术语:我们只负责整理(元数据、NFO、图片、归到目录),媒体服务器有没有扫到不归本工具判断,
// 所以表示处理状态的「已入库 / 未入库 / 入库方式 / 入库后…」一律写「整理」。只抓处理状态语境的搭配,
// 单独的「入库」(如搜索关键词)不算。
@@ -336,7 +368,7 @@ if (!byFile && total > 200) console.log(`…另有 ${total - 200} 处未列出`)
if (fix) console.log(`已修改 ${changedFiles} 个文件、${editCount} 处字面量`);
console.log(
total
? `${strict ? "✗" : "⚠"} 文案标点:${total} 处(${[...byRule].map(([k, v]) => `${k} ${v}`).join(";")})`
: "✓ 文案标点:0 处",
? `${strict ? "✗" : "⚠"} 文案标点与用词:${total} 处(${[...byRule].map(([k, v]) => `${k} ${v}`).join(";")})`
: "✓ 文案标点与用词:0 处",
);
if (strict && total) process.exit(1);