跳到主要内容
版本:Current

数据库结构

查询显式使用 public.*。Auth.js Neon Adapter 还会维护 accounts、sessions、verification_token 等表,与业务表共用同一 users。

关系概览​

业务表​

表关键列约束 / 说明
usersid, email, role, department, positionrole:admin / moderator / candidate / voter。登录按邮箱匹配
campaignsid, name, ongoing, defaultBallots, code, candidateCode, candidateCanVote, candidateHasVote主流程只用 id/name/ongoing;后几列遗留
campaign_rule_weightscampaign_id, department, position, weight每场按部门+职位配置票数
campaign_candidate_optionsid, campaign_id, display_name, sort_order名簿;删除选项会级联删分票
participationcampaign, user, isCandidate加入关系;名簿模型下 isCandidate 应保持 false
ballotsid, campaign, voter, weight(campaign, voter) 唯一;weight 为快照
ballot_allocationsid, ballot_id, candidate_option_id, amount(ballot_id, candidate_option_id) 唯一;amount > 0;两外键 ON DELETE CASCADE

已删除的历史表​

迁移 003、004 去掉 voter_ballot_weights、position_vote_defaults。票数只以本场 campaign_rule_weights 为准。

没有完整建库脚本​

001–007 假定已有 Auth.js 表和早期 campaigns / participation / ballots。新库请从备份恢复后再跑增量迁移。