Files
Scoreboard/docs/常见问题.md
T
AskaEth 9c6d0bd3b3 docs: 用户文档补齐「个人+团体」等新功能,修正切换赛事与账号存储位置的说法
按 407abec 之后落地的功能,对照代码逐条更新四份用户文档与 README:

- 使用手册:补「个人+团体」是什么与完整配置链路、平均值口径两种分母、
  榜单口径(全局)折算系数、公告(全屏→底栏常驻)、报名导入两个页签、
  单位 logo 显示位置、17.5 调试标识;修正「账号存在各个赛事库里」的错误说法
  (账号与会话在数据目录的 system.db),在线看板改为指向服务管理窗口的实例卡片
- 部署指南:新增 7.5 显示器菜单 / 7.6 公告 / 7.7 调试标识与单位 logo;
  重写 8.5 赛事项目包(导入 ≠ 切换、包内四类内容、不能覆盖运行中的项目),
  并把 -project 启动参数明确标为「不要用来切赛事」
- 上线检查清单:补当前赛事、显示器菜单、单位 logo、公告四项现场核对,
  修正「切换后登录状态失效」
- 常见问题:重编号 Q1–Q48,新增个人+团体算分、平均值口径、只报单位、
  折算系数、公告底栏、单位 logo、调试标识 8 条;切换赛事与数据迁移按实测重写
- README:功能概览与文档索引同步
2026-09-10 15:16:17 +08:00

23 KiB
Raw Blame History

常见问题(FAQ)

更完整的操作步骤见 使用手册,部署与排障见 部署指南。


账号与权限

Q1:初始密码是多少? 首次启动时随机生成、只打印一次。用 Console 启动时,在 logs\console.log 里搜索「初始密码」即可找到,方法见 部署指南 · 首次登录。

Q2:忘记密码怎么办? 先停止服务,然后执行(配置在用户数据目录,不要用部署目录里那份模板): scoreboard.exe passwd -config "%LOCALAPPDATA%\ScoreboardConsole\config.yaml" -data "%LOCALAPPDATA%\ScoreboardConsole\data" 会打印新的随机密码,并要求下次登录强制改密。

Q3:访客和录入员有什么区别? 访客只能只读查看;录入员可以录入、存草稿、发布、撤销发布、确认破纪录、做积分调整、控制大屏;管理员在此基础上还能管理用户、备份、看审计日志、导入规则包和赛事包。

Q4:为什么登录后还是只读? 可能未登录成功、会话已过期(有效期 12 小时),或页面处于示例数据模式。看右上角是否显示账号名与角色。

Q5:可以建「访客账号」吗? 不可以。访客是未登录时的默认身份,不需要也不允许建账号;可落库的角色只有管理员和录入员。

Q6:管理员能改用户名吗? 管理界面里账号创建后不可改;命令行可用 scoreboard.exe passwd -user 旧名 -new-username 新名 修改。


成绩与积分

Q7:为什么录入后大屏没变化? 草稿不上屏。需要「发布」(或 Alt+Enter),发布后 1 秒内大屏更新。

Q8:发布错了怎么改? 撤销发布 → 修改 → 重新发布。撤销会作废该组积分流水,大屏回退到发布前状态,过程可在「变更历史」查看。

Q9:为什么「发布」是灰的? 常见原因:未登录、服务端断开、示例数据模式,或存在阻止发布的校验错误(缺少成绩、格式无法解析、手动名次项目缺名次)。

Q10:并列名次怎么处理? 成绩相同(或手动名次相同)自动按并列处理,显示同一名次。默认口径是「顺延」:并列第 3 各得第 3 名的分,无第 4 名,下一名第 5 名;奖牌同样并列(并列第 1 各记 1 金、无银)。具体口径由规则包配置决定。

