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