From b631418a85cf6469f4d48c8803e195361434f7b3 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Mon, 14 Sep 2026 02:40:56 +0800 Subject: [PATCH] =?UTF-8?q?chore(release):=20=E7=89=88=E6=9C=AC=E5=8F=B7?= =?UTF-8?q?=20dev=5F0.5.1=20=E2=86=92=20dev=5F0.5.2=EF=BC=88=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E5=99=A8=E7=B4=A0=E6=9D=90=E4=B8=8E=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E8=90=BD=E7=82=B9=E5=90=8C=E6=AD=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 本批代码内容就是 1b8a37f(分工作表报名模板 + 号码布判重 + 备份原子落盘), 这里只把它作为一个**能和上一批区分开**的版本发出去——上一批与它同名同版本号, `debug/` 里会被同名覆盖,现场两份包分不出来。 - `VERSION` 是唯一真相:`dev_0.5.1` → `dev_0.5.2` - 安装器素材重生成(`console/installer/art-gen/gen_art.py`):版本号是**烙在位图里**的, 所以必须重跑。实测**只有 `brand.bmp` 的 1x / 2x 两张变化,其余 92 张逐字节未变**; `art/version.txt` 同步成 `0.5.2`(构建期 `prepare-extra.mjs` 拿它和 `VERSION` 核对,对不上直接构建失败) - `console/package.json` 同步(构建期会按 `VERSION` 重写,这里是让仓库自洽,免得构建机 pull 撞冲突) - `docs/升级说明.md` 新增 **dev_0.5.2** 一节(① 分工作表模板 ② 号码布判重 ③ 备份原子落盘 ④ 升级后 5 分钟核对),并把「(当前版本)」标记从 0.5.1 节移到新节; 这一份是正源,`console/extra/升级说明.txt` 由 `prepare-extra.mjs` 从它生成(该目录 gitignore) 本地跑过一次 `node deploy/prepare-extra.mjs` 预检:`installer art version matches (0.5.2)` / `version dev_0.5.2 -> deploy/version.gen.bat` / `console/package.json version is 0.5.2`,退出码 0。 --- VERSION | 2 +- console/installer/art/1x/brand.bmp | Bin 316854 -> 316854 bytes console/installer/art/2x/brand.bmp | Bin 1267254 -> 1267254 bytes console/installer/art/version.txt | 2 +- console/package.json | 2 +- docs/升级说明.md | 38 ++++++++++++++++++++++++++++- 6 files changed, 40 insertions(+), 4 deletions(-) diff --git a/VERSION b/VERSION index 8c13cbc..8dc2039 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -dev_0.5.1 +dev_0.5.2 diff --git a/console/installer/art/1x/brand.bmp b/console/installer/art/1x/brand.bmp index 0520ea9f04be040aacd2c5a02118bc05889b0972..dfbec47038371ba4b84df2ab5b6b66942ca1ce1d 100644 GIT binary patch delta 387 zcmdnCT6o)P;SG24_&wEmfXG*i-&=zhh&I2@JI*8ug-n!% ztcNOBtd;!S>V!-;Z7((MKs_NpZT`*a<-3{q{j>$#RXAfT$63p7cI+@t~Afo-bL8U?F?kXH0tGpOBm?kqdO%?^(0x_-7 z-=sIoA1b}7X$O-8P#kDAkhGU!Y>Id3O!tAy0yQsc?~?+1zbV0WLS8UXc1~4%tfic{ z2GA7(n^!df)f9D25cSdI1KJU9qnPEc6Ko&?m3C*;W}58OI~n8^V2}WP?ff0zAfS7svx(O^Ct^gVBb1eV> delta 378 zcmdnCT6o)P;SG24_`NiEJ=J;qv;}-L`MlJ5Howk0&Lrfm!5gG65@9M8Vkj1FA`xaR zvDt-DgK6@c;)$}^0h0^E9Oamc0!*hCN6f8?pIIK$mh9oLE9k4ux7mwPiD~klvWX(* zGEwF-Ky&B z19Sy92WA>GO?K&>$OG{T&}?5VzRiw|CQOq>CrsXK!D!3W{B%D+n-Ki Hx#$D{B*b!U diff --git a/console/installer/art/2x/brand.bmp b/console/installer/art/2x/brand.bmp index 8592a9235fd4642f01c0197bcfb28f60b12825f6..ee5babc4e8a15ffa3d64e0c5a454e33bd96147ff 100644 GIT binary patch delta 951 zcmYjQSx*yD7|k80g--WU!jhC&pe>XxDg{##iHTr$S_-8?5d;j2Yyz^y7||%Q7`B=e zHPJ+kF+z;7!2JV##u%UUMIVeWyci?slkp6rU~*0~(>dSymiyhU^}yD8U}}RnQi+o( zqM}tPGAA&eJvKITpO9OSw zgZ1}@qw%4JmCF$z&Z7Z;o-5Dw7t4bdRWineSi19`=!w0tvN}Jl)|T;bvL(4Zwl+KP z=<0~C9czjQnM?|YNm2YXBj(e%4BT9oe`95QI9Q4t zXo>Fbkydu|2V*3>NC^@0w4Tzxx;wNw+C&FG<1<|lGZy}PT9#RfJbtqRrLNBnHdo}K z4BqC~9>ED7moWvT5FP+@0`@Jr*)IQ^rP1zcv&YCC2E0@A0muj(grN;g2!-+iXa5U8 zuUE2|Tw;b46YKTZ`aHHOy;vA8=8qXZzSjP7roY*#J1h)gS{{h$ zLWVq{FswnZ+d9+f!{*L+2ZlpsA)AJ`7tU+P$`q4qNKt^RPyz^-!ex-)F6m*NvQbZeXVZ``Q$KG)`8Sn_mKZ`&ympbV6Q3Q!5EKsBhL4rd0V F`vVt^9GL(B delta 867 zcmdnC#&_Eq--a!WCP$`kH(?Uk?s9~&i&e!}iyw%5H2FMKxgf|>jT?m2fg~3Yd8u=6 z4q}R7+3t6aQGrp*TZ0#a&00{GysRa&FDJlT zg9om!`zE6@qoS8OkDs;x(1HFsf&schKnIovTWpzFRvT>(bXTCB(02cij6k<(-)B@~ zl!N;P$Z%C+2P)kn}2)$1IAWXQHUa-sX!OORZQ>y!zj8r4&>m%S3skL zfU0mP31HdI_kmHLkq4W8pyax*j5>^XH2eL=E5G#}6JG6oZ20B%c$m}}@p}^J$a8`S zRcL_)3ksmBJaHxk#>sk2T!PvHzz6__ep!emBuJ4|@yRkNGfDtM%Uy*t%R_fXTQ)F? z7t|)L?J2B{c0f|NP6=q7G$dq!$tcQPrYYWKW_ir&j@)fiDw`5qk<|KW01XAH1tOqY zU|0jmR44WNSf^BH4PZi0$m7H?5WBHjCx?|o$Sv9jnRq5Oqz_7 z9hlhIfsO>K@|zxTgi&O29248-L|}}!n^-adF*6W@*sMUz2E^<@%mKulK+FZi+(66& Z#JoVv2gLk9EC9rUKrFP~#8Q|^765Zn0w(|f diff --git a/console/installer/art/version.txt b/console/installer/art/version.txt index 4b9fcbe..cb0c939 100644 --- a/console/installer/art/version.txt +++ b/console/installer/art/version.txt @@ -1 +1 @@ -0.5.1 +0.5.2 diff --git a/console/package.json b/console/package.json index 360de96..5db7025 100644 --- a/console/package.json +++ b/console/package.json @@ -1,7 +1,7 @@ { "name": "scoreboard-console", "productName": "Scoreboard Console", - "version": "0.5.1", + "version": "0.5.2", "private": true, "author": "AskaEth", "description": "赛事积分榜 · 桌面宿主:守护 Go 服务端并把大屏投到扩展屏", diff --git a/docs/升级说明.md b/docs/升级说明.md index 32c9f32..3ac80db 100644 --- a/docs/升级说明.md +++ b/docs/升级说明.md @@ -6,7 +6,43 @@ --- -## dev_0.5.1(当前版本) +## dev_0.5.2(当前版本) + +### 一句话 + +**没有数据迁移,升级后不用重配任何东西**:报名模板新增「分工作表」两种(一个小项组别再挤在一张总表里,填表不容易串行);修好了「同一个人报多个项目被误判成号码布重复、整块拦下」;自动备份加固——备份写到一半时关程序、或备份失败,都不会在备份目录里留下半截文件。 + +### ① 新增:报名模板支持「一个小项组别一张工作表」 + +- 「基础数据 → 报名导入」的「下载模板」现在有四个按钮:**中文表头**、**英文表头**(这两种还是**一份总表** CSV,全部报名挤在一张表里,与升级前完全一样),以及新的 **分工作表 · 中文表头**、**分工作表 · 英文表头**(XLSX)。 +- 后两种由系统按当前赛事**已配好的小项 × 组别**生成:**一个小项组别一张工作表**,工作表名就是「小项名称@组别名称」(例:`100 米跑@男子组 30岁以下`)。填表的人不用在一张大表里反复抄小项名与组别名,也就抄不串了;收上来直接导入,不用再拆。 +- **导入时工作表名和表内的小项 / 组别列都认**:两者说的是同一个项目就照常导入;**说法不一致会把那张表整张拦下、并指出是哪一张**,不会闷头按其中一个算。 +- 小项名称、组别名称里**不能再用 `@`(含全角 @)**:它是工作表名的分隔符,写进名字会让「小项@组别」拆不开。新建 / 改名时会当场拦下并说明原因;**规则包里名字带 `@` 的**这类写法仍能导出、也仍留在库里,只是**不能再导入**;库里已经存在的带 `@` 名字照旧能用,只是**不会出现在分工作表模板里**(这种名字拼不出合法的工作表名)。 +- 原来那种单表 CSV 导入(中文表头 / 英文表头两套)**一个字没改**,手上已有的表格照常导入。 + +### ② 修复:同一个人报多个项目,不再被误判成「号码布重复」 + +- 以前判重只看号码布,而**证件号是选填的**:同一个人用一个号码布报两个项目,会被整块拦下、提示「号码布 XXX 在报名表内重复出现,这些行未导入」,只能人工删行再传一次。 +- 现在按**证件号**来分辨:号码布相同、**证件号也相同**(能证明是同一个人)→ 放行;号码布相同、**证件号都填了且不一样**(真抢号)→ 仍然报错;**一方证件号没填** → 放行,并在导入结果里给一条提示,让人自己扫一眼确认。 +- 团体报名行里的号码布也一并查重(同一条规则)。 + +### ③ 加固:自动备份不会再在备份目录里留下半截文件 + +- 半截备份(程序被强杀、磁盘写满、备份写一半时退出——**文件名看着正常、内容却不完整**)以前会被列进「系统 → 备份」的列表里,**手一抖当成正常备份去「恢复」就会出事**。 +- 现在备份一律**先写临时名、写完整了才改成正式名**;关停程序时也会**等一下正在写的这一轮备份收尾**(最多 10 秒,等不到只记一条警告,不会卡住关不掉)。 +- **升级后建议顺手看一眼**:打开「系统 → 备份」,如果列表里有个**明显偏小或 0 字节**的备份,那是老版本留下的半截文件。界面没有删除按钮,请到数据目录 `%LOCALAPPDATA%\ScoreboardConsole\data\backups\` 手工把它删掉。**留着也不会被自动使用**——点「恢复」时服务端会先校验这份备份能不能用,不合格会直接拒。 + +### ④ 升级后 5 分钟核对 + +1. 覆盖安装后启动 Console,看运行日志:**这一版没有数据迁移**,只应有正常的服务启动信息,没有迁移记录、也没有报错; +2. 打开「基础数据 → 报名导入」,「下载模板」处确认有四个按钮;点「分工作表 · 中文表头」下载一份 xlsx,打开应看到**多个工作表**、表名形如「小项@组别」; +3. 拿手上的一份报名表试导入一次,结果应与升级前一致(该进的进、该报的报); +4. 打开「系统 → 备份」,确认列表正常,并点一次「立即备份」; +5. 用《上线检查清单》过一遍。 + +--- + +## dev_0.5.1 ### 一句话