- 需求清单:独立计费平台定位,R1-R15 全部定案(12 项裁决 + R10 裁撤 + R3/R4 延后),裁决档案含访问主体模型(作者登录体系 + 成员长期令牌)、分摊哲学(平台不做价值判断只提供事实服务)、双形态交付(完整前后端先行,CFW 抽取版后续) - 数据模型定稿(一表一文档):api_keys(16 列,401 状态机裁撤——引擎记录不决策)/ usage_logs(25 列,billing_source 与 subscription_id 提列,非消费行去重含 content 指纹)/ payments(币种无关支付记录,只存事实)/ qpu_history(按日志时刻取值)/ members(成员实体与长期令牌)/ users(空库双通道初始化与重置)/ sessions(服务端会话,否决 JWT) - 接口参考:NewAPI-接口范围融合字段级实证,定位 docs/references/(计费平台可用接口参考,唯一上游参考) - README / AGENTS:新版设计语境(项目沿革、重开设计动因、协作约定、文档自立原则)
3.5 KiB
3.5 KiB
users 表字段设计
数据模型新增表之二:管理员——登录体系的身份落点,实际只有一行(作者,唯一管理员)。裁决背景见
docs/design/需求清单.md§9「访问主体模型」。
| 项目 | 内容 |
|---|---|
| 状态 | 定稿(2026-10-01) |
| 关联 | docs/design/sessions表字段设计.md(登录会话指向本表)· docs/design/需求清单.md §9 |
| 范围 | 列结构 + 语义 + 写入时机;登录流程细节(PBKDF2 参数、节流)归技术稿;方言映射归数据访问层设计 |
| 字段数 | 4 = 1 主键 + 3 业务字段 |
1. 表定位
- 一行 = 一个管理员账号——本表设计为单行(作者),不存在注册路径
- 凭证经部署期初始化创建(env / wrangler secret 的引导凭证,空库幂等落库)——部署完成即就绪;空库且 env 无凭证时由引导页完成初始化(重置兜底通道,见 3.1)
2. 字段清单
| 列 | 类型 | 值来源 | 说明 |
|---|---|---|---|
id |
bigserial PK | 自增 | |
username |
text UNIQUE | 部署期初始化 | 登录名 |
password_hash |
text | 部署期初始化 / 改密 | PBKDF2-SHA256 哈希(WebCrypto 原生,两形态统一——Workers 无 argon2/bcrypt) |
created_at |
timestamptz | 初始化时 |
3. 决策记录(含理由)
3.1 单行表,不做注册;初始化与重置 = 空库双通道
管理员账号由空库初始化创建;改密走登录后的表单(旧密码验证 → 落库)。「单行」是部署行为约定,不是 schema 约束——表结构天然支持多行,未来若需要多管理员 + 角色,扩展为增量动作(加 role 列 + 中间件分支 + 管理页),无需推倒任何东西。
管理面入口的幂等三态判断:
users非空 → 登录页(如常)- 空库 + env 凭证在 → 静默重建(部署与重置共用此通道;密码即 env 凭证)
- 空库 + env 凭证无 → 引导页(设置新用户名密码,直接进入登录态;
users非空后永不复现)
忘记密码的重置:删除 users 行(母体:请运营方执行一条 SQL;CFW:自助 wrangler d1 execute)→ 下一次请求触发三态判断 → 有 env 静默重建后改密,无 env 引导页当场设新密码。env 凭证可留可删、无依赖——留着享受静默重建,删了有页面兜底;抢注窗口仅存在于「删 env + 删行」的重置瞬间(作者主导、分钟级),部署路径(env 在)永远无窗口。
3.2 密码哈希选 PBKDF2-SHA256
WebCrypto 原生支持——母体与 CFW 抽取版同一实现(Workers runtime 无 argon2/bcrypt,选它们会造成两形态分叉);迭代参数归技术稿。
3.3 不建多用户 / 角色引擎
管理操作只有作者一人——RBAC 无用武之地;权限边界由访问面物理隔离(管理面 API 与成员 API 两套路由)。
4. 写入时机
| 时机 | 动作 |
|---|---|
| 部署期初始化(双通道) | 空库 + env 凭证在 → 静默 INSERT(幂等,已初始化则永远跳过);空库 + env 凭证无 → 引导页设新密码后 INSERT(重置兜底) |
| 改密(管理面表单) | UPDATE password_hash |
改密落审计日志(审计为独立需求,表结构归技术稿)。
5. 待定事项
| 事项 | 归属 |
|---|---|
| PBKDF2 迭代参数、登录失败节流策略 | 技术稿 |
| 审计日志表结构 | 技术稿 |