Q11:状态里的 DNS / DQ / DNF / 退赛有什么区别? 都是不参与名次与积分计算的异常状态:DNS = 弃赛,DQ = 取消资格,DNF = 未完赛,退赛 = 主动退出。正常成绩选「有效」。 唯一例外:「个人+团体」小项若把平均值口径选成「全部报名人员都计入」,这些人在队内平均里会按 0 分占一个分母名额(见 Q15)。

Q12:时间类成绩怎么写? 按 分:秒.毫秒 形式输入,例如 1:06.33;工具栏会显示当前项目的单位。

Q13:能批量录入吗? 可以。支持从 Excel 复制后粘贴:两列及以上时第一列按单位名称 / 简称匹配行、最后一列作为成绩;单列时从当前行向下依次填充。也可以用 Tab / Enter 在格子间移动,Ctrl+Enter 存草稿。

Q14:为什么「个人+团体」小项的个人分没进单位总分? 这是「个人+团体」小项的默认口径,不是漏算。这类小项的一条报名会同时走两条计分通道:

  • 个人通道:按个人成绩排名、套个人积分模板给分,分只记在个人积分榜;
  • 团体通道:按团体成绩排名、套团体积分模板给分,计入单位总分。

个人通道的「计入单位总分」关掉了才不进单位总分:按规则包里的「个人+团体」模板生成的通道,个人通道默认就是不勾的(手工新建通道时默认勾选,以页面上实际的勾选状态为准)。到「基础数据 → 计分通道」选中该小项就能看到每行通道的勾选状态,关掉的行在「大项 / 小项」的通道摘要里带「不计入单位总分」徽标。

想让个人分也折算进单位总分,把个人通道那一行勾上并「保存全部」,然后对该组成绩撤销发布 → 重新发布——积分流水是发布时按当时的通道配置生成的,不重新发布不会变。规则包对个别小项写了例外配置时以例外为准。

Q15:队内平均的团体成绩怎么算?平均值口径在哪改? 团体成绩 = 该单位在本组别各条报名成绩的平均值。系统拿这个平均值和其他单位比名次(并列按积分模板的并列口径处理,默认顺延),再套团体积分模板给分,计入单位总分。大屏与管理端只显示算出来的数值,不显示「平均」字样。

  • 正常做法是给每个参赛人员各报一条(「基础数据 → 报名导入 → 个人报名」),成绩照常录到每个人那一行;团体那一行即便也报了,也不用填成绩。
  • 平均值的分母有两种口径,选中该小项后在「成绩录入」页的工具栏下方用**「平均值口径」**单选切换,点选即保存(小项级设置,该小项的组别共用,不用重新点保存):
    • 只算有效成绩(默认):分母是有有效成绩的人数;
    • 全部报名人员都计入:分母是该单位在本组别的报名条数,没成绩的按 0 计入。
  • 改完口径、要让已发布的成绩按新口径重算,需要对该组撤销发布 → 重新发布(草稿不受影响,改口径本身在点选时就已保存);发布之前可以先看右侧「实时积分预览」,它已经按新口径显示各单位的分数变化。
  • 报名表里 status 不是 registered 的报名项(弃赛 / 取消资格)既不算分子也不算分母。

Q16:某个单位一个人都没有效成绩,团体项目怎么算? 看该小项的「平均值口径」:

  • 只算有效成绩(默认):这个单位不参与团体排名、不得分(不会按 0 分排到最后、占掉一个名次);
  • 全部报名人员都计入:按平均 0 参加排名,通常排最后;这个名次若不在团体积分模板的录取范围内,同样不得分,但会占掉一个名次、影响后面单位的录取。

Q17:团体项目可以只给单位报名、不填队员吗? 可以。「基础数据 → 报名导入 → 从已有名单勾选报名」分成「个人报名」「团体报名」两个页签,团体 / 对抗 / 「个人+团体」小项默认停在「团体报名」:从已配置的参赛单位里勾选参加本组别的单位(默认一个都不勾),每个勾选的单位各建一条报名,一个队员都不勾就是纯单位报名,队员名单之后还能再补。

  • 要登记队员就点该行的「登记队员」展开勾选(可按姓名 / 工号搜索),提交时队员名单按列表顺序写入;
  • 勾选已报名的单位时该行会提示「提交将清空原名单」:再次提交是用本次登记的队员覆盖原名单,一个队员都不勾就等于清空;
  • 「全选」只勾启用中且还没报名的单位,已停用的单位要单独勾;
  • 选中小项后页签会自动切到与该小项类型相符的一边,也可以手动切换,页面会提示「生成的报名行以当前部分为准」。

Q18:改了「榜单口径」的折算系数,为什么单位总分没变 / 变了? 「基础数据 → 积分模板 → 榜单口径(全局)」里的个人项目得分折算系数(键名 standings.individual_to_team_weight,默认 1)作用在汇总环节:单位总分 = Σ 只记单位的流水 + 系数 × Σ 记到个人的流水。流水里存的是原始分、折算在生成榜单时做,所以点「保存榜单口径」后单位总分与单位积分明细立刻按新系数变化,不需要重新发布,大屏也会跟着刷新。

改完看不出变化,通常是这几种情况:

  • 单位总分里本来就没有「记到个人的流水」:团体 / 对抗项目走单位通道,或者该小项的个人通道被关掉了「计入单位总分」(「个人+团体」的个人通道就是这样),这些分不受系数影响;
  • 只有部分单位有个人得分,变的只是那几家;
  • 系数没存上:系数必须大于 0(0 与负数服务端会直接拒绝),输入框允许 0–100、步进 0.1,保存成功会提示「榜单口径已保存」;
  • 当前账号不是管理员:赛事设置接口只对管理员开放,非管理员读不到当前系数,卡片上会写明是只读。

导入规则包时,规则包里的同名配置会覆盖这里的取值。

Q19:破纪录加分为什么点不了? 规则包里破纪录加分默认关闭(recordBonus.enabled = false)时按钮不可用;若当前角色读不到规则包,页面显示「未知」,可提交,由服务端校验决定是否加分。

Q20:人工调整为什么点不了? 规则包里人工调整默认关闭(manualAdjustment.enabled = false)时不可用;以页面顶部显示的开关状态为准。


大屏

Q21:大屏不亮 / 只有桌面怎么办? 检查 HDMI、扩展显示模式、Console「大屏窗口」状态,点「重新排布」;服务端未就绪时最多等 20 秒才开屏;单屏窗口化时按 F11 切全屏。详见 部署指南 · 故障排查。

Q22:单屏和多屏的显示方式有什么不同? 单屏时大屏以窗口化方式打开,按 F11 切全屏;多屏时除内置屏外每块屏一个 kiosk 全屏窗口,各锁一页,不响应 F11,也不接收鼠标。

Q23:大屏为什么不自动轮播? Console 启动的多屏窗口默认每屏锁定一页。到「大屏控制」点「解锁」后开始轮播,每 20 秒一页;公告页不参与轮播。

Q24:推送的积分明细怎么关? 60 秒后自动关闭;也可以点「积分榜」页的「关闭大屏明细」立即关闭。

Q25:推送的公告撤下后,大屏底部为什么还有字? 因为「推送公告」只是一次全屏展示,不是公告的生命周期:设好滚动时长(5–120 秒,即全屏展示的秒数)点「推送公告」后,大屏先全屏显示这条公告,到时间自动退回原来的页面,公告正文会留在底部信息栏的「公告」槽位继续显示,直到被下一条公告替换或你点「清除公告」。底栏这个槽位是一直都在的,没有公告时显示占位「暂无公告」。

  • 要撤下:到「大屏控制 → 公告」点「清除公告」,底栏随即回到「暂无公告」;
  • 卡片右上角的徽标显示「当前公告:有 / 无」,下方一行就是当前公告正文,可以先确认再清;
  • 公告保存在赛事设置里(display.announce_text / display.announce_seconds),所以服务端重启、大屏窗口重开、断线重连之后仍然显示;重开的大屏会先把当前公告全屏播 15 秒,再留在底栏。

Q26:大屏上的单位图标显示在哪?没显示怎么办? 配了 logo 的参赛单位会在这几处显示单位图标:总积分榜(单位名左侧)、团体奖牌榜(单位名左侧)、分项成绩(单位列名字左侧)、个人积分奖牌榜(运动员姓名左侧)。图标按行内文字大小缩放(1em),不会撑开行距;没有 logo 的单位不占位,图片临时加载不出来时保留占位、不会出现破图,队名不会跳动。

没显示就去「基础数据 → 参赛单位 → 编辑 → Logo 路径」上传或填写该单位的 logo(管理端页面本身不显示 logo,只在大屏上显示)。上传的图片存在该赛事的 data\event_projs\<项目名>\uploads\ 里,会随赛事项目包一起导出 / 导入。

Q27:「实例 x · 屏 x」和右上角的版本号角标怎么不见了? 这两个都只是调试标识:只在窗口化的调试窗口里显示,正式上屏(多屏 kiosk 全屏,或单屏窗口化后按 F11 全屏)都不显示。

  • 「实例 x · 屏 x」用来分辨这块屏是哪个实例,窗口化后按 F11 全屏也会隐藏;
  • 角标里的 vN 是数据版本号(不是软件版本):需要现场核对某块屏有没有跟上服务端时,先把该窗口切回窗口化让角标出现,它和仪表盘「实时连接」里显示的「版本 N」一致就说明这块屏已经同步。

Q28:「在线看板」为什么显示未知? 页面上那一块是本地占位节点:系统不按「指令送达」推断大屏是否在线,也不展示每块屏的实际上报状态,所以「在线」列恒为未知,卡片上写着「在线状态未知(占位)」;「最近下发」只是本机下发指令的时间,不代表大屏在线。以现场大屏的实际画面为准。

Q29:安卓电视能用吗? 可以,用电视自带浏览器访问 http://<主机IP>:19540/display。但它不受 Console 的 kiosk、防熄屏控制,字体与动画表现以实际设备为准。

Q30:大屏时间不对怎么办? 系统没有外网时间同步,以主机时间为准。校准 Windows 时间与时区即可。


数据与备份

Q31:备份在哪里? 在数据目录下的 backups\,默认即 %LOCALAPPDATA%\ScoreboardConsole\data\backups\(数据目录改过就按改后的路径找,见 Q48)。

文件是数据库快照,命名形如 system-<原因>-<时间戳>.db 与 event-<原因>-<时间戳>.db:system 是系统库(账号、会话),event 是赛事库(成绩、积分、报名、基础数据),原因是 auto / manual / publish,时间戳是「年月日-时分秒」,例如 event-publish-20260910-120500.db。

备份里只有数据库,上传的图片(赛事会标、大屏背景图、单位 logo)不在其中,它们在 data\event_projs\<项目名>\uploads\ 里,需要另外归档。

Q32:多久备份一次? 服务端会自动备份,默认每 5 分钟一次(config.yaml 的 backup.intervalMinutes,设成 0 可关闭)。也可以手动触发:管理端「系统设置 → 备份 → 立即备份」,或执行 scoreboard.exe backup -config "%LOCALAPPDATA%\ScoreboardConsole\config.yaml" -data "%LOCALAPPDATA%\ScoreboardConsole\data"(部署目录下的 deploy\backup.bat 已经带好这些路径)。另外每次发布成绩前会自动备一份。

Q33:备份会自动删除旧的么? 会。自动、手动、命令行三种方式都按 backup.keep(默认 20 份)滚动保留,system 库与赛事库各自计算。

