Files
Scoreboard/server/internal/export/doc.go
T
AskaEth bc8b1ee6c0 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
2026-09-09 19:02:24 +08:00

30 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package export 负责成绩导出(xlsx)、赛事项目包(zip)与数据库备份。
//
// 本包只做三件事:把数据整理成可直接打印的表格、把整场赛事打包/解包、把库
// 备份成一致性快照。所有业务数值(积分、名次、奖牌)都来自调用方传入的
// domain 结构体或赛事库本身,这里不重新实现任何计分规则——规则只有一份,
// 在 internal/domain。
//
// 依赖方向:export → domain(只读类型)与 database/sql;domain 不认识 export。
package export
import "errors"
// 导出的哨兵错误,调用方据此把失败原因映射成 HTTP 状态码或界面提示。
var (
// ErrNoDatabase 表示调用方传入了空的数据库连接。
ErrNoDatabase = errors.New("export: 数据库连接为空")
// ErrInvalidPackage 表示赛事项目包结构非法(缺 meta.yaml、路径穿越、校验信息缺失等)。
ErrInvalidPackage = errors.New("export: 赛事项目包非法")
// ErrUnsupportedVersion 表示包内 meta.yaml 的格式版本高于当前程序能读的版本。
ErrUnsupportedVersion = errors.New("export: 赛事项目包格式版本不受支持")
// ErrChecksumMismatch 表示包内文件与 meta.yaml 记录的校验和不一致。
ErrChecksumMismatch = errors.New("export: 赛事项目包校验和不匹配")
// ErrProjectExists 表示目标目录已有同名赛事项目,且调用方未选择覆盖。
ErrProjectExists = errors.New("export: 目标赛事项目已存在")
// ErrUnsafeName 表示赛事项目名含有路径分隔符、保留名等不安全的字符。
ErrUnsafeName = errors.New("export: 赛事项目名非法")
// ErrTeamNotFound 表示导出单位积分明细时找不到该单位。
ErrTeamNotFound = errors.New("export: 单位不存在")
)