02 · 积分与排名规则 ★
所属:运动会积分榜系统 · 开发文档集
版本:v0.1(讨论稿) · 2026-09-09
上游:README · 相关:04-数据模型、09-测试策略
本篇是系统的心脏:规则一变,数据模型与积分引擎都要跟着改,所以必须先定稿。
1. 总分构成
对应积分流水表 score_ledger 的三种来源类型:result / record_bonus / adjustment。
2. 成绩积分
- 名次积分表由「积分模板」定义,可被大项引用,也可被单个小项覆盖。
- 未取得名次(未完赛、未录取、弃权、DQ)→ 0 分。
- 小项权重
multiplier:普通项目 1,团体/接力/球类项目 2(见 D2)。
2.1 默认名次积分表
| 名次 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
| 积分 |
9 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
2.2 并列名次(三种口径,系统可配置)
| 模式 |
例:两人并列第 2(积分表 9/7/6/5) |
说明 |
skip 顺延 ✅默认 |
两人各 7 分,无第 3 名,下一名是第 4 名得 5 分 |
国内运动会最常见 |
average 平均 |
两人各 (7+6)/2 = 6.5 分,下一名第 4 名得 5 分 |
部分规程采用 |
higher 就高 |
两人各 7 分,下一名第 3 名得 6 分 |
少见 |
2.3 特殊情形
| 情形 |
处理 |
| 报名不足 8 人 |
按实际名次取分,空缺名次分值作废 |
| 弃权 / DNS / DSQ |
0 分,且不占名次(名次顺延) |
| 团体项目积分归属 |
计入所属单位总分;个人积分榜不计入成员个人(待 D3 确认是否要给成员各记一份) |
| 一人多项参赛 |
各项独立计分,个人总分累加 |
| 积分手工覆盖 |
允许,但必须填理由并记入审计 |
3. 破纪录加分
| 项 |
规则 |
| 加分档位 |
赛会纪录 +2 / 市级 +5 / 省级 +8 |
| 同时破多级 |
取最高档,不累加(可配置为累加,见 record_bonus_mode) |
| 是否随权重翻倍 |
不翻倍:破纪录加分与成绩积分相互独立 |
| 确认流程 |
系统自动提示「疑似破纪录」→ 裁判长确认 → 生成加分流水 → 更新纪录库 |
| 撤销 |
支持作废该条破纪录记录,加分流水一并作废 |
4. 人工调整(扣分 / 补分)
- 字段:单位、分值(可正可负)、类别(处罚 / 补分 / 更正)、理由(必填)、操作人。
- 支持作废(不物理删除),作废后总分自动重算。
- 典型场景:违反纪律扣分、跨单位联队积分拆分、漏录补分。
5. 排名规则
5.1 总积分榜排序键
5.2 奖牌判定
- 名次 = 1 → 金,= 2 → 银,= 3 → 铜。
- 并列第 1 → 两人各记 1 金,无银牌(与名次顺延口径一致)。
- 团体/球类项目是否计入奖牌榜 → 见 D3(建议计入)。
5.3 并列展示
- 名次相同则显示同一名次(如两个「2」),不强行拆开。
- 同分不同名次时按 tie-break 拆开,并在界面标注 tie-break 依据(便于解释给参赛单位)。
6. 积分流水原则(实现红线)
- 所有积分变化只追加、不修改;修改 = 作废旧流水 + 追加新流水。
- 总分永远是
SUM(未作废流水),禁止使用「总分字段 += 分数」这类原地累加。
- 每条流水必须可溯源到:成绩 / 破纪录 / 人工调整。
- 排名缓存(
standings_cache)永远可由流水重建,缓存只是加速,不是真相。
7. 待确认(🔴)
| 编号 |
问题 |
建议默认 |
| D2 |
积分表分值 / 是否双倍 / 破纪录加分档位 |
见第 2、3 节 |
| D3 |
并列奖牌、个人积分榜、团体成员是否各记个人分 |
见第 5 节 |
| — |
是否存在「同一小项每单位限报 2 人」这类报名限制 |
建议由报名导入时校验,不进积分引擎 |
附录 · 积分计算示例
示例 1:男子100米,8 人参赛,无并列
| 名次 |
单位 |
成绩 |
积分 |
| 1 |
第一分公司 |
11.58 |
9 |
| 2 |
机关本部 |
11.92 |
7 |
| 3 |
第二分公司 |
12.01 |
6 |
| … |
… |
… |
… |
| 8 |
第六分公司 |
13.40 |
1 |
示例 2:两人并列第 2(skip 模式)
| 名次 |
单位 |
成绩 |
积分 |
| 1 |
A |
11.58 |
9 |
| 2 |
B |
11.92 |
7 |
| 2 |
C |
11.92 |
7 |
| 4 |
D |
12.01 |
5 |
| 5 |
E |
12.10 |
4 |
示例 3:4×100米接力(双倍)+ 破赛会纪录
| 项 |
分值 |
| 第 1 名成绩分 |
9 × 2 = 18 |
| 破赛会纪录加分 |
+2(不翻倍) |
| 该单位合计 |
20 |