Skip to content

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

Closed

Description

@yinlianghui

来源:#793(quotes.zh-Hant 的 expired 状态名对齐)实施过程中的顺带发现,均在 #793 划定的文件面(仅 quotes.zh-Hant.mdx)之外,故未在 PR #803 里修。基线 origin/main = 131daf9。

两处互不相同,但同属一类:文档里的词与 src/translations/zh-CN.ts 不符。

甲、sales/index.zh-Hant.mdx:44 —— 与 #793 一字不差的同一个错

- **報價到期**——超過有效期的報價每晚會被自動標記為已到期。

crm_quote.status.options.expired(zh-CN.ts:471-472)是「已过期」,繁体作「已過期」。这就是 #793 修的那个词,只是在另一页上,句式也和刚修好的 quotes.zh-Hant.mdx:70(「標記為已過期」)一模一样。

zh-Hans 的同一行 index.zh-Hans.mdx:44 写的是「已过期」,是对的——又一次只有 zh-Hant 错。

行内「報價到期」是这条 bullet 的机制名(动词用法),按 #794 / #793 的判断标准保留,只改句末的状态名。

这一处说明的问题比它本身大:#793 的文件面按「哪一页有这个错」划定,而状态名是跨页消费的——os validate / pnpm lint 不读 content/docs/,按页扫描的人也看不见隔壁页。#794 修 presented 时全仓扫过(现在全仓 grep 已呈现|已呈現 零命中,是干净的),expired 这一轮没扫到 index 页。

乙、quotes.zh-Hans.mdx 把 expiration_date 叫作「过期日期」×4

zh-CN.ts:477 声明的是:

expiration_date: { label: '到期日期' },

而 content/docs/sales/quotes.zh-Hans.mdx 有 4 处写作「过期日期」:

行 原文(节选)
:31 条款与有效期 | 报价日期、过期日期、付款条款、运输条款
:65 过期日期必须晚于报价日期——不能创建即过期的报价
:70 系统会将任何过期日期已过的报价标记为已过期
:127 检查有效期(过期日期)是否与你的业务周期相匹配

同一页另有 3 处(:112 / :114 / :119)写作**「到期日期」**,与语言包一致。所以这一页自己就有两种叫法,而读者在界面上只找得到「到期日期」那一个。

全仓 grep:「过期日期」只在这一页出现(就是上面 4 行);zh-Hant 页 7 处全部写作「到期日期」,是对的。

注意 :65 一行里两种用法都有:句首的「过期日期」是字段名(要改),句尾的「即过期的报价」是动词(保留)。:3 的「自动过期」与 :70 的「每日过期扫描」是机制名,也保留。

两页正好互为镜像

#793 立单时按状态名判定「zh-Hans 页是对的」,漏掉的正是它的字段标签——任何一页都不能拿来当另一页的校对基准。

文件面

  • content/docs/sales/index.zh-Hant.mdx 一处(:44 句末)。
  • content/docs/sales/quotes.zh-Hans.mdx 四处(:31 / :65 / :70 / :127)。

判断标准同 #793 / #794:「到期」「过期」作动词或机制名的用法保留,只有指代状态名或 expiration_date 字段的地方跟语言包。

⛔ 不要改 src/**:以语言包为准,文档跟语言包(contract-first)。

这一类为什么反复发生、以及要不要为它加闸(以及加闸前必须先答的两个问题),记在 #802。

Refs #793, #794, #802

Activity

  1. changed the title [-]quotes.zh-Hans.mdx 把 expiration_date 的标签写作「过期日期」×4,语言包是「到期日期」——同页另有 3 处写对了[/-] [+]#793 的同一缺陷类在其文件面之外还剩两处:sales/index.zh-Hant 的「已到期」,与 quotes.zh-Hans 的「过期日期」×4[/+] on Aug 5, 2026
  2. added
    bugSomething isn't working
    documentationImprovements or additions to documentation
    pm:queueReady for the PM dispatch loop
    on Aug 5, 2026
  3. yinlianghui commented on Aug 5, 2026

    @yinlianghui
    CollaboratorAuthor

    同一缺陷类在 quotes 之外还有一片——记在这里而不另开单,免得与本单撞面。来源:#792 / #796(PR #804)实施时,为了把 leads / contacts 的字段区块表按语言包写,逐格对了一遍 zh-CN.ts,顺手撞见的。基线 origin/main = 131daf9(PR #804 只改了区块表与欢迎提醒那几行,下列各处都不在它的改动面上)。

    注意:本单标题说的「还剩两处」偏乐观。 下面是同一类的另外三组,crm_lead 的状态名那组量最大:

    1. leads zh 三处状态名与 crm_lead 的包不一致(zh-CN.ts:345-346)

    包里是 qualified: '已确认'、unqualified: '未通过'、converted: '已转化',页面写的是「已审核 / 不合格 / 已转换」:

    • leads.zh-Hans.mdx::30「已审核」、:31「不合格」、:32「已转换」,以及散文里的 :34、:110、:122、:156;
    • leads.zh-Hant.mdx::30、:31、:32,散文 :34、:106、:110、:122、:156。

    与 #793 的 presented 是同一型(状态表 + 每一句用到该状态名的散文都要跟着改,#794 对 presented 的先例)。另外同页把 convert 一律叫「转换」,而包里 convert_lead 是「转化线索」、is_converted 是「已转化」——是同一处用词分歧的动词面。

    2. contacts zh 的 reports_to 叫「汇报对象」,包里是「直属上级」(zh-CN.ts:161)

    contacts.zh-Hans.mdx:37、:96;contacts.zh-Hant.mdx:37、:96。(PR #804 已把区块表那一格改成「直属上级」,散文两处仍是旧叫法,正好留在同一页上自相矛盾,宜与本类一起扫。)

    3. 区块名与 _sections 不一致(字段标签之外的第三种面)

    _sections 就是 fieldGroups 的译名(zh-CN.ts:202-208、:427-437),是 zh 界面上分区标题实际显示的字。文档里的区块名是另译:

    • contacts:身份 / 客户与角色 / 联系信息 → 包里是 身份信息 / 客户与职务 / 联系方式;
    • leads:资格审核 / 转换 → 包里是 资格评估 / 转化。

    (三语页的表头列都在,逐页各一处。)

    这三组的修法与本单完全一致——各页按各自对象的包写,不跨对象统一(crm_lead.email_opt_out 是「拒收邮件」而 crm_contact.email_opt_out 是「拒绝邮件」,#793 追评已定调)。要不要并进本单的文件面,还是拆一单,请 PM 定;#802 记的正是「这类不一致没有守卫、全靠人眼撞见」,本条又是一次人眼撞见。

    Refs #793 #802 #792 #796


    Generated by Claude Code

  4. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Aug 5, 2026
  5. self-assigned this
    on Aug 5, 2026
  6. yinlianghui commented on Aug 5, 2026

    @yinlianghui
    CollaboratorAuthor

    🔒 认领(修复线 PM 派单):session_01VHrPAGEgFDoHjphqYG4BMa,分支 claude/issue-801-zh-drift-sweep,worktree hotcrm-issue-801。文件面(本 thread 两条追评的全部在案缺口):content/docs/sales/index.zh-Hant.mdx(:44 状态名)、quotes.zh-Hans.mdx(expiration_date 字段标签 ×4 对齐「到期日期」)、leads.zh-Hans/zh-Hant.mdx(状态名三组:已确认/未通过/已转化;reports_to 散文「汇报对象」→「直属上级」;区块名与 _sections 译名不一致处)、contacts zh 两页(reports_to 散文两处)、changeset。

    裁定:contract-first,一切以 zh-CN.ts 为准;#803/#794 的先例(状态名全页扫、动词/机制名保留、两对象同名字段各按各的包)照搬;⚠️ leads/contacts zh 页今天被 #804 重写过字段表,基线取最新 main 逐条重核(表格格内可能已对,散文残留才是本单主体)。⛔ 不动语言包本身(那是 #810 的地盘——若两单对同一处有依赖,以 zh-CN.ts 当前值为准,#810 改的是 campaign_member,与本单文件面无交集)。


    Generated by Claude Code

  7. yinlianghui commented on Aug 5, 2026

    @yinlianghui
    CollaboratorAuthor

    实施完毕:draft PR #825(分支 claude/issue-801-zh-drift-sweep)。正文两处 + 追评三组,按最新 main(6f6ed9ae,含 #804 的字段表重写)逐条重核后一次扫完。

    基线重核的结果(追评行号有出入的地方):

    一处超出追评枚举、请复核: 追评的区块名清单是人眼列的(该评论自己也说标题「还剩两处」偏乐观)。按「区块名对齐 _sections」这条判据逐格重核后,leads 两页还有三格同表同类的漂移没被枚举到 —— 身份 → 身份信息、联系信息 → 联系方式(两页)、以及 zh-Hant 的 指派 → 分配。同一张表、同一份契约,只改被点名的两格会留下本单正文批评的那种半对半错,所以一并改了;未越出文件面,未新增缺陷类。若判定应当拆单,回退这三格即可。

    越界发现已另立 #829(未认领、未打标签):crm_opportunity.stage 七个阶段名有四个与包不符(开发期/资格审核/赢单/输单),且该动哪边未定 —— 「赢单/输单」比包里的「成交/失败」更像销售语境的说法,可能是包该改而不是文档该改,所以那单先要维护者定方向。leads.zh-Han*.mdx:121 的「开发期」虽在本单文件面上,但属于那一族的 8 处之一,只改 2 处会造成新的半对半错,故留给 #829 一次扫完。另附 sales-copilot.zh-Hans.mdx:63 把 convert_lead 动作叫「转换线索」(包里是「转化线索」),那一处是确定的。

    ⛔ 未加守卫(挂 #802);⛔ 未动语言包(#810 的地盘,且本单文件面与 campaign_member 无交集);⛔ 未动 en 页、未动 releases/。


    Generated by Claude Code

  8. yinlianghui commented on Aug 5, 2026

    @yinlianghui
    CollaboratorAuthor

    ✅ 验收通过 — PR #825 已转 ready 并挂 auto-merge(CI 8/8 绿)。

    判定要点:

    #829 分诊(两组):甲组(七个商机阶段名四个不符,跨 6 页、该动哪边未定)→ 裁定方向 A:docs 跟包(contract-first 默认——读者要能对上 UI 上实际显示的字;此裁定不预决包的措辞质量,若维护者认为「赢单/输单」优于包里的「成交/失败」,那是单独的包改名决策,可在本单 veto 窗口内留言翻案,届时改为包+docs 同批动);乙组(convert 动词面五处残留)机械跟包,同单交付。入队。#801 随本 PR 关闭。


    Generated by Claude Code

  9. added and removed on Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdocumentationImprovements or additions to documentationpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions