kate522
c1c21faf7e
fix(payment): 生成数量限定为 1-1000 整数并移除 spinner 死属性
生成数量不再受 step 网格约束,只要求「正整数且不超过 1000」即 (0, 1000]。
- 删除 spinner() 产出的 data-min / data-max / data-step:这三个属性在本
项目全仓**没有任何消费方**(逐文件检索确认),属死代码;原生 min/max/step
又会让条件显隐行触发 HTML5 校验并静默阻止提交(上一轮已定案)。参数随之
收敛:spinner(string $name, int $value, string $unit),3 处调用点同步。
- 保留 step="any":省掉它 type="number" 会退回默认 step=1 的整数网格,把
非整数输入判为非法,同样触发隐藏行的静默拒绝。
- 生成数量的范围收敛为 handle_add() 里的单一区间判定
`$auto_num < 1 || $auto_num > 1000`,一次覆盖 非数字 / 0 / 负数 / 超上限,
不再依赖下层静默夹取,也不另设分支;字段说明补上「1 - 1000 的整数」。
验证:
- 容器内真实 HTTP 边界:0 / -5 / 1001 / abc 全部拒绝,1000 / 1 / 3.9 通过
(3.9 按整数截断)。其中 1000 这个上边界用「type=vip + 空时长」探到 ——
数量校验通过后即报「请填写兑换会员参数」,零副作用,未真的生成 1000 张。
正向生成 3 张后已清理,表回到原始 10 条。
- 渲染出的表单内原生约束属性 0 个、data-* 0 个;4 个 number 输入全部 step="any"。
- 契约测试:把「spinner 输出 data-*」的断言反转为「不得出现」,新增签名与
调用点实参断言、(0,1000] 区间断言、字段说明断言;整文件属性扫描前先剥
PHP 注释,否则文档注释里的 type="number" 字面量会污染计数。
- 负向对照:重新加回 data-min / 退回 !$auto_num / 签名加回 step 参数,
三例均精确落到对应用例(各 5 pass / 1 fail),还原后字节一致、6/6 通过。
- tests/admin 四套件 24 pass / 0 fail;php -l 通过;两副本 SHA256 一致。
2026-09-17 13:38:40 +08:00
..
2026-09-17 13:38:40 +08:00
2026-09-16 17:23:56 +08:00
2026-08-17 21:47:40 +08:00
2026-09-06 10:47:24 +08:00
2026-09-05 20:48:18 +08:00
2026-08-18 16:06:47 +08:00
2026-09-16 19:18:28 +08:00