Repository navigation
zh 文档里 crm_opportunity 的 7 个阶段名有 4 个与语言包不符(开发期/资格审核/赢单/输单),且这一组该动哪边未定 #829
Description
Activity
- addedbugSomething isn't workingSomething isn't workingdocumentationImprovements or additions to documentationImprovements or additions to documentationpm:queueReady for the PM dispatch loopReady for the PM dispatch looppm:dispatchedDispatched to a dev agent by /pm-dispatchDispatched to a dev agent by /pm-dispatchand removedpm:queueReady for the PM dispatch loopReady for the PM dispatch loop
on Aug 5, 2026 🔒 认领(修复线 PM 派单):session_01VHrPAGEgFDoHjphqYG4BMa,分支
claude/issue-829-stage-names-follow-package,worktreehotcrm-issue-829。文件面:甲组锚点两页(opportunities / pipeline-management)×3 语及散文波及页(以逐页 grep 为准,leads zh 的「开发期」族一并)、乙组五处(sales-copilot / accounts / quick-tour / introduction / testing-and-ci)、changeset。裁定已record(veto 窗口未被翻案,照 方向 A:docs 跟包 执行):七个阶段名以
zh-CN.ts的crm_opportunity.stage为唯一事实来源,全页扫先例照 #794/#825;convert 动词面照包;⚠️ 「资格审查」是 opportunity 侧的包词,与 lead 侧「资格评估」不许互串(#825 已定调)。若维护者在本单留言偏好「赢单/输单」式措辞,停工上报——那是包改名决策。
Generated by Claude Code
✅ 实施完成,draft PR #842(8/8 CI 绿)。session_01VHrPAGEgFDoHjphqYG4BMa,分支
claude/issue-829-stage-names-follow-package。veto 窗口未被翻案,照 方向 A:docs 跟包 执行;语言包一字未动。前提复核结论:成立。 一次性对照脚本从
zh-CN.ts现读七个阶段名,跑origin/main基线时恰好报出每页缺失 4 个(寻找客户 / 资格审查 / 成交 / 失败),needs_analysis/提案/谈判三个未报——与本单正文的四行 ❌ 逐一吻合。「寻找客户」在 docs 零命中也已复核属实,确为全量替换。正文一处事实偏差,已修正:乙组说「zh-Hant 版同段落没有这个写法」——实测有,
sales-copilot.zh-Hant.mdx:63写作「轉換潛在客戶」,同样在点名convert_lead这个动作。已一并按包对齐。乙组另四处的共同形状是简繁不同步(简体侧早已是「转化」,繁体孪生页未跟上),故按语言对偶补齐了accounts.zh-Hant:62与quick-tour.zh-Hant:60。⚠️ 陷阱已守住:「资格审查」只进商机侧阶段表(4 处);leads 三处与 sales/index 一处的「通过资格审核 / 应用 BANT 资格审核」是动词、#825 已明确保留,本次未动;leads 页「资格评估」区块名原样。脚本里 8 条互串断言双向为绿——这组断言在本基线上不具判别力(改前用的是第三个词「资格审核」,两侧都不属),它们是护栏而非基线失败预测项,PR 正文已照实说明,未硬凑成翻转。越界发现,均已去重后另立、未在本 PR 修:
- convert 动词面:zh-Hant 侧整体没跟上简体侧,marketing/analytics/guides 等 20 余处仍写「轉換」而包里是「转化」 #844 —— convert 动词面 zh-Hant 侧整体未跟上简体侧(marketing / analytics / guides / administration 共 20 余处)
- crm_opportunity.forecast_category 的 best_case 在 zh 文档有三种写法:包里「最佳情况」,opportunities 写「最佳可能」,automation 写「最好情况」 #845 ——
forecast_category.best_case三种写法;其中 4 处就在本单锚点页opportunities.zh-Han{s,t}:128,134上,属隔壁选择列表,越界未动,明确挂账 - [观察] zh-CN.ts 的 help 串与它自己的 label 打架:help 说「线索转换」「关闭为赢单」,而 label 是「转化线索」「成交」 #846(
finding)—— 语言包内部 4 个 help 串与自己的 label 打架,含win_reason/loss_reason的 help 引号点名「赢单」/「丢单」两个阶段值。这是本单 A/B/C 之争里方向 B 唯一没被摆上台面的证据,建议 B1(help 跟 label),不产生文档返工——供维护者一并过目
按派单要求未加守卫(#802 挂账)。
Generated by Claude Code
✅ 验收通过 — PR #842 已转 ready 并挂 auto-merge(CI 8/8 绿)。
判定要点:
- 方向 A 在 25 页规模上执行,判据先行:「包里零命中的词到处是漂移;包里的成败词汇只在被当阶段值用时才改」——赢单率/赢单原因/丢单原因全保留,阶段值才改成交/失败。integrations 页指开发环境的「开发期」按 issue 点名放过。
- 陷阱守住:资格审查只进商机侧阶段表 4 处,与 lead 侧资格评估未互串;8 条护栏断言在基线上不具判别力这一点如实说明(旧文档用第三个词),未硬凑翻转。
- 方法论加分:第一版「整页含词」弱判据在基线漏报(成交借「成交日期」出现),收紧为「表格行首单元格」后才与 issue 的四行 ❌ 逐一吻合——弱判据未留在 PR 里;基线 16 败/改后 24 全过的双向证明是对 issue 前提的独立复核。
- 纠正 issue 一处事实(zh-Hant sales-copilot 有错写法)并识别「简繁不同步」形状、按语言对偶双向补齐(docs(sales): quotes.zh-Hant 的 expired 状态名跟语言包写作「已過期」(#793) #803→docs(sales): 让 zh 页的线索状态名、到期日期、直属上级与区块名跟随语言包 (#801) #825 的教训内化);同句连带「失单原因→丢单原因」披露充分。
- 与 docs(revenue,sales): 按 contract.hook 与续约 flow 写实 Customer Since 幽灵与提醒收件人 (#824) #841 的 accounts 页改动实测可干净合并(行号不相邻)。语言包/en/src/releases 未动。
三个新发现分诊:#844(zh-Hant convert 动词面整体滞后 20 余处 + 五页双侧未改,含 state-machines「状态转换」是机制名的防误改标注)→ 入队;#845(best_case 三种写法 + closed_amount 误称)→ 入队;#846(语言包内部自相矛盾:4 个 help 串用自己 label 不用的词)→ 入队,裁定 B1(help 跟 label——与 #810 的 intra-package 先例同源,不产生文档返工;动手时同看四个语言包,veto 窗口照例)。#829 随本 PR 关闭。
Generated by Claude Code
- added 4 commits that reference this issue
on Aug 10, 2026 - addedpriority:p2Medium: important, M3Medium: important, M3and removed
on Sep 9, 2026
来源:#801(PR #825)实施时的越界发现。#801 只覆盖 quotes / leads / contacts / sales-index 四页的 lead 状态名、
expiration_date、reports_to与区块名,本条整组都在它的文件面之外,故未在该 PR 里动。基线origin/main= 6f6ed9a。同一缺陷类(文档里的词与
src/translations/zh-CN.ts不符,#802 记的那一类),但这次的量级和性质都不同:漂移的不是某一页的某个词,而是一个对象的整套阶段名,在全部 zh 页上一致地用了另一套说法。甲、
crm_opportunity.stage七个选项里四个对不上zh-CN.ts的crm_opportunity.fields.stage.options:prospectingqualificationneeds_analysisproposalnegotiationclosed_wonclosed_lost锚点(阶段表,改的时候从这两张表起手):
content/docs/sales/opportunities.zh-Hans.mdx:16-22、opportunities.zh-Hant.mdx:16-22content/docs/sales/pipeline-management.zh-Hans.mdx:16-22、pipeline-management.zh-Hant.mdx:16-22散文与看板说明里还有一大片:全仓 zh 页
开发期/開發期10 处(其中guides/integrations.zh-Han*.mdx:132的「开发期」指开发环境,不是阶段名,要放过)、输单/輸單24 处。寻找客户在content/docs/里零命中 —— 也就是说文档从来没用过包里的那个词,不是某一页写错。顺带说明 #801 为什么没顺手改:
sales/leads.zh-Hans.mdx:121/leads.zh-Hant.mdx:121(「在开发期阶段创建一个商机」)虽然落在 #801 的文件面上,但属于本条这一族。8 处里只改 2 处,正是 #801 正文批评的那种半页对半页错,所以留给本单一次扫完。#793 / #794 / #801 都是文档跟包,因为那几处包里的词就是界面上的词、且明显更对。这一组不一样,值得先由维护者定夺该动哪边:
content/docs/)。代价:全 zh 文档改用「寻找客户 / 资格审查 / 成交 / 失败」。src/translations/zh-CN.ts,文档不动)。理由:closed_won/closed_lost在销售语境里通行说法是「赢单/输单」,而包里的「成交/失败」把一对状态拆成了两套说法(「成交」的反义不是「失败」);prospecting的「寻找客户」也比「开发期」直白但更啰嗦。这与 zh-CN 语言包里「活动 / 活动成员 / 活动参与者」三个标签互相撞车:活动成员其实是营销活动的成员 #810 正在做的事同型 —— 那单也是判定包本身的词有问题。qualification「资格审查 → 资格审核」这一处两边差一个字、文档侧读起来更自然,可能与closed_won/closed_lost这一对分开定。另外注意
crm_lead._sections.qualification是「资格评估」,与crm_opportunity.stage.qualification「资格审查」是包里有意分开的两个词(#793 追评「两对象同名字段各按各的包」已定调,PR #825 也按此只动了 lead 侧)。选 B 或 C 时别把这三个词并成一个。建议:先定 A/B/C,再动手。选 B 的话文件面是语言包而不是文档,与本条的标题相反 —— 所以这单在方向定下来之前不宜直接派实施。
乙、
sales-copilot.zh-Hans.mdx:63把convert_lead动作叫「转换线索」包里
crm_lead._actions.convert_lead.label是「转化线索」:这一行直接点名一个动作按钮,而按钮上写的是另一个词。zh-Hant 版同段落没有这个写法。这一处是确定的(动作 label 白纸黑字在包里,不涉及甲的方向问题),可以独立于甲先修。
同源但性质较轻的 convert 动词面残留(
转换而非包里的转化),也都在 #801 文件面之外,可与乙一起扫:sales/accounts.zh-Hans.mdx:62、getting-started/quick-tour.zh-Hant.mdx:52、getting-started/introduction.zh-Hant.mdx:23、customization/testing-and-ci.zh-Hant.mdx:266。Refs #801 #802 #793 #810