Q34:怎么恢复备份? 没有一键恢复接口,需停机手工替换数据库文件:在 Console 里停止服务,到 <数据目录>\event_projs\<项目名>\ 把目标备份复制为 event.db(覆盖原文件),删掉同目录的 event.db-wal 与 event.db-shm,再启动服务,详见 部署指南 · 备份与恢复。

Q35:换一台电脑怎么迁移? 用户数据目录和安装目录都要带走:

  • 用户数据目录 %LOCALAPPDATA%\ScoreboardConsole\(里面是 data\ + config.yaml + console\config.json + rules\):整个拷到新机器的同一位置即可,赛事数据、账号、配置、规则包原样接管;
  • 安装目录(Scoreboard_Console.exe、scoreboard.exe 等):按同样路径放好,或用新机器上的安装包装一遍(安装目录里那几份配置与规则只是模板,拷不拷都行)。

只拷安装目录会丢数据——成绩、账号、配置、规则包都在用户数据目录里。若数据目录放到了别处,还要同步改 console\config.json 的 server.dataDir。详见部署指南第 8.4 节。

Q36:怎么切换赛事项目? 启动时服务端会自动打开上次打开的赛事,不用改启动参数。切换在页面里完成:管理面板「导出 → 赛事项目包 → 赛事项目列表」里找到目标项目(带「当前」徽标的就是正在打开的那一项),点「切换为当前赛事」。服务端会退出并由服务管理窗口自动拉起,页面显示「正在重启服务端…」,恢复后自动刷新;最多等 60 秒,超时就打开服务管理窗口确认服务端状态,待其显示「运行中」后手动刷新本页。

  • 导入赛事包不会自动切换当前赛事,导入完成的结果框里直接给了「立即切换并重启服务端」按钮;
  • 切换需要服务管理窗口(Console)在运行,否则服务端退出后没人拉起,得手动启动一次;
  • 比赛进行中请避开切换;
  • 账号与会话存在数据目录下的 system.db 里,属于整个系统而不属于某个赛事库(赛事包里也只带赛事数据、不带账号),所以切换赛事不会动它,一般不用重新登录;万一重启后页面是只读访客视图,登录一次即可,忘记密码用 scoreboard.exe passwd 重置。

不要用启动参数 -project 来切换赛事:给 Console 的 config.json 里 server.args 加上 -project <项目名> 后,服务端每次启动都会优先打开这个项目并把它写回「上次打开的赛事」,在页面里切换完、重启后又被拉回它。只有「刻意固定只开某一个项目」时才会这么用。


导出与导入

Q37:能导出哪些文件? 四类 Excel:总表、全部(多 sheet)、分项成绩表、单位积分明细;另外可导出赛事项目包(zip)与规则包(YAML)。

Q38:导出文件保存在哪? 浏览器默认下载目录。服务端生成的临时包位于 data\exports\,下载完成后自动删除。

Q39:谁能导入规则包 / 赛事项目包? 只有管理员。两者都会整体替换数据:规则包导入后全量重算积分且不能一键撤销;赛事包覆盖同名项目前会二次确认。

Q40:导入赛事包后为什么看不到数据? 因为导入只把包解到数据目录,不会自动切换当前赛事。服务端启动时只打开一个赛事项目(启动参数 -project 指定的那个;没带参数时用上次切换记下的,从未切换过则是 default),页面上看到的是它的数据——通常是导入前那个空赛事,所以看着像「没导进去」。

处理办法:在「导出 → 赛事项目包」的赛事项目列表里找到刚导入的项目(导入完成的结果框里也直接给了「立即切换并重启服务端」按钮),点「切换为当前赛事」。服务端会退出并由服务管理窗口自动拉起,页面显示「正在重启服务端…」,恢复后自动刷新,数据就出来了。超过 60 秒仍未恢复时,请打开服务管理窗口确认服务端状态,待其显示「运行中」后手动刷新本页。

