添加新功能
改投票规则
优先阅读:
lib/campaign-voter-weight.tslib/ballot-allocation-scale.tsapp/(dashboard)/admin/campaigns/rule-actions.tsapp/(dashboard)/campaigns/[id]/vote/actions.ts
保持不变量:已提交选票的分票合计 = ballots.weight;提交时合计必须等于当时权重。
改候选人来源
当前是文本名簿。若改回用户账号型候选人,必须同时改 campaign_candidate_options、ballot_allocations、结果页聚合和同步函数。不要只改 UI。
改登录
看 auth.ts 与 lib/user-login-gate.ts。生产不要打开空表白名单。新增回调 URL 时同步 Google Cloud 客户端。
改用户导入
解析:lib/user-import-table.ts;写入:admin/users/actions.ts。更新 public/templates/users-import-template.csv。
新页面清单
- 在对应
page.tsx用auth()或requireAdminSession/requireAdminOrModeratorSession。 - 写操作放 Server Action,重复校验角色与
ongoing。 revalidatePath覆盖列表、投票、结果、选票管理。- 需要侧栏时改
app/layout.tsx,同时补服务端权限。 rg "表名|列名"确认 SQL 调用点。
测试缺口
仓库目前没有测试文件。改计票或权重时至少手动:无规则默认 1 票、规则变更后已投缩放、名簿替换后分票消失、admin 拒绝投票。