feat: M3-M7 全模块落地 + 集成接线

- M3 认证/权限/审计/限流 + 全部 REST 接口
- M4 管理面板(MIUIx + 成绩录入/积分榜下钻/大屏控制)
- M5a 大屏页面(六页 + 明细覆盖层 + 缩放适配)
- M6 WebSocket 实时同步中心
- M7 xlsx 导出 + 赛事包 zip + 备份
- 规则包 YAML 导入导出(差异预览)
- 字体 vendor 子集化(4 套 x2 字重)
- 集成:realtime/export/rules 接入 main+httpapi;backup 子命令
- 修复:中间件包装 ResponseWriter 丢失 Hijacker,导致 WS 握手 501
This commit is contained in:
AskaEth committed 2026-09-09 19:02:24 +08:00
1 parent d0e3b93e76
commit bc8b1ee6c0
145 files changed
+25159 -321

No files matched your search

+18
View File
@@ -0,0 +1,18 @@
// Package rules 实现积分规则包(YAML)的解析、校验、导出与导入落地。
//
// 规则包是积分的唯一权威来源:分值、录取名次、并列口径、计分通道全部来自规则包,
// 代码里不写死任何数字(见 devdocs/02-积分与排名规则.md 第 7 节)。
//
// 典型用法:
//
// pack, err := rules.Parse(raw) // 解析 + 校验
// cur, err := rules.Load(db) // 读取赛事库当前规则
// cs, err := rules.Diff(cur, pack) // 预览差异,不落库
// if !cs.Empty() {
// res, err := rules.Apply(db, cs) // 确认后写入;全量重算由调用方触发
// }
// out, err := rules.Export(db, meta) // 导出当前规则
// yaml, err := rules.Marshal(out)
//
// 导入必须先预览再落地,且落地后必须由调用方全量重算积分(规则包一变,历史积分都得跟着变)。
package rules