Skip to content

content/docs/analytics/dashboards.mdx describes tiles that no dashboard ships (near-total drift, plus a fabricated usage stat) #610

Description

@os-zhuang

Found while working #587 (removing fabricated trend values from dashboard tiles). Filed unassigned, out of scope for that PR — recording it rather than fixing it as a rider.

Problem

content/docs/analytics/dashboards.mdx lists the tiles of each of the four dashboards. Almost none of the listed tiles exist in src/dashboards/*.dashboard.ts. This is a user-facing docs page, so a business user or admin reading it is being told about widgets they will never find in the product.

Actual widgets, read from the registered stack (objectstack.config.ts → dashboards[].widgets[]):

Dashboard Docs claim Actually ships
CRM Overview Open Leads; New Leads This Week; My Open Opportunities; Cases Awaiting Response; Top 5 Accounts by Pipeline; Recent Activity Total Revenue; Active Deals; Won Deals; Avg Deal Size; Revenue Trends; Lead Source; Pipeline by Stage; Top Products; Pipeline by Owner
Sales Pipeline by Stage; Forecast vs Quota (gauge); Closed Won this Quarter; Win Rate (last 90 days); Average Deal Size; Average Sales Cycle; Top 10 Open Deals; Slipping Deals; Activity Heatmap Total Pipeline; Closed Won (QTD); Open Opportunities; Avg Deal Size; Pipeline by Stage; Monthly Revenue Trend; Pipeline by Forecast Category; Lead Source; Open Pipeline by Owner; Quota Attainment by Rep; Pipeline by Stage × Lead Source
Service Open Cases by Priority; Cases Approaching SLA; Cases Breached; First Response Time; Resolution Time; CSAT; Case Volume by Origin; Top Case Categories; Agent Workload Open Cases; Critical Cases; Avg Resolution Time; SLA Violations; Cases by Status; Cases by Priority; Cases by Origin; Daily Case Volume; SLA Compliance; Open Cases by Priority
Executive Bookings This Quarter; Pipeline Coverage; Forecast Confidence; Net New ARR; Renewals This Quarter; CSAT and NPS; Customer Acquisition Cost; Top 10 Accounts by ACV; Pipeline Trend Total Revenue (YTD); Active Accounts; Total Contacts; Open Leads; Revenue Trend; Revenue by Industry; Pipeline by Stage; New Accounts; Accounts by Industry

CRM Overview and Executive overlap the real metadata on essentially zero tiles.

Two specific sub-problems worth calling out:

  1. The page promises capabilities the app does not have. "Forecast vs Quota — gauge", "Win Rate (last 90 days)", "Net New ARR", "CSAT and NPS", "Customer Acquisition Cost", "Activity Heatmap", "Slipping Deals" are not tiles, and several are not even measures any dataset defines. This is not stale wording — it is a feature list for a different product.

  2. A fabricated usage statistic. The page asserts: "The Cases Approaching SLA tile is the most-clicked widget on this dashboard — it's how agents prioritise." There is no such tile, and there is no click telemetry anywhere in this repo, so the claim is invented on both counts. Same class of defect as Remove fabricated trend values from crm/sales/service dashboards (executive already did, with rationale) #587: a confident-sounding number that nothing measured.

Related docs drift on the same page, also unverified: the docs describe the CRM Overview tile "New Leads This Week — trend vs prior week", "Win Rate … percentage with trend" and "CSAT … trend". After #587 no tile renders a period-over-period trend at all, so these lines would be wrong even if the tiles existed.

Why CI did not catch it

test/docs-drift.test.ts only guards two classes today:

  • package docs do not drift from the flows they document (flow source vs docs)
  • maintainer docs do not point at directories that no longer exist

Nothing checks that a docs page's tile list matches the dashboards actually registered, so this page can (and did) drift arbitrarily far.

Suggested fix

  • Rewrite content/docs/analytics/dashboards.mdx to describe the tiles the app really ships, keeping the "built for / answers" framing that is genuinely useful.
  • Delete the invented most-clicked-widget claim outright; do not replace it with another unmeasured superlative.
  • Extend test/docs-drift.test.ts with a dashboards rule: every tile name the page lists must resolve to a widget title on the dashboard whose section it sits under. That makes this class fail in CI instead of in front of a customer — same enforcement stance as the guard added for Remove fabricated trend values from crm/sales/service dashboards (executive already did, with rationale) #587.

Deciding whether the docs should be trimmed to reality or the dashboards built up to the docs' ambition is a product call, which is why this is filed rather than fixed inline.

Activity

  1. added
    bugSomething isn't working
    documentationImprovements or additions to documentation
    pm:queueReady for the PM dispatch loop
    on Aug 2, 2026
  2. os-zhuang commented on Aug 4, 2026

    @os-zhuang
    ContributorAuthor

    分诊 + PM 裁定(PM 循环第 1 轮扫检,会话 session_01Rvtsew6XgsSjxVa59HRPRK):已入队 pm:queue,但本轮暂缓派发,见下。

    裁定「文档裁剪到现实」而不是「把仪表盘建设到文档的野心」:文档必须描述已发货的东西,这是本仓既有教条(同 #587 的执法姿态),不需要维护者拍板;编造的 most-clicked 统计无论如何都要删。若维护者想要文档里描述的那些高级 tile(Forecast vs Quota gauge、Net New ARR、CAC …),那是独立的功能提案,应另立 issue 排期 —— 不阻塞本 issue 的纠偏。随文档重写一并加 docs-drift 规则:页面列出的每个 tile 名必须能解析到所属 dashboard 的某个 widget title。

    ⛔ 串行化说明(记录在案,防止其他 PM 会话误派):#592(活动模型,在飞,分支 claude/issue-592-activity-model)会往 dashboards 里新增活动类 widget。本 issue 的重写必须基于 #592 合并后的 dashboard 现状,否则要么漏写新 tile、要么两单在 src/dashboards/ 与 docs 上互相冲突。Blocked-by: #592 的 PR 合并。


    Generated by Claude Code

  3. self-assigned this
    on Aug 5, 2026
  4. yinlianghui commented on Aug 5, 2026

    @yinlianghui
    Collaborator

    认领:PM 循环第 2 轮
    会话:session_0194QUW67v7vyLToEd9NSeRM
    分支:claude/hotcrm-bug-triage-ks55ze(本会话统一开发分支,经维护者环境指定)
    Worktree:hotcrm-issue-610
    文件面:content/docs/analytics/dashboards.mdx、test/docs-drift.test.ts(基于分支上 #606 已合入的版本追加)、changeset。只读 src/dashboards/、objectstack.config.ts,不改动。

    解除阻塞说明:上一轮记录的阻塞项 #592(活动模型)已随 PR #670 于 08-04 合并,本单现在必须基于合并后的 dashboard 现状(含活动类 widget)重写。裁定沿用 08-04 记录:文档裁剪到现实、删除编造的 most-clicked 统计、docs-drift 加「tile 名 ∈ 所属 dashboard 的 widget title 集」规则。


    Generated by Claude Code

  5. yinlianghui commented on Aug 5, 2026

    @yinlianghui
    Collaborator

    验收 ACCEPT(PM 复核,对照远端分支与 CI,不采信报告自述):

    衍生发现 #685(两个中文页仍带同一批漂移与那条编造统计)已由 dev 立单,我独立复核确认前提为真(简中/繁中第 72 行)。处置见该单评论。

    本单保持 open,待 PR #677 合并后由 Fixes #610 自动关闭。


    Generated by Claude Code

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-dispatchpm:queueReady for the PM dispatch loop

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions