0.3.2
## 背景 后端两个看板接口新增逐行 `ad_revenue_yuan`(元),前端补上展示列。 ## 改动 - `src/lib/types.ts`:`ComparisonRecordListItem` 增 `ad_revenue_yuan: number` (`ComparisonRecordDetail` 自动继承)。 - `comparison-records/page.tsx`:「省」列后新增「广告收益」列(>0 显示绿色 ¥x.xxxx, 否则 `-`);表格 `scroll.x` 1820 → 1920。 - `coupon-data/page.tsx`:`CouponDataRow` 增字段;新增 `fmtYuan` 格式化(¥ 保留 4 位、 空/≤0 显示 `-`);主表「耗时」列后新增「广告收益」列(不动用户抽屉 RECORD_COLUMNS); `scroll.x` 1450 → 1560。 ## 说明 - 后端未更新时该字段为 undefined → 显示 `-`,无害。 - 单次广告收益很小(如 ¥0.0034),故 4 位小数。 - 领券看板默认按会话 app_env=`prod` 筛;真机测试数据在 `dev`,需切换环境才可见。 --------- Co-authored-by: guke <guke@autohome.com.cn> Reviewed-on: #45
傻瓜比价 · 运营后台(前端)
Next.js 15 + Ant Design 5,对接 shaguabijia-app-server 的 admin API(app/admin/)。
后端是独立 FastAPI app(端口 8771,复用 app-server 的 models/repositories + 同一 PostgreSQL,
鉴权用独立 JWT)。本仓只是前端。
功能模块
侧边栏 MENU(src/app/(main)/layout.tsx)共 12 个模块,均已上线:
- 数据大盘(
/dashboard)— 核心经营指标概览。 - 用户管理(
/users)— 列表(多条件筛选+服务端排序)+ 360 详情;封禁/解封、调金币、调现金;运营开关:开启新手引导(标记用户重看一次,看完自动恢复)、开/关调试链接(trace 排障)、以及上述操作的批量勾选执行。 - 设备管理(
/devices)— 按硬件 ANDROID_ID 聚合走过新手引导的设备;可单设备或全量「重设新手引导」。 - 提现管理(
/withdraws)— 提现单审核(通过即发起微信打款 / 拒绝退回余额)、查单刷新、批量通过/拒绝/刷新、批量对账,含微信配置健康检查 + 现金账本校验。 - 上报审核(
/price-reports)— 用户上报「某平台更低价」+ 截图,人工核实;通过发放 1000 金币、拒绝需填理由(用户端轮询看到结果)。 - 比价记录(
/comparison-records)— 比价过程明细(逐平台结局/卡在哪一步、LLM 调用明细、trace);支持按页面输入的 LLM 单价做 token / 成本估算(纯前端,见calcCost/pricePerMTok)。 - 反馈工单(
/feedbacks)— 用户反馈审核闭环:采纳发金币 / 拒绝填用户可见原因(FeedbackHandleDrawer),并含反馈二维码配置。 - 广告管理(
/ad-revenue)— 穿山甲广告配置(应用ID/各场景广告位ID/验签密钥/开关)+ 收益报表(展示/预估收益 与 应发/实发金币逐组对账)。 - CPS 分发(
/cps)— 优惠券分发与对账(美团/淘宝/京东);单页 Tabs:对账统计 / 群管理 / 活动管理 / 订单明细。含群对账详情子页(/cps/groups/[id]):点击/复制趋势折线 + 按天明细 + 群内微信用户画像。 - 系统配置(
/config)— 业务运行参数(金额/上限等)在线读写,改完即时生效、每次进审计。 - 管理员(
/admins)— 管理员账号管理(仅super_admin可见)。 - 审计日志(
/audit-logs)— 所有写操作的审计流水。
按角色显示操作
权限以 src/lib/auth.ts 的 canDo() 为准(super_admin 恒可全部),各 page.tsx 用 canDo([...]) 控制按钮:
- finance(钱):提现审核、用户调金币/调现金、CPS 对账(刷新拉美团订单)。
- operator(用户+内容):用户封禁/调试链接/新手引导、反馈审核、上报审核、设备重设引导、CPS 群/活动管理。
- super(super_admin):以上全部 + 管理员账号管理。
- 数据大盘 / 比价记录 / 广告管理 / 系统配置 / 审计日志:无
canDo门,登录即可查看。
本地开发
# 1. 起 admin 后端(在 shaguabijia-app-server 目录)
conda activate price && uvicorn app.admin.main:admin_app --port 8771
# 2. 建首个超管(打印密码)
python scripts/create_admin.py --username admin --role super_admin
# 3. 起前端
npm install && npm run dev # → http://localhost:3001
.env.local 已指向 http://localhost:8771。
生产部署(阿里云,域名 admin.shaguabijia.com)
① 后端 admin(在 app-server 机器,复用同一 codebase)
scp deploy/shaguabijia-admin.service server:/etc/systemd/system/ # 文件在 app-server/deploy/
ssh server "systemctl daemon-reload && systemctl enable --now shaguabijia-admin"
ssh server "cd /opt/shaguabijia-app-server && .venv/bin/python scripts/create_admin.py --username admin --role super_admin"
② 前端
npm run build
rsync -avz --exclude node_modules --exclude .next/cache ./ server:/opt/shaguabijia-admin-web/
ssh server "cd /opt/shaguabijia-admin-web && npm install --omit=dev && npm run build && pm2 start ecosystem.config.js"
③ nginx
scp deploy/nginx/admin.shaguabijia.com.conf server:/etc/nginx/conf.d/
ssh server "nginx -t && systemctl reload nginx"
⚠️ 上线必查
- app-server 的
.env里ADMIN_JWT_SECRET改成 ≥32 字节强随机串(默认change-me-admin可伪造 token) - nginx 打开 IP 白名单(运营出口 IP)+ HTTPS 证书就位
.env.production的NEXT_PUBLIC_API_BASE留空(同域,nginx 反代 /admin/api).env.production的NEXT_PUBLIC_MEDIA_BASE必须指向 App 后端https://app-api.shaguabijia.com(/media 的真正的家),否则后台所有 /media 图片(上报/反馈截图、二维码、头像)被拼到 admin 域而 404。NEXT_PUBLIC_*是编译期常量,改完必须重新npm run build才生效(详见src/lib/media.ts)- 首个 super_admin 已建、能登录
Description
Languages
TypeScript
98.6%
Shell
1.3%
JavaScript
0.1%