Skip to content

docs(sales): quotes.zh-Hant 的 expired 状态名跟语言包写作「已過期」(#793) - #803

Merged
yinlianghui merged 1 commit into
mainfrom
claude/issue-793-quotes-expired-label
Aug 5, 2026
Merged

yinlianghui merged 1 commit into
mainfrom
claude/issue-793-quotes-expired-label

Conversation

@yinlianghui

@yinlianghui yinlianghui commented Aug 5, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #793

纯文档改动,只动 content/docs/sales/quotes.zh-Hant.mdx 一个文件加 changeset。以 src/translations/zh-CN.ts 为唯一事实来源(contract-first,文档跟语言包),不动 src/。

范围切分:#793 追评里 leads zh 页「沟通偏好」开关名那半边归 #792 的 PR 交付(那两页正在被另一 dev 重写字段表)。PM 已在两单记录该切分,本 PR 关掉 #793 是按此约定。

前提复核

按惯例在 origin/main = 131daf9 上重核,issue 的断言全部成立,且范围比 issue 写的略大一处:

issue 断言 复核结果
quotes.zh-Hant.mdx:19 状态表把 expired 写作「已到期」 成立,行号也仍是 :19(该页最后一次改动是 PR #794,只动了 presented)
语言包是「已过期」 成立。zh-CN.ts:471-472 的 crm_quote.status.options.expired = '已过期'
zh-Hans 页 :19 是对的 成立(该页另有别的问题,见下方越界发现)
仓库没有 zh-Hant 语言包 成立。src/translations/ 只有 en / zh-CN / es-ES / ja-JP,故 zh-Hant 的对照来源是 zh-CN.ts 的繁体化写法「已過期」
「改前 grep 全页,确认没有别处以『到期』指代这个状态」 另有一处::70「系統會將任何到期日期已過的報價標記為已到期」也是状态名,一并改(#794 对 presented 的先例:状态表加正文 6 处一起对齐)

改了什么(2 处)

行 前 后
:19 ⚪ **已到期** ⚪ **已過期**
:70 標記為已到期 標記為已過期

改完这一页自己也不再打架了::118(标准列表视图小节)本来就写「每晚的過期清掃⋯⋯自動改成已過期」,用的正是语言包的词。也就是说该页此前对同一个状态有两种叫法,:19 / :70 一种、:118 另一种。

刻意没改的(判断标准同 #794)

#794 对齐 presented 时明确保留了 :8「擷取其呈現時刻的定價」这类动词用法。同一条标准,本页以下 8 处不是状态名,全部保留:

  • :3 frontmatter 的「自動到期」—— 描述过期机制的动词用法(issue 正文亦如此判定)。
  • :70 / :132 的「每日到期掃描」—— 定时任务的名字,不是状态。
  • :31 / :65 / :112 / :114 / :119 / :127 的「到期日期」/「到期日」—— 这是 expiration_date 字段的出厂标签(zh-CN.ts:477 = '到期日期'),跟语言包恰恰意味着不能改成「过期日期」。

所以这里不存在 issue 担心的「改一半」:动词与机制名一处未动,状态名两处全动。

越界发现(已单独立单,本 PR 不修)

#801 —— 按「这个状态名/字段名还在哪些页被消费」而不是按本 PR 改的那一页做了全仓扫描,扫出两处在本 PR 文件面之外:

#802(finding,未排期)—— 「文档里的状态名/字段标签是否等于语言包」这条事实目前零覆盖:docs-drift.test.ts 只钉 flow 阈值与磁贴标题,os validate / pnpm lint 不读 content/docs/。一周内同类缺陷已出现四次(#765 §3 / #793 / #801 甲 / #801 乙),且是逐层被别的工作带出来的。单里记了动手前必须先答的两个问题(zh-Hant 无语言包怎么对照;动词与机制名如何豁免才不误报)。

验证

全量四件套,均在共享锁下跑:

pnpm validate   ✓ Validation passed (2452ms) —— 5 条 warning 全为既有项(approval 空审批人 / campaign_member 字段组,后者即 #715)
pnpm typecheck  ===TYPECHECK_EXIT=0===
pnpm build      ✓ Build complete (1436ms) · dist/objectstack.json (1918.6 KB)
pnpm test       Test Files 63 passed (63) · Tests 1534 passed | 1 skipped (1535)

另跑两道闸:

pnpm hygiene    ✓ no raw control bytes in source files · ✓ source hygiene clean
pnpm lint       13 warning(s), 14 suggestion(s),0 error,全为既有项

控制字符自扫(超出 pnpm hygiene 的扫描面,覆盖本 PR 改动的 mdx 与 changeset):grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f]' 零命中。

测试面说明(据实报告):本 PR 未新增钉子测试。这类事实当前没有可挂靠的闸(见 #802),而现写一道通用闸需要跨全部 zh 文档页扫描——既会撞上 #792 正在重写的 leads 两页,也会因 #801 的两处立即变红,把一处窄的译名订正变成全仓对齐。#765 亦明确要求不为散文加钉子测试。故按 PM 划定的文件面(仅 quotes.zh-Hant.mdx + changeset)交付,闸的设计问题留在 #802。

changeset:.changeset/quotes-zh-hant-expired-status-label.md(hotcrm, patch)。按 #797 的教训,站内路径一律用反引号写,未使用 markdown 链接语法——link-check 会扫 .changeset/ 下的 .md。本 PR 未新增任何链接。

…es on the zh-Hant page (#793)

`content/docs/sales/quotes.zh-Hant.mdx` called the `expired` quote status
「已到期」 in its status table and again in the daily-sweep bullet, while
`crm_quote.status.options.expired` in `src/translations/zh-CN.ts` is 「已过期」 —
「已過期」 in traditional script. 到期 and 過期 are not the same word (a deadline
arriving vs having lapsed), so a reader matching the page against the screen
looked for a status the product never shows.

Both status-name occurrences now follow the locale pack. The page's third
mention — the standard-list-view section describing the nightly sweep — already
said 已過期, so the page was contradicting itself as well as the product.

Verb and field usages stay as they are, on the criterion PR #794 set when it
aligned `presented` (it deliberately left 「擷取其呈現時刻的定價」 alone): 「自動到期」
in the frontmatter names the expiry mechanism, 「每日到期掃描」 names the nightly
sweep, and 「到期日期」 is the shipped label of the `expiration_date` field
(`src/translations/zh-CN.ts`), not a status name.

Docs follow the locale pack rather than the reverse, so nothing under `src/`
changed. The leads half of the issue is delivered by #792's PR, per the scope
split recorded on both issues.

Fixes #793

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 8:45pm

Request Review

@yinlianghui
yinlianghui marked this pull request as ready for review August 5, 2026 20:50
@yinlianghui
yinlianghui added this pull request to the merge queue Aug 5, 2026
Merged via the queue into main with commit 67bf947 Aug 5, 2026
9 checks passed
yinlianghui added a commit to yinlianghui/hotcrm that referenced this pull request Aug 10, 2026
…d field-group headings with the locale pack (objectstack-ai#801) (objectstack-ai#825)

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 objectstack-ai#803, on a page that fix did not reach.
- `reports_to` is 直属上级; the contacts prose still said 汇报对象 after objectstack-ai#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 objectstack-ai#801


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.

quotes.zh-Hant.mdx 把 expired 译成「已到期」,语言包 zh-CN.ts 是「已过期」

2 participants