数据模型
表的职责
| 模型 | 保存内容 |
|---|---|
user | 用户资料与邮箱验证状态 |
identity | 认证身份,Better Auth 的 account 模型映射到此表 |
session | 会话及活动组织 |
verification | 邮箱验证、验证码等验证信息 |
organization、member | 组织资料、用户成员关系及角色 |
invitation | 组织邀请,投递流程尚未完整接入 |
passkey | 通行密钥公钥和凭据资料 |
subscription | Stripe 插件同步的订阅状态 |
toolRun | 用户工具保存结果、输入指纹和请求 ID |
creditAccount、creditLedger | 当前积分余额和事件流水 |
具体列、索引和关系以 db/schema/*.ts 为准。某列存在不代表已经有界面或写入流程,例如邀请扩展时间字段需要单独核对。
命名与标识
TypeScript 字段用驼峰,数据库通过 snake_case 转换。实体使用固定前缀加 16 位 CUID2,例如 usr_...、org_...,生成器在 db/schema/id.ts。用户密钥使用 key_,签发请求记录使用 kis_;都保留 16 位 CUID2。前缀方便排查,不承担权限判断。
日期使用带时区时间戳;关键列设非空、外键、唯一约束和索引,不只依赖前端校验。引用用户的数据按模型定义设置删除行为。
订阅与组织范围
订阅的 referenceId 可以指向用户或组织,没有单一外键可替代业务归属检查。读取前从会话选择范围,再实时核对组织成员。
工具记录和积分当前按用户隔离。toolRun 的用户与请求 ID 唯一约束防止重复保存;积分事件的用户与事件键唯一约束防止重复发放,余额有非负约束。
新增或改列
修改 db/schema/ 并补齐导出与关系,然后生成迁移、审查 SQL,再应用到隔离开发库。新增 Better Auth 字段还要同步插件配置;不要只改表然后期待插件自动读写。