fix(dev): 明确启动不重置数据库并新增安全 db:init
ci / 质量门禁 (push) Canceled after 0s

背景:开发机每次重启后被反馈需要重新用默认密码登录并强改,排查确认仓库启动链路(dev.sh / pnpm dev / API / worker / db:seed)均不重置密码;只有 db:reset / migrate reset / 重建数据卷会恢复种子密码。A2 收尾时为干净截图执行过 db:reset,是最近一次重置的直接原因。

改动:
- 新增 pnpm db:init = prisma migrate deploy + 幂等 seed,作为首次/迁移后的安全初始化;不重置数据、不覆盖已有密码。
- README / dev.sh / AGENTS 命令契约 / SEED.md / A1·A2 实施报告明确:日常启动不需要 DB 命令,db:reset 仅用于清库。
- 实测:对已改密的 admin 执行 db:init 后 password_hash 与 must_change_password 均未变化。

验证:pnpm format:check / pnpm lint 通过;db:init 实际执行通过。
This commit is contained in:
Stev_Wang committed 2026-11-03 13:37:34 +08:00
1 parent 7fb458f62f
commit 7824bc7b32
7 files changed
+27 -11

No files matched your search

+7 -3
View File
@@ -37,11 +37,15 @@ A0 只 seed「已建表」的 `system_configs`;A1 补齐组织、账号与角
## 使用
```bash
pnpm db:migrate # 应用 a2_role_permissions_data_scopes 迁移(expand:permissions / data_scopes 两张新表)
pnpm db:seed # 幂等写入上述种子(可重复执行;空库与存量库均已验证)
# 本地重置:pnpm db:reset(会重新执行全部迁移与 seed)
pnpm db:init # 推荐:migrate deploy + 幂等 seed(不重置数据、不覆盖已有密码)
pnpm db:migrate # 开发期新增迁移时使用(prisma migrate dev)
pnpm db:seed # 只跑种子;幂等,不覆盖已有密码
# 本地清库:pnpm db:reset(会重建全部表并重新 seed,账号回到初始密码 + 首登改密标记)
```
> **密码何时会被重置**:只有执行 `db:reset` / `prisma migrate reset` / 手工删库或重建 PG 数据卷时,种子账号才会回到 `lingxi2026` 且 `must_change_password=true`。
> `dev.sh`、`pnpm dev`、`pnpm db:init`、`pnpm db:seed` 都不会覆盖已有用户密码;`must_change_password` 在用户成功改密后写为 `false`,之后登录不再要求改密。
## 与 A1 / A2 遗留的关系
- A1 记录的角色 / 用户种子已延续;A2 在其上补齐权限点目录、特殊权限口径(默认关闭、显式授予)与六类数据范围。