Skip to content

spec: ChartAggregateSchemaChartGroupBySchema object 分支转 strictObject —— #5020 parse 接通后的收紧半边(#4001 后续批) #5583

Description

@os-zhuang

Blocked-by: #5020

Part of #4001(战役后续批;由 #5020 的 needs_decision 分析派生,按 #5068 方向 A 的两步走裁定同轮立单)。

背景

#5020 把 react 页发布闸门接上 ChartAggregateSchema.safeParse(lint 侧,在飞)。但实测两个 schema 均为 STRIP 姿态(chart.zod.ts:716z.object().superRefine():691 的 object 分支;仓内常驻 pin「still STRIPS — deliberate」自证),所以 parse 接通后未知键仍被静默吞掉 —— groupbydateGranularty 照旧丢弃。未知键闸门要成立,必须本单的 spec 侧收紧落地。过渡期缺口由 #5020 的 pin 测试 + 注释点名本单钉住。

范围

  1. ChartAggregateSchemaChartGroupBySchema 的 object 分支转 strictObject(战役标准件:具名 surface + 改名建议;两处的 [RETIRED]/别名纪律照战役惯例)。
  2. ⚠️ zod 4 联合分支消息塌缩:ChartGroupBySchema 是 union,strict 分支的 unrecognized_keys 会被塌成顶层 invalid_union 的「Invalid input」—— ChartAggregateSchema 有活的承载键却没有任何 parse:react 页发布闸门手写重推了它的规则,未知键从不检查(#4001 批 15 的 no gate 首例) #5020 的 dev 已实测。lint 侧 ChartAggregateSchema 有活的承载键却没有任何 parse:react 页发布闸门手写重推了它的规则,未知键从不检查(#4001 批 15 的 no gate 首例) #5020 会先落解包逻辑,本单落地时用样本验证具名消息真的到达作者。
  3. 三处记录同步(账本纪律「三处一起改或都不改」):chart.zod.ts 头部散文、chart.test.ts 两条「still STRIPS — deliberate」pin(本单落地时 pin 断言方向要反转)、台账行(ChartAggregateSchema 有活的承载键却没有任何 parse:react 页发布闸门手写重推了它的规则,未知键从不检查(#4001 批 15 的 no gate 首例) #5020 已把 no gateauthorable,本单再翻 strict 位)。.counts.md 生成物走 gen:strictness-ledger 整体重算。

需要战役/维护者先答的一个产品问题

无分组单值图是否受支持形状? 现状三方不一致:schema 与已发布 react-blocks 类型都声明 groupBy 必填,而 objectui 渲染器兑现其缺席(ObjectChart.tsx:640|| schema.xAxisKey 兜底),spec 自己的 chartAggregateCategoryKey 文档也描述了无分组单行情形。#5068 裁决的条款「渲染器兑现的键先声明后设闸」在此适用:

关联

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions