交付与所有权
提成或佣金数据如何做到仅特定账号可见?
提成、佣金属于敏感经营数据,单靠"页面隐藏"不够,必须从数据库查询、接口返回、前端展示三层一起做隔离,再叠加操作留痕和计算口径版本化。滚水科技在做销售管理、分销和经销商系统时,基本都按这套思路落,能把"谁能看到谁的数"控制得很细。
具体做法上,我们一般把权限拆成三层:
- 数据范围(行级):每条提成记录都打上所属销售/团队/区域/合伙人标签。查询时按当前登录账号的可见范围自动过滤,普通销售只能看自己的,经理能看团队的,财务和老板看全量。这层最好在 ORM 或服务层统一拦截,不要让业务代码自己 where。
- 字段可见(列级):同一张提成单,销售可能只看到比例和到手金额,经理看到完整明细,财务看到税前税后和发放状态。字段级权限按角色配置,接口返回前过滤,前端只渲染拿到的字段——避免把敏感字段先发到前端再隐藏。
- 页面与操作:菜单、按钮、导出、打印按角色控制。导出 Excel 这种容易"一锅端"的入口,单独申请权限,而且必须留痕。
口径方面,提成规则经常调整,建议规则版本化保存:每次变更生成新版本,历史单据按当时的版本计算,避免"今天调了一个系数,去年的单据金额全变了"这种事故。每次发放走审批流,结果写入流水表,前后端都只读流水,不重新计算。
审计这块容易被忽略:谁在什么时间查看了哪些提成数据、导出了什么文件、修改了哪条规则,都要进操作日志,且日志单独存、不可改。重要数据导出建议加水印(账号+时间戳),万一外泄能溯源。
落地节奏上,我们一般先和客户把组织架构、汇报关系、谁该看到谁的数列成一张矩阵表,再据此设计角色和数据范围;上线前用真实数据做几轮"换账号登录"演练,确认不串号、不越权,再正式开放。