来源:#752(opportunities.mdx 视图清单重写,PR #757)实施过程中的顺带发现。#752 的文件面不含 `src/**`,故单独立单。 ## 现状(基线 `origin/main` = 768a94bd) `crm_opportunity.stage` 的规范取值有 **7** 个 —— `src/objects/_picklists.ts:111-119` 的 `OPPORTUNITY_STAGE_OPTIONS`: ``` prospecting / qualification / needs_analysis / proposal / negotiation / closed_won / closed_lost ``` 有两处 UI 元数据只写了其中 **6** 个,漏的都是 `needs_analysis`: 1. **详情页的阶段路径** —— `src/pages/opportunity_detail.page.ts:76-85`,`Opportunity Stage Path` 组件的 steps 列了 prospecting / qualification / proposal / negotiation / closed_won / closed_lost。一笔处于 Needs Analysis 的交易打开详情页时,路径上没有对应的一步。 2. **Open Deals 列表的行着色** —— `src/views/opportunity.view.ts:41-52` 的 `rowColor.colors`,同样缺 `needs_analysis` 一项,该阶段的行拿不到颜色。 对照:`content/docs/sales/opportunities.mdx:10-22` 的「The 7 sales stages」表(以及三语页)写的是完整 7 个,object 也确实按 7 个校验 —— 所以这两处是元数据自身的漏项,不是文档漏写。 ## 影响 Needs Analysis(默认赢单概率 40%)是漏斗中段的一个正常阶段,不是废弃值:`src/objects/_picklists.ts` 把它列为规范取值,`mass_update_stage` 动作也按同一份清单渲染。一笔停在 Needs Analysis 的交易,在详情页看不到自己在路径上的位置,在列表里也没有阶段色 —— 对用户表现为"这个阶段的交易显示得不一样",很容易被当成数据坏了。 ## 修法 两处各补一项 `needs_analysis`(路径上排在 qualification 与 proposal 之间;`rowColor` 取一个与相邻阶段可区分的颜色,`_picklists.ts` 里该项自带 `color: '#FFD700'` 可直接沿用)。建议同时在 `test/metadata-references.test.ts` 加一条守卫:凡是逐项枚举 stage 的 UI 元数据(阶段路径 steps、`rowColor.colors`),其取值集合必须等于 `OPPORTUNITY_STAGE_OPTIONS` —— 否则下次新增阶段还会漏。 用户可见,需 changeset。 Refs #752 #757 --- _Generated by [Claude Code](https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa)_
Activity
yinlianghui commentedon Aug 5, 2026
Generated by Claude Code
yinlianghui commentedon Aug 5, 2026
验收 ACCEPT(PM 复核,对照 GitHub 实况,head
24a5e09d):PR #761,8/9 绿(Playwright 收尾中),已转 ready 并挂自动合并。复核要点:
stages非steps、picklist 路径)如实记录。Needs Analysis 阶段的商机从此在详情页路径与 Open Deals 行色上可见;第八个阶段不可能再半覆盖着发货。
Generated by Claude Code
fix(opportunity): 补齐 needs_analysis 的阶段路径与 Open Deals 行着色,并加派生式完整性守卫 (o…