管理控制台把现有 Admin API 组织成一个运营工作台,覆盖用户、积分、内测码、兑换码、公告、反馈、支付、AI 任务和动态业务配置。基础设施日志、队列积压、数据库查询和对象存储仍在 Cloudflare 面板处理。
访问控制台
- 运行
prepare-cloudflare,保存首次成功初始化后打印的一次性管理员凭据。 - 登录后在设置页修改自动生成的密码。
- 打开
/{locale}/admin,系统会跳转到/{locale}/admin/dashboard。
未登录用户会跳转到登录页。已登录账号没有 D1 admin 角色时返回 403 Forbidden。
程序化客户端通过明确 scope 的 OAuth Grant 调用 API,不存在静态管理员 API Token。
运行 opc auth connect --name <project> --server <origin> --scopes <scope-list>。CLI 显示授权 URL,已登录用户在浏览器审核并批准 Scope 后,CLI 通过 PKCE 自动取得 Token,并按连接名和服务地址隔离保存。opc api request 使用指定连接。设置页直接展示 Grant;撤销后 Access Token 和 Refresh Token 都立即失效。
页面
| 页面 | 路由 | 用途 |
|---|---|---|
| 概览 | /{locale}/admin/dashboard |
查看核心指标、待处理异常和 AI 任务分布 |
| 用户 | /{locale}/admin/users |
查找用户、查看监控规则并发放积分 |
| 积分流水 | /{locale}/admin/credit-transactions |
查看指定用户的积分余额变化 |
| 邀请记录 | /{locale}/admin/affiliate-referrals |
查看邀请人与被邀请人的关系及奖励状态 |
| 内测码 | /{locale}/admin/beta-codes |
批量生成并查看可用或使用状态 |
| 兑换码 | /{locale}/admin/credit-codes |
批量生成并查看领取或发放状态 |
| 反馈 | /{locale}/admin/feedback |
查询反馈并查看完整内容 |
| 公告 | /{locale}/admin/notifications |
发布全站或定向公告并查看历史 |
| 系统设置 | /{locale}/admin/configuration |
按业务域管理保存在 D1 的动态配置 |
| 支付商品 | /{locale}/admin/payment-products |
将已配置支付平台的远端商品关联到用户权益 |
| AI 服务商 | /{locale}/admin/ai-providers |
管理 AI 端点、模型和路由可用性 |
| 支付 | /{locale}/admin/payments |
查看交易和争议支付 |
| AI 任务 | /{locale}/admin/ai-tasks |
跨用户查看图像、TTS 和视频任务 |
locale 可以是 en 或 zh。切换语言时会保留当前管理路由和查询状态。
管理系统设置
打开“系统设置”,通过顶部水平 Tab 切换业务域。常规、认证、邮件、积分、邀请、支付、AI 和监控各自只有一个显式保存表单。监控配置统一管理每次完成分析所用的模型和积分。保存一个业务域后,后续新请求立即使用新配置;Storage 上传策略只由 ENV 提供,不在后台出现。已经开始的操作继续使用启动时取得的快照。
修改字段只会把当前 Tab 标记为未保存。切换 Tab 或离开页面时必须选择“保存”“放弃”或“取消”。“保存”会先校验并持久化当前业务域再离开;“放弃”会恢复最近一次保存的值并离开;“取消”会停留在当前表单。系统没有草稿、发布、自动保存或跨域 Save All。
功能开关使用它实际控制的业务动作命名,依赖字段只在父级动作开启后显示。开放注册统一管理邮箱域名、内测码、邮箱验证和冷却时间。Turnstile 密钥由部署流程提供,后台只保留运行时开关。必填项缺失时,错误显示在对应控件旁,旧配置继续生效。密钥字段永远不显示明文,保存前只能选择“保留当前值”“替换值”或“删除值”。Provider Callback URL 从应用地址派生,只读展示并提供复制操作。
支付路由只能选择已配置 API 和 Webhook 密钥的平台,国家覆盖使用可搜索的国家选择器。AI 路由提供均衡、稳定优先、速度优先和成本优先预设,只有选择自定义时才显示原始权重。AI 任务保留期与路由策略分开配置。
支付平台凭据保留在系统设置。支付商品和 AI 服务商使用独立工作区,因为运营人员会更频繁地单独修改这些集合。每个实体都有独立的新建、编辑和删除流程,内部 ID 由服务端生成。AI 提供商按用途与实现选择,模型使用标签输入。Base URL 默认填入官方地址,也可以改为代理或兼容接口地址。保存成功后只替换目标行,删除前必须确认。版本过期时返回 CONFIG_CONFLICT,需要显式刷新后重新编辑。页面不会展示任何密钥值。
查找用户并发放积分
- 打开
/{locale}/admin/users。 - 按用户名或邮箱搜索。列表显示每个用户所属租户分片中的剩余积分和活跃监控规则数。内部用户 ID 只作为次要技术信息展示。
- 打开用户详情查看该用户的监控 URL、条件、状态和最近检查结果,需要充值时再选择“发放积分”。
- 填写积分数量和备注,然后选择“永不过期”“一周后”或“一个月后”。
- 核对用户和发放内容后确认。
幂等所需的 source_id 由控制台内部生成,运营人员不需要填写,也不会看到该字段。
可以从侧栏或用户详情进入“积分流水”,查看该用户每次余额变化。进入“邀请记录”可以搜索邀请关系,并查看每条邀请奖励是否完成。
批量生成码
内测码
打开 /{locale}/admin/beta-codes,设置数量和可选过期时间,核对后生成。离开结果页前复制返回的码。
列表会区分未使用和已使用状态,并显示使用该码的用户。
兑换码
打开 /{locale}/admin/credit-codes,设置数量、积分面额和可选过期时间,核对后生成。跨库积分发放完成时,兑换码会依次从未使用变为已领取和已发放。
发布公告
- 打开
/{locale}/admin/notifications。 - 选择公告类型,填写标题和内容。
- 保持全站范围,或按用户名和邮箱选择目标用户。
- 核对发布范围和内容后确认。
历史列表支持按类型、范围、用户和日期筛选。打开生效中的公告可以修改范围、类型、标题和内容。归档后用户不再看到该公告,后台仍保留记录;已归档公告不可编辑或恢复。
排查 AI 任务
- 打开
/{locale}/admin/ai-tasks。 - 按任务类型、状态或用户筛选。Provider、模型、任务 ID 和日期位于高级筛选中。
- 打开任务详情,查看 Provider 状态、尝试次数、时间、已存输出和最后错误。
- 使用详情旁的 Cloudflare 外链继续查看对应 Queue、R2 Bucket 或 Worker。
控制台中的 AI 任务仅供查看,不支持重试、取消、重放或修改参数。
查看支付和反馈
打开 /{locale}/admin/payments,按用户、Provider、类型、状态或日期筛选交易。打开一行可以查看 Provider 引用和金额。退款或争议处理仍在控制台之外完成。
打开 /{locale}/admin/feedback,按类型、用户或日期筛选并查看完整反馈。控制台不会修改用户反馈,也没有额外的处理状态。
筛选和可分享状态
常用筛选保持可见,技术标识和日期范围收在高级筛选中。当前筛选、页码和已打开详情会写入 URL,因此授权运营人员可以刷新或分享同一视图。使用“重置筛选”返回默认列表。
跳转 Cloudflare
Cloudflare 外链放在对应资源旁:
| 控制台位置 | Cloudflare 目标 |
|---|---|
| 控制台顶部 | 已部署 Worker |
| AI 任务列表 | 相关 Queues |
| AI 任务详情 | 可用的 Queue、R2 Bucket 和 Worker |
缺少 Cloudflare 账号或资源标识时,对应外链会隐藏。控制台用于查看产品业务状态,Cloudflare 用于查看日志、指标、队列投递、数据库和对象等平台状态。
当前范围
- Public assets 暂时只保留 API,没有管理页面。
- 支付、反馈和 AI 任务只支持查看。
- 控制台不支持作废内测码或兑换码。
- 生效中的公告可以编辑或归档;已归档公告只保留在后台历史中,不能恢复。
- 暂不支持细粒度管理员权限,浏览器访问权只属于唯一 D1
admin账号。
常见问题
| 现象 | 检查项 |
|---|---|
| 跳转到登录页 | 完成登录后返回原管理页面 |
403 Forbidden |
确认当前登录账号是 D1 管理员 |
| 列表为空 | 重置筛选,并确认相关 API 已写入数据 |
| 没有 Cloudflare 外链 | 运行对应 prepare 流程,并确认公开资源标识已配置 |