校验不该只有"通过/报错"
输入校验常见两种极端 ✗:要么一律拒绝 ✔(体验差 ✔),要么一律放过 ✔(脏数据进链路 ✔)。
**校验要分级** ✔:硬拦(不可继续)、软提示(可继续但告知)、仅记录(不打断但留痕)✔。
一、三级分类(按后果定)
| 级别 | 判据 | 处理 |
|---|---|---|
| **硬拦** ✗ | 违反安全/权限/计费边界 ✔ | 拒绝 + 明确原因 + 替代路径 ✔ |
| **软提示** ⚠️ | 可能影响质量但不致命 ✔ | 允许提交,界面提示(可继续 ✔) |
| **仅记录** ℹ️ | 轻微异常(多空格、混合编码 ✔) | 自动规范化 + 记日志 ✔ |
**判断标准** ✔:**"如果放过去,后果可承受吗?"** ✔
可承受 → 软提示 ✔;不可承受 → 硬拦 ✔。
二、软提示怎么写(最容易被做坏 ✗)
**要点** ✔:**说清风险 + 给选择 + 默认安全** ✔。
```
⚠️ 你上传的是扫描件,可能识别不准。
[继续提交] [改用可复制文本]
```
**反例** ✗:
三、仅记录这一级的价值
它把"用户习惯"变成数据 ✔:
**要点**:**仅记录不等于忽略** ✗ —— 它必须进日志与周报 ✔,否则等于没做 ✔。
四、三个反模式
五、一条判据
> 拿 10 类常见的"有点问题但能用"的输入 ✔,系统是**一律拒绝** ✔ 还是**分级处理** ✔?
> 一律拒绝,说明校验没有分级 ✗。