跳到主要内容
版本:Current

竞选规则与名簿

票数规则​

表 campaign_rule_weights:(campaign_id, department, position) → weight。

匹配时对部门和职位做 TRIM,要求与用户资料完全相等(不是模糊匹配)。无行则 DEFAULT_CAMPAIGN_VOTE_WEIGHT = 1。

创建竞选时表单至少一条规则。规则 JSON 解析与去重见 lib/campaign-rule-form-json.ts。

保存规则后应走权重同步:已有 ballots.weight 更新;若该票已有 ballot_allocations,按新总票数比例缩放(lib/ballot-allocation-scale.ts)。

固定部门 / 职位选项​

下拉默认值在 lib/user-org-options.ts:

  • 部门:文娱部、事务部、技术部、市场部、影视部、主席团、宣传部、职发部
  • 职位:部长、副部长、主席

库中或规则里多出来的值会附在列表后半。规则字符串必须与用户资料一致,例如不要一个写「技术部」、一个写「Tech」。

候选人名簿​

  • 每行一个展示名;空行忽略。
  • 同场去空白、忽略大小写后不能重复。
  • 投票和计票都针对 campaign_candidate_options.id。
  • 全量替换:先 DELETE 再 INSERT。关联分票级联删除。

不要依赖的开关​

candidateCanVote / candidateHasVote 服务端恒为 false。code / candidateCode 仍查重,但没有加入页读取它们。