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

+32
View File
@@ -0,0 +1,32 @@
/** 管理端用到的内联图标路径。现场无外网,不引图标库。 */
export const ICON_PATHS = {
dashboard: 'M4 13h6V4H4v9Zm0 7h6v-5H4v5Zm10 0h6V11h-6v9Zm0-16v5h6V4h-6Z',
entry: 'M4 5h16M4 12h10M4 19h7M17 15l3 3-3 3',
review: 'M5 4h14v16H5zM8 9h8M8 13h8M8 17h4',
record: 'M8 21h8M12 17v4M6 4h12v6a6 6 0 0 1-12 0V4Z',
adjust: 'M4 8h10M18 8h2M4 16h2M10 16h10M15 5v6M9 13v6',
standings: 'M4 20V10h4v10H4Zm6 0V4h4v16h-4Zm6 0v-7h4v7h-4Z',
display: 'M3 4h18v12H3zM8 20h8M12 16v4',
database:
'M12 3c4.4 0 8 1.3 8 3s-3.6 3-8 3-8-1.3-8-3 3.6-3 8-3Zm8 3v12c0 1.7-3.6 3-8 3s-8-1.3-8-3V6M20 12c0 1.7-3.6 3-8 3s-8-1.3-8-3',
export: 'M12 3v12M8 11l4 4 4-4M4 19h16',
history: 'M4 12a8 8 0 1 0 3-6.2M4 4v4h4M12 8v4l3 2',
logs: 'M5 4h14v16H5zM8 8h8M8 12h8M8 16h5',
system:
'M12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6Zm8.4 3-1.8-1 .3-2.1-2-1.2-1.7 1.3-1.8-1 .2-2.1-2.3-.7-1 1.9-2.1-.2-1.2 2 1.3 1.7-1 1.8-2.1.2-.7 2.3 1.9 1-.2 2.1 2 1.2 1.7-1.3 1.8 1-.2 2.1 2.3.7 1-1.9 2.1.2 1.2-2-1.3-1.7 1-1.8 2.1-.2.7-2.3Z',
refresh: 'M20 12a8 8 0 1 1-2.3-5.6M20 4v4h-4',
lock: 'M6 11h12v9H6zM9 11V8a3 3 0 0 1 6 0v3',
unlock: 'M6 11h12v9H6zM9 11V8a3 3 0 0 1 5.7-1.4',
bell: 'M6 9a6 6 0 1 1 12 0c0 5 2 6 2 6H4s2-1 2-6ZM10 19a2 2 0 0 0 4 0',
push: 'M12 20V6M8 10l4-4 4 4M4 20h16',
close: 'M6 6l12 12M18 6 6 18',
check: 'M5 12.5 10 17l9-10',
warning: 'M12 4l9 16H3l9-16Zm0 6v4m0 3v.5',
search: 'M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm10 2-4.3-4.3',
chevron: 'M8 10l4 4 4-4',
logout: 'M15 4h4v16h-4M11 8l-4 4 4 4M7 12h9',
user: 'M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm-8 8a8 8 0 0 1 16 0',
keyboard: 'M3 6h18v12H3zM7 10h.01M11 10h.01M15 10h.01M7 14h10',
} as const
export type IconName = keyof typeof ICON_PATHS