awesome-gpt-image-2 管理后台实现完整指南:运营指标可视化与管理员权限设计
【免费下载链接】awesome-gpt-image-2Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+ 套工业级模板与可复用 Skills,新增 2.5 同提示词对比专区,附完整提示词与生成记录,持续更新。项目地址: https://gitcode.com/GitHub_Trending/awe/awesome-gpt-image-2
awesome-gpt-image-2 是一个 GPT Image 2 / 2.5 提示词与案例库开源项目,收录 530+ 个案例和 20+ 套工业级模板。除了画廊本身,项目还内置了一个管理后台:超级管理员可以查看流量与业务运营指标、管理用户列表,并一键调整用户积分。本文带你从权限设计到指标可视化,完整看懂这个管理后台是怎么实现的,新手也能轻松上手。
一、管理后台是做什么的?
这个项目的网站(由 Vite + Supabase + Vercel 云函数构成)支持用户登录、积分消耗、会员订阅与付费社区。而管理后台就是运营者的"驾驶舱",入口在登录后的用户区域,仅对超级管理员可见(见 src/main.jsx 中的adminPanel文案与adminOnly提示)。
后台核心能力有三大块:
| 模块 | 能力 | 对应接口 |
|---|---|---|
| 📊 数据看板 | 流量指标 + 业务指标 + 趋势图表 | api/admin/metrics.js |
| 👥 用户管理 | 用户列表、角色、积分、会员、用量 | api/admin/users.js |
| 🪙 积分调整 | 手动增减用户积分,留痕可审计 | api/admin/credits/adjust.js |
二、管理员权限设计:三道防线
管理后台最值得关注的是权限设计。项目没有把"管理员"做成普通数据库字段随便可改,而是采用了白名单 + 接口校验 + 数据库授权三道防线。
1. 邮箱白名单:谁能成为超级管理员?
环境变量SUPER_ADMIN_EMAILS中配置了管理员邮箱列表。用户登录时,api/_lib/supabase.js 中的isSuperAdminEmail函数会比对邮箱,命中才把用户角色写为super_admin。想新增管理员,只需改环境变量,不需要改代码。
2. 每个接口都要二次校验
打开任意一个管理接口都能发现同样的"守卫"模式:
- api/admin/metrics.js:先经
getAuthContext验证 Bearer Token,再检查profile.isSuperAdmin,不满足直接返回 403; - api/admin/users.js 与 api/admin/credits/adjust.js 同样遵循"先认证、再鉴权"的流程。
前端隐藏入口只是"面子",服务端逐接口校验才是"里子"——普通用户即使手工构造请求也会被拦截。
3. 数据库层:RPC 只授权给 service_role
指标聚合全部放在数据库函数里,以 supabase/migrations/20260512143000_pricing_admin_metrics.sql 为例:
get_admin_dashboard_metrics汇总用户数、会员数、生成量、积分流水等 15 项指标;- 迁移脚本末尾明确
revoke execute ... from public, anon, authenticated,只把执行权grant给service_role。
也就是说,客户端凭 anon key 根本调不到这些函数,只有服务端持有 service_role key 的云函数才能执行——这是权限设计的最后一道墙。
三、运营指标可视化:流量 + 业务双看板
api/admin/metrics.js 是看板的"总调度",它并发拉取两个数据源并合并输出:
1. 流量指标:来自 Google Analytics 4
由 api/_lib/ga4.js 调用 GA4 Data API(支持 OAuth 与服务账号两种凭据),展示:
- 📈 核心卡片:PV、UV、访问量、新用户数
- 📊 趋势图:按日期生成 UV / PV / 访问序列
- 🏆 排行榜:热门页面、流量渠道、国家分布
看板还支持今日 / 7天 / 30天 / 90天 / 自定义区间切换,自定义区间最长 180 天,防止大范围查询拖慢服务。
2. 业务指标:来自 Supabase 数据库
get_admin_dashboard_metrics_v2与get_admin_dashboard_daily_metrics两个函数(见 supabase/migrations/20260513095141_admin_metrics_charts.sql)分别负责"总量"与"逐日明细":
- 注册用户、新增会员、生图总量、成功 / 失败 / 排队数
- 积分视角:累计消耗、流通中的积分余额、购买积分、会员赠送积分
- 逐日趋势:注册数、新增会员、生成量、积分消耗,直接驱动前端的趋势折线图
配套的created_at索引让区间统计可以走索引扫描,数据量大了也不卡。
四、用户管理与积分调整:带审计痕迹的操作
1. 用户列表:一屏看懂每个用户
api/admin/users.js 调用get_admin_user_summaries,一次返回最近 100 名用户的:邮箱、角色、积分余额、会员套餐与状态、免费次数、累计生成量、购买与会员赠送积分、最近一次生成的时间。运营者不需要打开数据库,就能在表格中定位"谁在活跃、谁该跟进"。
2. 积分调整:手动充值也有据可查
api/admin/credits/adjust.js 实现了"手动加减积分":管理员输入金额与理由后,接口调用grant_user_credits数据库函数,并把调整理由和操作人 ID写进交易的元数据里。这意味着每一笔手动调整都能在积分流水中回溯——这是后台设计里容易被新手忽略、却极重要的"审计留痕"。
五、新手可以借鉴的 4 个设计点
- 权限分层:环境变量白名单(谁能当管理员)→ 接口逐个鉴权(谁能调接口)→ 数据库
revoke/grant(谁能跑查询),三层缺一不可; - 聚合下沉到数据库:指标计算写成 RPC 函数 + 建索引,API 层只做参数校验与结果整形,代码短且性能好;
- 优雅降级:GA4 未配置或请求失败时,api/admin/metrics.js 会返回带
error标记的兜底结构,前端提示"暂无数据"而不是整个看板崩溃; - 范围约束:日期区间最长 180 天、用户列表最多 500 条、调整金额必须为非零整数——用参数约束挡住恶意或误操作的"大开销请求"。
总结
awesome-gpt-image-2 的管理后台是一个"小而完整"的参考实现:用邮箱白名单 + 服务端鉴权 + 数据库授权的组合守住管理员权限,用 GA4 流量指标与 Supabase 业务指标组成可视化双看板,再用带审计留痕的积分调整补齐运营动作。如果你正在为自己的开源项目设计后台,这套"权限三道防线 + 指标双看板 + 操作留痕"的思路,值得直接抄作业。相关环境配置清单可参阅 README.md 中的Website Auth & Generation章节。
【免费下载链接】awesome-gpt-image-2Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+ 套工业级模板与可复用 Skills,新增 2.5 同提示词对比专区,附完整提示词与生成记录,持续更新。项目地址: https://gitcode.com/GitHub_Trending/awe/awesome-gpt-image-2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考