Skip to main content
Version: Current

添加新功能

改投票规则​

优先阅读:

  • lib/campaign-voter-weight.ts
  • lib/ballot-allocation-scale.ts
  • app/(dashboard)/admin/campaigns/rule-actions.ts
  • app/(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。

新页面清单​

  1. 在对应 page.tsx 用 auth() 或 requireAdminSession / requireAdminOrModeratorSession。
  2. 写操作放 Server Action,重复校验角色与 ongoing。
  3. revalidatePath 覆盖列表、投票、结果、选票管理。
  4. 需要侧栏时改 app/layout.tsx,同时补服务端权限。
  5. rg "表名|列名" 确认 SQL 调用点。

测试缺口​

仓库目前没有测试文件。改计票或权重时至少手动:无规则默认 1 票、规则变更后已投缩放、名簿替换后分票消失、admin 拒绝投票。