Archived
This repository has been archived on 2026-10-02 . You can view files and clone it. You cannot open issues or pull requests or push a commit.
37f8d77405faed649683dd7ad8a8b77dc059c52e
为什么:init_db 是站点库全部结构演进的唯一入口,但 142 行单函数把 「建表 / 列迁移 / 邮箱唯一索引 / 邮箱归一化 / 管理员引导」五件事 揉在一个 with-try 里,任何一段改动都要在 140 行上下文里核对边界。 拆出五个成员(全部接收 conn,调用顺序 = 原执行顺序,单连接单 commit 不变): - _SCHEMA_SQL 常量 + _create_schema(建表 + 种子行,纯数据上移) - _apply_column_migrations(ALTER 循环;非 duplicate column 的 OperationalError 仍然抛出,禁止静默带病初始化) - _ensure_email_unique_index(重复邮箱仅告警不阻断,原文案保留) - _migrate_user_emails(撞唯一索引行保留原值,原文案保留) - _ensure_initial_admin(按 role 判断而非用户名,防改名后误重建) 先写测试后动代码:新增 tests/test_auth_init_db.py 7 例,覆盖此前 零测试的路径——旧库列迁移、二次初始化幂等、改名管理员不重建、 存量重复邮箱告警不阻断、+tag 邮箱归一化迁移、归一化撞行保留原值。 7 例在未改动实现上一次跑绿,重构后即等价性验证。 门禁:ruff 全过 · pyright 0/0 · pytest 319 passed(312→319)。
Languages
Python
61%
TypeScript
32.2%
CSS
6.6%
Dockerfile
0.1%