其他深度

Odoo 徽章为什么不能“谁想发就发”:授权规则、前置徽章与月度限额链路讲透

如果徽章随便发,激励体系很快就会失真。Odoo 用授权人规则、前置徽章和月度发放上限,把“授予荣誉”这件事从社交动作变成了可治理机制。

其他
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 5 阅读

先说结论

徽章系统一旦没人管,很快就会沦为“互相送礼物”的表面互动。Odoo 在 Badge 里最值得看的不是 UI,而是它怎么判断谁能发、发之前需要拥有什么、一个月最多能发多少。

第一层:授权规则为什么要分 everyone、users、having、nobody

rule_auth 的四种模式其实在回答四种治理问题:是否全员可发、是否只允许指定人、是否必须先拥有某些徽章、是否根本不开放人工发放。这不是表单字段太多,而是荣誉体系必须先定义“授权来源”。

第二层:前置徽章机制到底在防什么

rule_auth == having 时,_can_grant_badge() 会检查当前用户是否已经拥有要求的徽章。这个设计很像“导师资格”或“资深员工资格”的隐式建模:不是每个人都能认证别人,必须先被体系承认。这样能有效降低互刷荣誉的可能。

第三层:月度限额为什么和权限同等重要

rule_maxrule_max_numberstat_my_monthly_sending 配合后,_remaining_sending_calc() 才能算出当前用户还剩多少发放额度。也就是说,就算你有资格发,也不代表你能无限发。权限解决的是“能不能”,限额解决的是“能发多少”。

第四层:为什么系统还要统计 granted_count 与 unique owners

徽章不是简单的一次性动作,后续还要看总授予次数、覆盖的独立用户数、当前月数据等。否则你很难判断一个徽章到底是稀缺认可,还是已经泛滥。源码里的统计字段,本质上是在给激励治理提供仪表盘。

第五层:这套机制最适合哪些场景

当你想用徽章鼓励分享、审核、知识沉淀、培训辅导时,这套机制尤其有价值。因为这些事情既需要社交激励,又怕被滥发稀释。Badge 的治理层,就是在这两者之间做平衡。

最容易误解的三个点

  • 误区一:徽章越容易发越能活跃社区。短期可能热闹,长期往往会失去公信力。
  • 误区二:有权限就不用限额。实际中最容易失真的是“有权限的人发太多”。
  • 误区三:统计只是展示。没有统计,你就无法治理徽章稀缺度。

实战上怎么用更稳

  • 设计徽章时,先想清楚它是开放鼓励型,还是资格认证型。
  • 涉及晋升、导师、评审等角色时,优先考虑 having 模式。
  • 如果某个徽章价值高,别忘了同时设置限额,而不只设置授权人。

最后总结

徽章系统的难点从来不是发出去,而是发出去之后还能不能被信任。Odoo 把授权、前置资格和限额放在一起,正是在守住这条底线。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。