功能
这属于比较小众的功能……但是:许多俱乐部、协会和会所通过黑白球秘密投票来接纳新成员。此插件将该流程引入 Discourse:
- 位于
/ballotage的投票页面,配置好的组成员可在设定时间段内(默认为开始日 00:01 至结束日 23:59,可选自定义时间)投出最终一票——黑球或白球。 - 位于
/ballotage/manage的管理页面,供监督组和管理员使用:在投票进行期间查看谁已投票,投票结束后查看黑白球结果。 - 投票可以取消,然后定稿(结果和参与者列表将被不可逆地删除),最后从列表中移除。
- 一次仅允许一个投票,投票页面可选显示通知文本,内置英语和德语。
投票如何保持秘密
- 数据库存储谁投了票(不记录选择,不记录时间戳)以及两个匿名计数器——没有任何信息将成员与其选择关联起来。计数器递增时不会触及
updated_at字段。 - 计数在投票结束前保持隐藏:如果在参与者列表旁显示实时计数,观察者可能会将新出现的名字与刚刚变动的计数器对应起来。
- 定稿操作会永久删除结果和参与者列表。
局限性:如果有人拥有直接数据库访问权限,并在投票进行期间监视计数器,仍有可能关联投票。这超出了插件的能力范围,需要通过组织层面的措施来处理。
配置
| 设置 | 描述 |
|---|---|
ballotage_enabled |
启用插件 |
ballotage_voting_group |
允许投票的组 |
ballotage_oversight_group |
可查看参与情况和结果的组(管理员始终可以) |
ballotage_oversight_can_manage |
允许监督组创建、取消、定稿和删除投票 |
ballotage_info_text |
显示在投票页面上的可选通知文本 |
ballotage_timezone |
开始/结束时间的时区(默认 Europe/Berlin) |
在侧边栏或菜单中添加指向 /ballotage 的链接,以便成员找到投票页面。
兼容性
Discourse 2026.7 及更高版本。自 2026 年 9 月起已在小型论坛的生产环境中运行。
欢迎反馈、错误报告及翻译——请在此处或 GitHub 上提出。

