From ab7662b7f160fb4a3b5e06cf105a44ab957105a2 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Fri, 11 Sep 2026 22:02:00 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=96=B0=E5=A2=9E=E3=80=8A=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E8=AF=B4=E6=98=8E=E3=80=8B=EF=BC=88=E6=8C=89=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E8=AE=B0=E5=BD=95=E6=94=B9=E5=8A=A8=E4=B8=8E=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E9=A1=BB=E7=9F=A5=EF=BC=89+=20=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E5=8C=85=E9=9A=8F=E5=8C=85=E5=B8=A6=E4=B8=8A=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - docs/升级说明.md:dev_0.1.8 的升级须知——「个人+团体」项目必须补录团体名次 (旧版没有录入位置、团体分是拿个人名次顶替算的)、单位总分为何会变化、 奖牌三层开关、即刻重算的动作清单、5 分钟核对表 - README 文档地图与《部署指南》3.4 加入口 - deploy/prepare-extra.mjs:把升级说明一并平铺进安装目录(升级说明.txt) - debug/使用说明/:同步全部用户文档(含刷新旧的使用说明.txt 快照) --- README.md | 1 + deploy/prepare-extra.mjs | 2 + docs/升级说明.md | 85 ++++++++++++++++++++++++++++++++++++++++ docs/部署指南.md | 2 + 4 files changed, 90 insertions(+) create mode 100644 docs/升级说明.md diff --git a/README.md b/README.md index e1a7fad..380d444 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ ## 文档 +- [升级说明](./docs/升级说明.md):**每次升级前先看**——这一版改了什么、升级后要补做什么、分数/奖牌为什么变化、5 分钟核对清单 - [上线检查清单](./docs/上线检查清单.md):比赛当天照着走一遍的核对表(含交付物、目标机、首次启动、赛事项目包与规则包导入、大屏与公告、备份与回退) - [部署指南](./docs/部署指南.md):运行环境、安装与首次启动、端口与配置、大屏接线、赛事项目包导入/切换、备份恢复、故障排查 - [使用手册](./docs/使用手册.md):角色权限、各功能页面的操作步骤、大屏端使用、常见操作问题 diff --git a/deploy/prepare-extra.mjs b/deploy/prepare-extra.mjs index 6e73043..88f6d72 100644 --- a/deploy/prepare-extra.mjs +++ b/deploy/prepare-extra.mjs @@ -18,6 +18,8 @@ mkdirSync(extraDir, { recursive: true }) const docsToStage = [ { target: '使用说明.txt', sources: ['使用说明.txt', '使用手册.md'], label: 'usage doc' }, { target: '报名名单导入规范.txt', sources: ['报名名单导入规范.md'], label: 'entry import spec' }, + // 升级须知也要随包走:现场覆盖安装前能在安装目录里先看到「这一版改了什么、要补什么」。 + { target: '升级说明.txt', sources: ['升级说明.md'], label: 'upgrade notes' }, ] for (const doc of docsToStage) { const source = doc.sources.map((name) => join(root, 'docs', name)).find((file) => existsSync(file)) diff --git a/docs/升级说明.md b/docs/升级说明.md new file mode 100644 index 0000000..94e7dc7 --- /dev/null +++ b/docs/升级说明.md @@ -0,0 +1,85 @@ +# 升级说明 + +> **按版本倒序,最新在最上面。** 每次升级前先看「要升到的那一版」这一节,照着做完再开赛。 +> 数据、配置、规则包都在用户数据目录(`%LOCALAPPDATA%\ScoreboardConsole\`),**覆盖安装不会丢**,见《部署指南》3.4 / 3.5。 +> 常规升级流程(停服务 → 覆盖安装 → 启动 → 核对)见《部署指南》3.1 / 3.4。 + +--- + +## dev_0.1.8(当前版本) + +### 一句话 + +修掉了一个**会多算单位总分**的计分缺陷;奖牌改成可以按小项、按通道开关;报名名单认人改成**以证件号为准**。 + +### ① 升级后必须补的一件事(本版唯一需要人工补录的地方) + +**「团体引体向上」这类「个人+团体」项目的团体名次,要到成绩录入页补录一遍。** + +原因是旧版**没有录团体名次的地方**:这类项目的团体分是拿**个人名次顶替**着算出来的(所以会算多)。本版改成从「团体名次」区块读,**没录就是 0 分**。 + +- 补录位置:**成绩录入**页 → 选中该小项与组别 → 表格下方 **「团体名次」** 卡片 → 按单位填名次 → **保存团体名次**(留空 = 清空该单位;名次允许并列;个人名次不受影响)。 +- 如果某单位不参加该项,留空即可。 +- **不想手填的替代方案**:把该小项的团体通道从「手动名次」改成「按队内平均」(**基础数据 → 计分通道**),系统会按每队成员成绩自动算团体名次。 + **两种口径二选一,由赛会规则决定**——「团体引体向上」这条现在还挂着旧模板(手动名次),要按领导定的口径确认一次。 + +### ② 分数会变,这是对的(不是坏了) + +- **单位总分**:旧版在「个人+团体」项目上会把**个人**名次当成**团体**名次、按团体表再发一次分。实测某队在成绩没改的情况下,第一次发布 45 分、再点一次发布变 85 分。 + 本版已修正:**同一份数据无论发布几次,结果完全一致**。 +- 所以升级后如果你之前录过并发布过这类项目,**单位总分会出现变化**(变小是正常的,那是修正后的值)。按 ① 把团体名次补录完,再核对一次即可。 +- **个人积分不受影响**(个人通道的算法没变);奖牌数可能变化(见 ③)。 + +### ③ 现场会看到的新东西 + +**奖牌可以开关了**(三层,从粗到细): + +1. 小项级:**基础数据 → 大项 / 小项 → 编辑小项**,「选项」里有 **「该项启用奖牌结算」**(**默认勾上**)。取消 = 这个小项只出积分、一块牌都不发; +2. 通道级:**基础数据 → 计分通道**,表里多了 **「奖牌通道」**列,两个开关——**「发奖牌」**(这条通道的名次发不发牌)与 **「个人奖牌并入单位金牌榜」**(个人项目拿的牌算不算进单位金牌总数); +3. 名次仍然只发给**前三名**(并列口径不变)。 + +> ⚠️ 迁移默认把三个开关都设成**开**,也就是和升级前一致,不会让既有小项突然掉牌。要改哪个小项,按赛事规则逐个去关。 + +**成绩录入页多了「团体名次」卡片**——只在配了「团体名次 = 手动名次」通道的小项上出现;纯团体项目(篮球等)和「按队内平均」的项目不会出现,那是正常的。 + +**报名名单认人改成以证件号为准**:匹配顺序 **证件号 → 号码布 → 姓名 + 单位**。同一份表里同一证件号出现多次 = 同一个人报多个组别(会给提示,不再报错);只有「同证件号 + 同一个小项同一个组别」才会进冲突面板问你保留哪一条。 + +**下面这些动作现在会立刻重算并刷新大屏,即使管理员开了「延迟结算」**: +撤销发布 / 作废单条成绩 / 批量退赛·恢复·移出报名 / **报名名单导入改了状态**(例如把某人改成退赛)。 +「延迟结算」只影响**发布成绩**这一件事(不因一批成绩跳动榜单),不会让退赛、作废这类「谁还算数」的改动被拖着。 + +### ④ 其它修复 + +- 管理员**撤销会话 / 停用账号 / 改密码**后,那台机器上还开着的实时连接会立刻断开,不再继续收数据; +- 访客(guest)身份收不到系统配置类的实时推送; +- 导出一份不存在的小项 / 单位、手填名次填 0 或负数、性别或年龄填了非法值 → 现在是**明确的错误提示**,不再是「服务端异常」; +- **示例数据模式**(后端连不上时的演示模式)下,批量停用 / 批量或单条彻底删除会被拦下并提示,不会假成功; +- **服务管理窗口**:显示器短暂只剩一块(拔线 / 电视待机)之后,再把扩展屏插回来会**自动恢复全屏**,不用重启程序; +- **自定义大屏模板**:嵌套过深或体积过大的模板会给出明确提示,不会让大屏白屏。 + +### ⑤ 升级后 5 分钟核对 + +1. 打开服务管理窗口的**运行日志**,看有没有那两行自愈记录(`检测到通道名次为空但已有已发布成绩…` / `一次性全量重算完成…`),**这是正常的**; +2. 刷新积分大屏 / 管理面板:**奖牌榜不是全 0**; +3. **单位总分与升级前一致**(除了 ② 说的「个人+团体」项目); +4. 打开一次成绩录入页,确认该录团体名次的小项上有**「团体名次」**卡片; +5. 打开一次**基础数据 → 大项 / 小项**,确认「该项启用奖牌结算」是按赛事规则勾的; +6. 用《上线检查清单》从头过一遍。 + +### ⑥ 详细说明在哪 + +| 想了解 | 看 | +| --- | --- | +| 奖牌开关怎么用 / 什么时候关 | 《使用手册》10.2(小项)、10.4(计分通道) | +| 奖牌榜没牌 / 金牌数不对怎么查 | 《常见问题》Q94 | +| 团体名次怎么录 / 为什么没有那一块 | 《使用手册》4.9、《常见问题》Q95 | +| 升级后奖牌榜是空的 | 《部署指南》3.4、《常见问题》Q96 | +| 名单导入怎么认人、怎么填 | 《报名名单导入规范》 | +| 延迟结算下哪些动作会立刻生效 | 《使用手册》4.8、《常见问题》Q91 | +| 历史成绩版本重放与团体名次 | 《常见问题》Q97(已知限制) | + +--- + +## dev_0.1.7 及更早 + +本文件从 **dev_0.1.8** 起维护;更早版本的改动不再逐版补记。若需要,可在《使用手册》与当时的发布记录里查。 diff --git a/docs/部署指南.md b/docs/部署指南.md index fb0035c..a3cbeac 100644 --- a/docs/部署指南.md +++ b/docs/部署指南.md @@ -118,6 +118,8 @@ deploy\build.bat - 迁移的**旧目录只认 `<安装目录>\data`**。如果你已经把数据迁到默认位置、之后又想改成 D 盘等其他目录,Console **不会**自动搬运:请先停服务,把 `%LOCALAPPDATA%\ScoreboardConsole\data` 整个目录复制到新路径,再改 `server.dataDir` 并重启 Console。 > 升级到本版本后第一次启动,请打开 Console 的「运行日志」确认是否有迁移记录,并核对管理端里的赛事/账号数据是否完整。 +> +> **升级前先看 [《升级说明》](./升级说明.md)**:里面按版本写了「这一版改了什么、升级后要补做什么、分数或奖牌为什么会变化」。本版(dev_0.1.8)有一条**需要人工补做的事**(「个人+团体」项目的团体名次)。 **升级后奖牌榜可能短暂是空的(正常,会自己补齐)**