Skip to content

service.dashboard 的 Agent 全局筛选器绑定 owner_id,但 case_metrics 未暴露该维度——筛选器是否静默无效需浏览器实测 #966

Closed

Description

@yinlianghui

来源:#948 实施过程的越界发现(dev 因 GitHub search API 限流未能自行立单,转交 PM 检索后代立;关键词查重:owner_id filter / globalFilters / Agent 筛选 / case_metrics dimension,零同题命中)。

事实(静态读码)

src/dashboards/service.dashboard.ts:76-83 声明了仪表盘级 globalFilters:field: 'owner_id'、label: 'Agent'。但该仪表盘全部十个 widget 绑定的 case_metrics(src/datasets/case.dataset.ts)只声明五个 dimension:status / priority / origin / type / created_date——未把 owner_id 暴露为维度。

content/docs/analytics/dashboards.mdx:117 据此写着 "Controls: Agent and Priority filters"。

为什么只立观察不排修

该筛选器究竟真能过滤(引擎在 dataset 层之外解析 field)还是静默无效(选了 Agent 没有任何变化),静态读码无法判定——需按 dogfood 流程浏览器实测。今天没有用户可见的错误结论可写:若实测无效,修法在元数据(dataset 加 owner 维度或删筛选器)+ 文档两面;若有效,#924/#939/#948 三轮写死的「case_metrics 无 owner 维度」相关表述反而要收窄措辞。

与 #948(已修,PR #955)的页面断言互斥;与 #965(cubes 整页)相邻但归属不同层。

Refs #948 #965

Activity

  1. added
    metadataDeclarative metadata — schema, security posture, UI surfaces
    on Aug 6, 2026
  2. added
    pm:queueReady for the PM dispatch loop
    and removed on Aug 25, 2026
  3. huangyiirene commented on Aug 25, 2026

    @huangyiirene
    Collaborator

    定级(首触)→ pm:queue。前提完整成立,且这是展品里最不该有的形状。

    按本席常设授权定级。finding 同笔摘除。

    前提对 origin/main @ 6ed7b8d 重测

    src/dashboards/service.dashboard.ts:51-55
        globalFilters: [ { field: 'owner_id', label: 'Agent', type: 'lookup', … } ]
    
    src/datasets/case.dataset.ts — dimensions:
        :16 status   :17 priority   :18 origin   :19 type   :20 created_date
        :24 resolved_article
        $ grep -c "name: 'owner" src/datasets/case.dataset.ts   →  0
    
    content/docs/analytics/dashboards.mdx:115
        **Controls**: Agent and Priority filters, and a one-minute refresh …
    

    行号相对卡片位移(:76-83 → :51-55),三条事实一条没变:筛选器声明了 owner_id,数据集没有这个维度,文档照着筛选器写了「Agent 筛选」。

    为什么晋级 —— 这不再是纯观察

    卡片当时判观察级,理由是「今天没有用户可见的错误结论可写」。那句话对文档成立,对产品不成立,而本车道的宪章正好卡在这里:

    样板演示的能力必须真实兑现(declared = enforced 在展品里双倍重要 —— 展品撒谎等于教每个照抄的 AI 撒谎)。

    如果实测证明筛选器静默无效,那么展品就在演示一个「声明了、运行时不兑现」的控件,而文档还替它背书。这正是轴③(防 AI 写元数据犯错)最锋利的那一刀 —— 照抄的 AI 会学到「dashboard 上可以挂一个数据集不支持的 globalFilter」。所以判据不是「有没有人写错文档」,而是「展品有没有在示范错误写法」。

    ⚠️ 先测量,后修 —— 这是本卡的第一步,不是可选项

    卡片说得对且不能跳过:静态读码判不了引擎是否在 dataset 层之外解析这个 field。两种结果的修法完全相反:

    浏览器实测结果 处置
    筛选器静默无效(选了 Agent 没有任何变化) 元数据两条路二选一:case_metrics 加 owner 维度,或删掉这个 globalFilter;⛔ 同时修 dashboards.mdx:115 的措辞。加维度是能力面,删筛选器是收敛 —— 拿不准升决策箱
    筛选器有效(引擎在 dataset 之外解析) ⛔ 不改元数据。反而是 #924 / #939 / #948 三轮写死的「case_metrics 无 owner 维度」相关表述要收窄措辞

    ⇒ 派发时这是一张带浏览器门的卡,和 #734 半 1 / #760 同类。若本轮的实时控制台机位(云卡 session_018QbVyUmsKapKUAcWtfwSeB)还在,把这一读顺手折进同一次 rig 最划算 —— 折的是测量,不是修法,本卡的 PR 与那两张各自独立。

    ⚠️ 若实测发现这是平台层面的行为缺陷(例如引擎接受了一个无对应维度的 globalFilter 却不报错),那就是上游卡:按宪章立到 objectstack,hotcrm 侧同笔转 pm:blocked + Blocked-by: 回链,⛔ 不在展品里绕行。

    面:src/dashboards/service.dashboard.ts / src/datasets/case.dataset.ts / content/docs/analytics/dashboards{,.zh-Hans,.zh-Hant}.mdx。相邻不混:#965(cubes 整页)属另一层。


    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

No one assigned

    Labels

    metadataDeclarative metadata — schema, security posture, UI surfaces

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions