STUDIES / FIELD NOTE
把工资月结设计成状态机
为什么预估、确认与结算是产品状态,而不只是标签,以及它们如何防止工资错误被悄悄带过
- 状态机
- 工资管理
- 产品设计
这篇笔记会随着工作推进继续更新
月度工资通常被呈现为一个计算页面;现实中,危险的部分并不是算术,而是输入是否完整、是否经过检查,以及能否安全地把结果视为历史事实
门店工资助手通过明确状态来表达这种不确定性
预估有价值,但只是暂时结果
当考勤或调整尚未完成时,预估金额可以帮助操作人员了解进度,但它必须始终表现为暂定值;月结前导出的文件会标记为草稿,避免有用的预览被误认为最终记录
已确认意味着有人完成了输入
确认不能仅凭一个非零数字推断;每位员工的工资输入必须有效,并经过明确确认;缺失、无效或未确认的项目都会阻止门店结算
这样一来,准备状态就可以被计算;全门店视图能指出阻碍月结的具体工作,不再要求操作人员靠记忆判断哪些记录尚未完成
已结算建立历史边界
门店月结会冻结一个快照;之后的员工调动或门店变更不应重写这条记录;如果必须修正,解锁时需要填写原因,让状态转换保持可见,而不是静默改变历史
简化后的流程是:
预估 → 已确认 → 已结算 → 填写原因后解锁 → 已确认 → 已结算
每个箭头都是带有前置条件的产品操作;因此,同一个状态模型同时驱动界面文案、验证、导出、审计行为与测试用例
状态机无法解决什么
状态机无法保证输入正确,无法取代复核,也无法把演示软件变成工资权威;它能做的是防止未完成工作看起来像已经完成,并让影响重大的状态转换可以被理解
这是我对运营工具的标准:界面应该先揭示不确定性,再提供最终操作