大白话
同一屏上,上面说「可以装 1 个」,下面的按钮说「没有可安装的技能」且是灰的。
用户读到两句互相矛盾的话,不知道到底能不能装。
实测可达,不是边角
本机两个真实插件就是这个状态:receipts 与 session-report
(disposition="blocked" 且 installableCount: 1)。
具体表现:标题行「共 1 个技能,其中 1 个本版本可以装」,那一个被列进「会安装」段,
而底部确认键禁用、文案「没有可安装的技能」。
同形还出现在预算拒绝路径:!previewId 时按钮恒写「没有可安装的技能」,而 install 行照列。
判据在哪一层
「能装几个」这件事在同一屏上有两个来源(计数 / 按钮可用性),两者可以不一致。
修法应当让它们同源 —— 而不是把按钮文案改成另一句话糊过去。
Acceptance and named gates
- 计数、列表分段、按钮可用性与按钮文案由同一个判定派生。
- 断言的是用户能同时看到的两处,不是单独断某一处
—— 只断按钮或只断计数都杀不掉「两者不一致」。
- 判据 = 用
receipts 或 session-report 的真实结构造夹具,
断言「屏上不存在自相矛盾的两句话」;把两处判定拆回两个来源 ⇒ 必须红。
- 预算拒绝路径(
!previewId)同样覆盖。
出处
#784 的设计稿收口(PR #785)时,用上线代码 + 本机 46 个真实插件目录实跑发现。
已如实画进活稿的帧里,帧外标注为代码缺陷。修好后活稿那一帧要跟着改。
大白话
同一屏上,上面说「可以装 1 个」,下面的按钮说「没有可安装的技能」且是灰的。
用户读到两句互相矛盾的话,不知道到底能不能装。
实测可达,不是边角
本机两个真实插件就是这个状态:
receipts与session-report(
disposition="blocked"且installableCount: 1)。具体表现:标题行「共 1 个技能,其中 1 个本版本可以装」,那一个被列进「会安装」段,
而底部确认键禁用、文案「没有可安装的技能」。
同形还出现在预算拒绝路径:
!previewId时按钮恒写「没有可安装的技能」,而 install 行照列。判据在哪一层
「能装几个」这件事在同一屏上有两个来源(计数 / 按钮可用性),两者可以不一致。
修法应当让它们同源 —— 而不是把按钮文案改成另一句话糊过去。
Acceptance and named gates
—— 只断按钮或只断计数都杀不掉「两者不一致」。
receipts或session-report的真实结构造夹具,断言「屏上不存在自相矛盾的两句话」;把两处判定拆回两个来源 ⇒ 必须红。
!previewId)同样覆盖。出处
#784的设计稿收口(PR #785)时,用上线代码 + 本机 46 个真实插件目录实跑发现。已如实画进活稿的帧里,帧外标注为代码缺陷。修好后活稿那一帧要跟着改。