Some checks failed
Deploy / deploy (push) Has been cancelled
导入一个班(45 人)要转好几秒,慢的全在密码哈希这一处: - 哈希在重名检查之前算。老师习惯把同一份名单粘两次,那种情况要白等 一整个班的 argon2 才看到 409。把校验和重名查询提到前面,这条路径 现在是 5.6ms 返回。 - 45 次 argon2 串行 await。改成固定 4 路并发池;不用 Promise.all 是因为 oj-api 的 mem_limit 只有 512m,一个年级 300 人全量并发撑不住。 - argon2id 参数从 Bun 默认的 m=64MiB 显式降到 OWASP 推荐下限 m=19MiB, 单次 140ms → 20ms。参数编码在哈希串里,存量账号照常验证、不用迁移, 旧的 pbkdf2 那条分支也不受影响。 45 人端到端 2.04s → 0.55s。验过:旧 m=65536 的哈希、新 m=19456 的哈希、 Django 的 pbkdf2 三种都能正常登录,错误密码照常拒绝。 顺带把生成页下载的 CSV 裁成用户名和密码两列 —— 发给学生的就这两样。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QqqZwxtXLo2GTqMi51C94D