初始化数据
用途与命令
初始化脚本用于开发和预发布的测试资料,入口为 db/scripts/seed.ts,数据文件在 db/seeds/。
sh
bun db:seed
bun db:seed:staging执行前核对目标库。项目没有生产初始化命令;真实参考数据需要可审查的一次性迁移或明确的管理流程,不能把演示账号导入客户库。
幂等不是自动保证
现有用户初始化使用冲突忽略。只有数据存在稳定唯一键时,onConflictDoNothing() 才能防止重跑重复;每次随机生成新主键且没有其他唯一约束仍会插入新数据。
新增初始化函数时,先定义稳定唯一字段,再按依赖顺序执行:用户、组织、成员、业务数据。不要使用真实邮箱或真实用户文件作为样例。
演示账号与可登录账号
表里有用户不代表已经具备可用密码身份或有效会话。需要通过认证流程创建凭据,不能直接把明文密码写入身份表。本机完整预览的隔离演示账号也不随复制新站分发。
排查
缺表先检查迁移;唯一冲突检查数据键;外键冲突检查执行顺序;无法登录检查认证身份而非只看用户行。开发测试优先使用 @repo/db/testing 的进程内数据库,减少污染真实数据库。