fix: 上线前快修(大屏自愈 / 奖牌口径 / 聚合作废 / 密码可发现性)
- P0 慢客户端关闭码 1008 → 4000:前端把所有 1008 当「登录失效」并永久停止重连, 大屏被踢后再也不自愈(服务端 markSlow 改用自定义码,前端逻辑不动) - P1 REST 与 WS 的奖牌榜补 events.scored = 1 过滤,与导出成绩册口径一致 (否则「只排名不计分」项目只要挂着通道就会在大屏凭空出奖牌) - P1 聚合流水作废去掉 source_id 子查询:改通道会重建通道 id,旧聚合流水 永远匹配不上 → 再插一份 → 分数翻倍 - P1 审核页/历史页的折算系数兜底由 ?? 1 改为 >0 ? : 1:/ws 快照对非 admin 会把 individualToTeamWeight 置 0,recorder 看到的个人折算分全是 0 - P2 删掉 signature.local.txt 后清理残留的 signature.build.txt,避免继续注入旧署名 - 初始管理员密码:banner 加纯 ASCII 锚 INITIAL ADMIN CREATED,文档改为搜它 (原来教的 findstr "password=" 已经失效,且中文 findstr 本身不可靠) 自检:服务端 12 包全绿;前端 vue-tsc + build 通过、node --test 24/24;console 语法通过。
This commit is contained in:
1 parent
045b0f5d95
commit
27bddefaad
15 files changed
+199
-31
No files matched your search
+10
-5
@@ -104,11 +104,7 @@ func main() {
|
||||
logger.Error("初始化默认管理员失败", "err", err)
|
||||
os.Exit(1)
|
||||
} else if created {
|
||||
// 初始密码只打印这一次;数据库里只有 bcrypt 哈希。
|
||||
// 结构化日志会被采集/落盘,绝不写入密码,只提示密码已在上方一次性输出。
|
||||
fmt.Printf("\n========================================\n"+
|
||||
" 已创建默认管理员\n 用户名: %s\n 初始密码: %s\n 首次登录后请立即修改密码\n"+
|
||||
"========================================\n\n", username, password)
|
||||
fmt.Print(initialAdminBanner(username, password))
|
||||
logger.Warn("已创建默认管理员,初始密码仅在上方一次性输出,不写入日志", "username", username)
|
||||
}
|
||||
|
||||
@@ -156,6 +152,15 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
// initialAdminBanner 组装初始管理员提示块:初始密码只在这里一次性输出,不写入结构化日志。
|
||||
// 末尾的纯 ASCII 锚供现场在 logs\console.log 里检索——中文 findstr 在 chcp 936/65001 下不可靠。
|
||||
func initialAdminBanner(username, password string) string {
|
||||
return fmt.Sprintf("\n========================================\n"+
|
||||
" 已创建默认管理员\n 用户名: %s\n 初始密码: %s\n 首次登录后请立即修改密码\n"+
|
||||
"=== INITIAL ADMIN CREATED (password above) ===\n"+
|
||||
"========================================\n\n", username, password)
|
||||
}
|
||||
|
||||
// displaySender 把 httpapi 的大屏命令接口适配到实时层。
|
||||
type displaySender struct{ hub *realtime.Hub }
|
||||
|
||||
|
||||
Reference in new issue
Block a user