Skip to content

docs(sales): 让 zh 页的线索状态名、到期日期、直属上级与区块名跟随语言包 (#801) - #825

Merged
yinlianghui merged 1 commit into
mainfrom
claude/issue-801-zh-drift-sweep
Aug 5, 2026
Merged

yinlianghui merged 1 commit into
mainfrom
claude/issue-801-zh-drift-sweep

Conversation

@yinlianghui

Copy link
Copy Markdown
Collaborator

Fixes #801

src/translations/zh-CN.ts 是中文读者在界面上看到的那些字,文档必须跟它,而不是反过来(contract-first,未动 src/**)。本单把正文与 thread 两条追评列出的全部缺口按最新 main 逐条重核后一次扫完。

甲、sales/index.zh-Hant.mdx:44 —— 与 #803 同一个错,在另一页

已到期 → 已過期(crm_quote.status.options.expired = 「已过期」)。行内的 報價到期 是这条 bullet 的机制名(动词面),按 #793 / #794 的判据保留,只改句末的状态名。zh-Hans 的同一行本来就是对的。

乙、quotes.zh-Hans.mdx 的 expiration_date ×4

过期日期 → 到期日期(zh-CN.ts 的 expiration_date.label),四处全在案::31 区块表、:65 内置规则、:70 每日扫描、:127 销售提示。同页 :112 / :114 / :119 本来就写 到期日期 —— 改完这一页不再自相矛盾。

保留::3 的「自动过期」、:70 的「每日过期扫描」是机制名;:65 句尾的「不能创建即过期的报价」是动词。同一行里字段名要改、动词不改,正是本类的判据。

丙、leads.zh-Hans/zh-Hant.mdx —— 状态名 + convert 动词面 + 区块名

crm_lead.status:已审核 → 已确认、不合格 → 未通过、已转换 → 已转化。按 #794 对 presented 的先例全页扫:状态表三行,加上重新开启说明、zh-Hant 的重复处理步骤、转化小节标题与第 4 步、销售提示。(zh-Hans :106 在基线上已经是「未通过」,未动;zh-Hant 同一句还是「不合格」,已改 —— 两页此处原本不一致。)

convert 动词面按包对齐为 转化:convert_lead = 「转化线索」、is_converted = 「已转化」,而 #804 重写的转化区块本来就写「转化客户 / 转化联系人 / 转化商机 / 转化日期」,所以页面自己内部原先就是 转换/转化 混用。

区块名按 crm_lead._sections:身份 → 身份信息、联系信息 → 联系方式、资格审核 → 资格评估、转换 → 转化,zh-Hant 另有 指派 → 分配。

保留(动词,不是区块名):frontmatter 的「资格审核」、状态表里「应用 BANT 资格审核」、「当一条线索通过资格审核后」、「取消资格」。

丁、contacts.zh-Hans/zh-Hant.mdx

reports_to 散文两处 汇报对象 → 直属上级(:37 建模说明、:96 销售提示)—— #804 已把区块表那一格改对,散文残留让同一页自相矛盾。:46 的「谁向谁汇报」是动词,保留。

区块名按 crm_contact._sections:身份 → 身份信息、客户与角色 → 客户与职务、联系信息 → 联系方式。

超出追评枚举的部分(请复核这一段)

追评自陈「本单标题说的『还剩两处』偏乐观」,其区块名清单也是人眼列的。按「区块名对齐 _sections」这条判据逐格重核后,leads 两页多出三格未被枚举、但同表同类的漂移:身份 → 身份信息、联系信息 → 联系方式(两页),以及 zh-Hant 的 指派 → 分配。这三格与被枚举的两格在同一张表、同一份契约上;只改其中两格会留下本单正文批评的那种半对半错。未越出文件面,未新增缺陷类。

各按各的包,不跨对象统一

crm_lead._sections.qualification 是「资格评估」,而 crm_opportunity.stage.qualification 是「资格审查」—— 包里就是两个词,本单只动 lead 侧(#793 追评已定调)。

验证

全量四件套 + hygiene 全绿(validate / typecheck / build / test = 64 files, 1560 passed)。另写了一份一次性脚本(未提交)直接 import zhCN 与页面对照:改后 27 项全过;把同一份断言指向 origin/main 的六个页面,22 项失败 —— 方向与预期一致,说明断言不是空过。

唯一例外要如实说明:「quotes 页出现 到期日期」这一项在基线上也过,因为那一页原本就在 :112/:114/:119 用了正确写法、同时在另外四处用错 —— 存在性断言看不出自相矛盾,真正抓住它的是「全页无 过期日期」那条缺席断言(基线上失败)。

未加守卫:这一类的闸挂在 #802,且该单记的两个前置设计问题(zh-Hant 没有语言包、动词/机制名如何豁免)尚未有结论。test/docs-object-coverage.test.ts 的注释也写明按语言逐词建表被刻意排除,因此本类目前无测试面 —— 不是本 PR 遗漏了测试。


Generated by Claude Code

…d field-group headings with the locale pack (#801)

The Chinese sales pages are supposed to spell every label the way
`src/translations/zh-CN.ts` ships it — that pack is what the reader sees on
screen. Four pages had drifted:

- `crm_lead.status` ships 已确认 / 未通过 / 已转化; the leads pages said
  已审核 / 不合格 / 已转换, in the status table and in every sentence
  downstream of it. The convert verb face follows `convert_lead` (转化线索)
  and `is_converted` (已转化), so 转换 becomes 转化.
- `expiration_date` is 到期日期; quotes.zh-Hans called it 过期日期 in four
  places while already using 到期日期 in three others.
- The `expired` status is 已过期; sales/index.zh-Hant said 已到期 — the same
  word corrected on the quotes page in #803, on a page that fix did not reach.
- `reports_to` is 直属上级; the contacts prose still said 汇报对象 after #804
  corrected the table cell.
- Field-group headings on the leads / contacts block tables now use each
  object's `_sections` labels instead of independently translated ones.

Verb and mechanism usages are preserved (报价到期, 每日过期扫描, 即过期的报价,
通过资格审核), and terms belonging to another object keep that object's
wording. Docs follow the pack, so nothing under `src/` changed.

Fixes #801

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa
@vercel

vercel Bot commented Aug 5, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
hotcrm Ignored Ignored Aug 5, 2026 10:14pm

Request Review

@yinlianghui
yinlianghui marked this pull request as ready for review August 5, 2026 22:17
@yinlianghui
yinlianghui added this pull request to the merge queue Aug 5, 2026
Merged via the queue into main with commit d41db36 Aug 5, 2026
9 checks passed
This was referenced Aug 5, 2026
yinlianghui added a commit to yinlianghui/hotcrm that referenced this pull request Aug 10, 2026
…-ai#840) (objectstack-ai#848)

Customer Since 幽灵字段的最后 6 处,全在 ai-copilot 两页,换了一种更难
被搜到的拼法:en 页写 `customer-since`(带连字符)、zh 页意译成「成为
客户的日期」,所以前三轮按 `Customer Since` 的关键字搜索都没扫到。

以两个 skill 源码为唯一事实来源改写这两条 bullet:

- customer_360 `get_record` 账户,故「关系快照」写实为客户分层 + 客户
  负责人(都是 account.object.ts 上的真实字段);
- case_triage 的评判权重首项是「customer tier and contract value」,
  从未提到跟了多久,故「客户画像」写实为客户分层 + 合同金额。

两处都按 objectstack-ai#823 / objectstack-ai#824 已定口径明说账户上没有这个日期,并给读者留下真实
去处(合同的签署日期 / 开始日期),没有默默删掉这个名字。

zh 两页的 tier 字段名按语言包拼写(objectstack-ai#825 先例):客户分层 / 客戶分層。

仅文档:src/** 与 content/docs/releases/ 未动。


Claude-Session: https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa

Co-authored-by: Claude <noreply@anthropic.com>
yinlianghui added a commit to yinlianghui/hotcrm that referenced this pull request Aug 10, 2026
…ectstack-ai#844) (objectstack-ai#906)

The locale pack is the contract — `convert_lead.label` is 转化线索 and
`is_converted` is 已转化 — so the docs say 转化 (objectstack-ai#801/objectstack-ai#825/objectstack-ai#829). Two gaps
survived those passes:

- 17 places on eight zh-Hant pages still said 轉換 while the Simplified line
  beside them already said 转化 (marketing/campaign-members, campaigns, index;
  analytics/cubes, dashboards, reports; reference/glossary;
  guides/files-and-comments).
- Five pages no pass had reached, in both scripts: sales/index,
  administration/{setup, sandbox-and-releases, state-machines, automation}.

33 occurrences over 18 pages, judged one by one. 状态转换 (state transition) is
a different word that shares the old spelling, so the state-machines page kept
its ten mechanism sentences and changed only the three lead-convert ones; the
contract-activation, datetime-filter and type-coercion usages are untouched for
the same reason.

The automation page's flow row is pinned in ROW_LABEL, which flows need because
they carry no locale-pack entry — the ledger moves in this commit, not after it.
Verified in both directions: doc-only change first, guard red on both Chinese
pages (no "线索转换流程" row / row "线索转化流程" names no flow), then green with
the ledger synced.

Documentation only; nothing under src/ changed, and the English pages were
already right.


Claude-Session: https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa

Co-authored-by: Claude <noreply@anthropic.com>
yinlianghui added a commit to yinlianghui/hotcrm that referenced this pull request Aug 10, 2026
…bjectstack-ai#923)

objectstack-ai#844 的「不属于本条的」清单把 analytics 的 conversion rate 排除在 convert
动词面之外,理由是「指标名」。按基线实测这条理由的事实前提不成立,objectstack-ai#905 是账单:

- 全仓 zh-Hans 没有任何一处「转换率」。两处简体孪生行本来就写「转化率」
  (analytics/cubes.zh-Hans:124、analytics/reports.zh-Hans:32),所以那次排除
  没有保住任何「指标名词面」,只是把繁体侧单独留在原地。
- 这个短语没有语言包 label 面可以立词面契约:全仓 src/ 零命中,它是各页自译的
  散文。语言包能给的最近的锚反而同向跟「转化」——
  crm_forecast.num_converted_leads.label 是「已转化线索数」,dashboard 的
  open_leads.title 是「未转化线索」(src/translations/zh-CN.ts)。
- 于是两页各自内部自相矛盾:analytics/cubes.zh-Hant 在 :108 写「轉化數量」,
  十六行后的 :124 写「轉換率」;analytics/reports.zh-Hant 在 :32 写「轉換率」,
  :59 写「轉化」——后两处都是 objectstack-ai#844 已改的那一半。正是 objectstack-ai#801 批评的半页对半错。

改动两行,都在繁体页。裸的 转换 / 轉換 一律不动,这条边界是 objectstack-ai#844 划的,本次不移:
它在 administration/state-machines 上命名状态机机制、在导入指南里是类型强制转换、
在 revenue/contracts 上是合同激活——与已退休的 convert 译法同形而不同词。
en 与 zh-Hans 零改动,src/ 零改动。

test/docs-conversion-rate-spelling.test.ts 补上这段散文缺的那道门。这个短语没有
语言包键可派生,所以检查只能落在主张所在的文本里:一遍全量扫描所有中文页拒绝
「转换率 / 轉換率」,另一条独立断言两页仍然写着这个指标——纯否定断言在句子被删掉时
会因为「什么都没产出」而变绿,配上正向断言后,删句和拼错一样红。

反向双向核验(方向先判后跑,两次都如判):
- 还原两行 -> 4 条测试红 3 条,扫描断言逐行点名
  content/docs/analytics/cubes.zh-Hant.mdx:124 与
  content/docs/analytics/reports.zh-Hant.mdx:32,两条 carrier 断言同时红
  (每页仅有的「轉化率」正是被还原的那一行)。
- 整行删除 -> 扫描断言绿(无可发现),carrier 断言红。空断言陷阱证否。

Refs objectstack-ai#801 objectstack-ai#825 objectstack-ai#829 objectstack-ai#844 objectstack-ai#802


Claude-Session: https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

#793 的同一缺陷类在其文件面之外还剩两处:sales/index.zh-Hant 的「已到期」,与 quotes.zh-Hans 的「过期日期」×4

2 participants