feat/admin-web-ops-enhancements
- 调金币/现金:新增「设为指定值」模式;修 InputNumber addonAfter 废弃告警; 弹窗抽成共享组件 AdjustBalanceModals(列表页/详情页复用,内含防竞态余额拉取) - 新增 lib/format.ts 统一金额/时间格式化:区分 UTC 字段与钱包流水(北京 wall-clock), 修正提现详情现金流水快 8 小时、用户注册时间慢 8 小时等偏差 - 提现页:账本校验(ledger-check)改按需触发,写操作后不再重算;现金流水时区修正 - 用户详情页:加载失败 Result 兜底(不再永久转圈)+ 现金流水 tab + 调金币/现金/封禁入口 - 金币审计页:加「只看不一致」过滤;截断提示改用后端精确 truncated 旗标 - 用户列表:注册/最近登录/ID 列排序 + 渠道/昵称/时间范围筛选 + 批量封禁解封/开关调试链接 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
傻瓜比价 · 运营后台(前端)
Next.js 15 + Ant Design 5,对接 shaguabijia-app-server 的 admin API(app/admin/)。
后端是独立 FastAPI app(端口 8771,复用 app-server 的 models/repositories + 同一 PostgreSQL,
鉴权用独立 JWT)。本仓只是前端。
功能(P0)
数据大盘 / 用户管理(列表+360详情+封禁+调金币) / 提现管理(列表+重试+对账) / 反馈工单 / 管理员账号(super) / 审计日志。按角色显示操作:finance=钱、operator=用户+反馈、super=全部。
本地开发
# 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)- 首个 super_admin 已建、能登录
Description
Languages
TypeScript
98.6%
Shell
1.3%
JavaScript
0.1%