切换会让服务端重启,比赛进行中请避开操作。账号与会话不在赛事库里(见 Q36),一般不用重新登录;万一回到只读访客视图,登录一次即可,若原密码登不上就用 scoreboard.exe passwd 重置。

Q41:导入规则包后积分变了,能撤销吗? 不能一键撤销。纠错需要重新导入旧规则包,或逐项修正后重新发布。导入前请务必先「预览差异」。

Q42:导入时提示证件号重复怎么办? 证件号与号码布是人员的两项唯一标识,系统不允许两个人员共用同一个证件号,用来区分重名。

  • 在「运动员」里新增 / 编辑时提示重复:说明该证件号已属于另一个人员。请先核对是不是同一个人:是,就直接用已有记录;不是,请检查证件号是否填错。已有历史数据可以没有证件号。
  • 表格导入时出现重复:分两种情况。同一份文件里同一个证件号重复出现,重复的行会报错并跳过,改好后重新上传;证件号在系统中已存在、但姓名、性别或单位不一致的,会列为「冲突」,本次不写入(报名也不会创建),需要在导入结果里勾选后逐条或多选决定「保留已有数据」还是「使用新数据」,没有做决定的人不会被写入。详细步骤见 使用手册 · 报名导入。

Q43:人员没有身份证,只有号码布,能报名吗? 可以。证件号与号码布二者取其一即可作为人员唯一标识:在「运动员」里只填号码布也能保存;报名表里有姓名的行,id_card 与 bib 至少填一个就能导入;从已有名单勾选报名时,两项里有一项就能勾选。号码布会同时写入人员档案与报名记录。

Q44:号码布重复了怎么办? 号码布和证件号一样是人员唯一标识,系统不允许两个人员共用同一个号码布。

  • 在「运动员」里新增 / 编辑时提示重复:说明该号码布已属于另一个人员。请先核对是不是同一个人:是,就直接用已有记录;不是,请检查号码布是否填错。
  • 表格导入时出现重复:同一份文件里同一个号码布重复出现,重复的行会报错并跳过,改好后重新上传;号码布在系统中已存在、但姓名、性别或单位不一致的,会列为「冲突」,本次不写入(报名也不会创建),需要在导入结果里勾选后决定「保留已有数据」还是「使用新数据」。详细步骤见 使用手册 · 报名导入。

其他

Q45:系统需要联网吗? 不需要。完全离线运行,不依赖外网,也不需要在现场安装任何运行时。

Q46:页面提示「示例数据」是什么意思? 表示后端未就绪,此时所有改动只停留在界面,不会写入真实赛事。恢复连接后刷新即可。

注意区分:顶部若只是显示「连接中断」,说明实时推送断了(数据可能不是最新),但写操作仍会照常提交给服务端并做校验。

Q47:为什么登录 / 写操作偶尔被拒绝? 系统有频率限制:登录每 IP 每分钟 5 次,写操作每用户每分钟 30 次。稍等一分钟再试。

Q48:数据目录在哪? 默认 %LOCALAPPDATA%\ScoreboardConsole\data(当前用户的本地应用数据目录,升级 / 覆盖安装 / 卸载都不会删)。里面是 system.db(账号、会话)、event_projs\<项目名>\(每个赛事的 event.db 与上传图片 uploads\)、backups\、exports\。

同一层还有 config.yaml(服务端配置)、console\config.json(Console 配置)与 rules\(规则包目录),也都在安装目录之外,同样不会被覆盖安装或卸载删掉。

要换位置:改 %LOCALAPPDATA%\ScoreboardConsole\console\config.json 里的 server.dataDir(支持绝对路径,相对路径按安装目录解析),重启 Console 生效。Console 会把这个目录用 -data 传给服务端,它优先于 config.yaml 里的 dataDir,所以只改 config.yaml 是不生效的。详见部署指南第 3.4 节与第 3.5 节。