导读(3行收益):收银员改了个价、退了笔单、删了笔账,事后想查查不到:谁改的、什么时候改的、改前是什么值。本文给一套门店操作留痕做法:敏感操作识别、操作日志表、字段级留痕与对账审计,附关键 SQL。看完操作不再无痕。
一、操作为什么留不下痕
三个高发问题:
- 只记录最终结果:改完的价格覆盖了原值,改前是多少查不到;
- 日志太粗:只知道"改了订单",不知道改了哪个字段;
- 日志随便清:想审计时记录早就被删了。
根源是没区分敏感操作,日志也没有字段级快照。
二、哪些操作必须留痕
- 改价、退款、冲正、删除订单;
- 库存调整、盘点差异调整;
- 会员储值变动、权限变更;
- 收银员交接班。
避坑:只留痕改价——库存被谁动了查不到;所有操作都记——日志爆炸,真正重要的被淹没。
三、操作日志表怎么设计
CREATE TABLE `op_log` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`staff_id` BIGINT,
`action` VARCHAR(64), -- 改价/退款/库存调整
`biz_type` VARCHAR(32), -- 订单/库存/会员
`biz_id` BIGINT, -- 业务单号
`field_name` VARCHAR(64), -- 变更字段
`old_value` VARCHAR(255), -- 改前值
`new_value` VARCHAR(255), -- 改后值
`created_at` DATETIME
) COMMENT='敏感操作日志';
关键点:字段级留痕(改前/改后值);含操作人与时间。避坑:只记 action 不记字段值——还原不了现场;时间用前端传——伪造时间。
四、日志怎么写入
- 业务事务内同库写日志,与业务一起提交/回滚;
- 服务端取操作人(登录态),不信任前端传参;
- 时间用数据库当前时间。
避坑:日志独立于业务事务——业务回滚日志还在,账对不上;操作人取前端参数——可以冒充。
五、对账审计怎么做
- 按日汇总敏感操作清单;
- 与收银流水、库存流水对账;
- 异常操作(非营业时间、高频改价)标记告警。
避坑:不按日对账——发现问题已是月底;无告警规则——异常操作没人发现。
六、踩坑清单
- [ ] 不区分敏感操作;
- [ ] 只记结果不记字段值;
- [ ] 操作人取前端传参;
- [ ] 日志与业务事务分离;
- [ ] 日志可被随意删除;
- [ ] 不按日对账;
- [ ] 异常操作无告警。
七、工程落地建议
操作留痕建议按「敏感操作识别+字段级日志+事务内写入+按日对账+异常告警」落地。若团队用成型门店系统(如乔拓云门店系统)起步,重点核对敏感操作日志与对账审计是否可用。
八、复盘清单(可直接抄走)
- [ ] 是否定义敏感操作清单;
- [ ] 是否记录字段改前改后值;
- [ ] 操作人是否服务端取;
- [ ] 日志是否随业务事务提交;
- [ ] 是否按日对账;
- [ ] 是否异常告警。
结语
留痕不是多一张表,而是敏感操作要分清、字段要快照、写入要同事务、审计要按日跑。这几步做对,操作不再无痕。本文仅作技术分享,具体功能以各平台官方实时信息为准。