Skip to content

feat(beta 04/08): 私测邀请、权益门禁与一次性赠额 - #166

Open
hifizz wants to merge 4 commits into
spec/beta-02-billing-quotafrom
spec/beta-04-access
Open

hifizz wants to merge 4 commits into
spec/beta-02-billing-quotafrom
spec/beta-04-access

Conversation

@hifizz

@hifizz hifizz commented Sep 17, 2026

Copy link
Copy Markdown
Owner

范围

private-beta-access OpenSpec 基础上实现 Private Beta 核心闭环,并继续以 #164spec/beta-02-billing-quota)为直接父 PR。

  • Waiting List 归一化去重,公开接口统一返回 accepted,避免邮箱枚举。
  • Admin 审批/重发:必填原因、同源校验、审计记录;重发先撤销旧 token。
  • 32 字节随机 token,数据库只存 SHA-256;待发明文仅存在 AES-256-GCM 加密 outbox,发送/轮换/核销后销毁。
  • 邀请 GET 只展示;显式 POST 才核销。事务内锁定邀请、校验数据库中的已验证邮箱、写入 Beta 权益、核销状态、审计,并调用 feat(beta 02/08): 原子额度预占、计量与幂等结算 #164 的幂等欢迎赠额。
  • Resend 发送使用幂等键;webhook 验签、事件去重,delivered 不会被乱序 sent 回退,bounce/complaint/failed 保留终态。
  • Private Beta 开关默认关闭;开启后首页切换为候选名单,未激活/暂停账号显示明确状态。
  • Thread Chat 全部服务端入口、5 个生成入口、标题生成和旧 /api/chat 均执行权益门禁;Beta 模型使用精确 BETA_MODEL_IDS allowlist,过期 Pro 回落到 Beta 策略。
  • 增加候选名单、邀请激活、Admin 审批 UI 和独立 PostgreSQL CI。

安全与部署边界

  • 本 PR 不生成 migration;由 develop 集成任务统一生成和验证。
  • BETA_ACCESS_ENFORCED=false 为默认值。启用前必须配置 BETA_INVITE_ENCRYPTION_KEYBETTER_AUTH_URL、Resend 发件域/密钥、webhook secret 和已验价的精确模型 ID。
  • 不发送真实邀请,不修改生产开关,不采购模型或邮件域名。

验证

本地已通过:

  • tsc --noEmit
  • 相关 ESLint
  • e2e/thread-chat/chat-request-context.test.mjs
  • 邀请 token/hash/AES-GCM 往返检查
  • git diff --check

PR CI 新增隔离 PostgreSQL:重复申请、token 不落明文、邮箱不匹配、并发核销、赠额幂等、webhook 去重与乱序。当前工作环境无 PostgreSQL,本地未执行该 DB 用例。OpenSpec CLI 因其外部遥测目标被执行策略阻止,未绕过;现有 OpenSpec Action 继续作为远端验证。

@vercel

vercel Bot commented Sep 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
thread-chatbot Error Error Sep 18, 2026 8:16am UTC

@coderabbitai

coderabbitai Bot commented Sep 17, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: adc5f767-7d6f-4b09-aaba-a6871861e432


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hifizz hifizz changed the title docs(beta 04/08): Waiting List、邀请激活与模型权益方案 feat(beta 04/08): 私测邀请、权益门禁与一次性赠额 Sep 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant