Repository navigation
All four locales label this_quarter_forecasts "This Quarter", but the view is not scoped to the current quarter #730
Description
Activity
- addedbugSomething isn't workingSomething isn't workingmetadataDeclarative metadata — schema, security posture, UI surfacesDeclarative metadata — schema, security posture, UI surfacespm:queueReady for the PM dispatch loopReady for the PM dispatch loop
on Aug 5, 2026 分诊(PM 循环第 4 轮,会话
session_01VHrPAGEgFDoHjphqYG4BMa):入pm:queue。方向预判(dev 接单时复核):「当前季度」限定是刻意去掉的(列表路径不解析日期宏 —— 平台限制),所以修法在标签侧:让四个语言包与视图 label 说实话(如「Quarterly Forecasts / 季度预测」),而不是把日期宏塞回过滤器(那是平台能力,不在本仓修)。若 dev 复核发现列表过滤器如今已支持日期宏,则反向修(恢复限定、保留标签)并说明。
Generated by Claude Code
- addedpm: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 循环(17.0 发布修复线)第 4 轮追派
会话:session_01VHrPAGEgFDoHjphqYG4BMa
分支:claude/issue-730-quarterly-view-label
Worktree:hotcrm-issue-730
文件面:src/views/forecast.view.ts(视图 label)、四个语言包(src/translations/*)中该视图的标签、相关测试、changeset。⛔ 不动src/data/**与src/flows/**(#671 在飞)。方向按分诊评论:标签向行为对齐(「当前季度」限定是因列表路径不解析日期宏而刻意去掉的 —— 平台限制,不在本仓修);若复核发现过滤器如今支持日期宏则反向修并说明。
Generated by Claude Code
验收 ACCEPT(PM 复核,对照 GitHub 实况):PR #745,8/9 绿(Playwright 收尾中),已转 ready 并挂自动合并。
首先公开更正 PM 自己的分诊方向:我预判「标签侧修」,依据是 issue 所述「限定被刻意去掉(列表路径不解析日期宏)」—— dev 实测推翻了这个前提:该注释写于 16.1.0 时代(#515,7/29),而 filter-token 服务端解析在 17.0.0-rc.0 已进 ObjectQL 读路径(#3582),rc.2 上
{current_quarter_start}实测解析正常。正确修法是恢复当季限定 ——四个语言包从头到尾没说谎,漂移的是 metadata label。dev 走的正是派发词预留的反向分支,这是前提优先纪律的教科书案例。复核要点:
- filter 钉双键(period + period_start,与 quota_attainment_by_rep 同对),防月度行混入;空转的 sort 键清理;
emptyState四语补齐(forecast_snapshot 与启动重播种的互动:每次 dev 重启后,当季出现一条无 owner 的幻影快照行与 owner 键控行并存 #702 之后新装 org 在 03:00 扫描前该视图为空,「空着才诚实」与配额表姿态一致)。 - 通用守卫(标签承诺的时间范围必须有对应 token,metadata + 四语言包一起取)当场抓出第二个同类缺陷 →
closing_this_quarteris labelled "Closing This Quarter" in all four locales, but its filter applies no date restriction at all #743(已入队);KNOWN_DEBT 例外自过期(伴随测试断言例外仍在违规,closing_this_quarteris labelled "Closing This Quarter" in all four locales, but its filter applies no date restriction at all #743 修好即转红提醒删除)—— 这个模式值得沿用。 - 过期的 16.1.0 规则(metadata-references)被全量跑先红出来,按「记录变更与证据而非删除历史」改写,并加反空转探针(三个近似拼写必须仍被拒,断言恰为 3);analytics 半边不动(Analytics/dashboard query path resolves no user token — personal ("my …") dashboard widgets are impossible #510 仍开,不对称方向翻转但仍存在)。
- 三处反向验证方向全中;Two source comments still assert the list-view path resolves no date macro — one of them tells the next author not to generalise #744(两处源码注释仍断言旧行为)按文件面纪律立 finding 不动手。
- 文档核过不改(forecasting.mdx 未点名该视图标签,55 行一般性表述仍准确并自然覆盖本视图)。
Generated by Claude Code
- filter 钉双键(period + period_start,与 quota_attainment_by_rep 同对),防月度行混入;空转的 sort 键清理;
- added 3 commits that reference this issue
on Aug 10, 2026 - addedpriority:p2Medium: important, M3Medium: important, M3and removed
on Sep 9, 2026
Found while rewriting the forecasting guide for #627 (I needed to name the list views in prose and could not, because the metadata label and the translated label disagree about what the view does). Out of scope for that docs PR — filed rather than fixed.
The problem
src/views/forecast.view.tsdeliberately dropped the current-quarter restriction fromthis_quarter_forecasts, and renamed the view to say so:The comment above it explains why: the list data path resolves no date macro, so a
{current_quarter_start}filter would ship to the driver as a literal string and match nothing. Newest quarter sorts first instead. The tab that opens it is likewise labelledQuarterly.The four locale bundles never followed:
src/translations/en.ts:323—this_quarter_forecasts: { label: 'This Quarter' }src/translations/zh-CN.ts:298—本季度src/translations/es-ES.ts:327—Este trimestresrc/translations/ja-JP.ts:356—今四半期So the name a user actually reads promises a filter the view does not apply. Picking "This Quarter" returns every quarterly snapshot ever taken, for every settled quarter, with the current one merely sorted to the top. On a demo org that is four settled quarters plus whatever the nightly sweep has opened; on a real org it grows without bound. A reader who trusts the label and sums the Quota column gets exactly the cross-period addition that #614 fixed on the dashboard.
Not a duplicate of #494: that issue is about i18n key coverage and option keys that never apply. This key applies fine — it is the wording that is false.
Suggested fix
Bring the four translated labels in line with the metadata label (
Quarterly · Latest First/ 季度(最新在前)/ …), or, if "This Quarter" is the name the product wants, give the view a filter that actually delivers it — which per the code comment the list path cannot currently express, so the label is the honest thing to change.