docs: 更新 README —— 充值/易支付、并发分组、订单、公告;size 取代 quality;视频 720p/1080p

- 核心功能补充:在线充值(易支付微信/支付宝)、并发分组、订单、站内公告、累计充值
- 前台/后台功能清单同步(充值·订单·公告·并发组·订单管理)
- 去掉已移除的 quality:size 同时决定比例+分辨率档(图像看长边 1K/2K/4K,视频看短边 720p/1080p)
- API 示例、仓库结构(provider/epay、repo/views)同步;中英文一致

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-01 08:54:06 +08:00
co-authored by Claude Opus 4.8
parent 8ec4562f81
commit 4cd5454a27
2 changed files with 30 additions and 23 deletions
+15 -11
View File
@@ -65,13 +65,13 @@ It's more than an API proxy: it ships with **credit billing, CDK top-ups, referr
#### 🎨 Generation #### 🎨 Generation
- Images + videos in one place, with **image-to-image / reference frames** (first frame, last frame, style reference) - Images + videos in one place, with **image-to-image / reference frames** (first frame, last frame, style reference)
- Multiple resolutions (1K / 2K / 4K), aspect ratios and video durations — configured and priced per model - Multiple resolutions (images 1K / 2K / 4K · videos 720p / 1080p), aspect ratios and video durations — configured and priced per model
- 7 providers, 10+ models, **enable / disable / re-price from the admin console**, no code changes - 7 providers, 10+ models, **enable / disable / re-price from the admin console**, no code changes
#### 🔌 OpenAI Compatible #### 🔌 OpenAI Compatible
- Text-to-image `/v1/images/generations` · image-to-image `/v1/images/edits` (multipart ref upload) · video `/v1/videos` (Sora-style async: create → poll → `/content`) · `/v1/models` - Text-to-image `/v1/images/generations` · image-to-image `/v1/images/edits` (multipart ref upload) · video `/v1/videos` (Sora-style async: create → poll → `/content`) · `/v1/models`
- **Strict OpenAI params**: `size` sets the aspect ratio, `quality` the resolution tier — just swap `base_url` + `api_key` into an existing OpenAI SDK - **Strict OpenAI params**: `size` drives **both aspect ratio + resolution tier** (images by long edge → 1K/2K/4K, videos by short edge → 720p/1080p) — just swap `base_url` + `api_key` into an existing OpenAI SDK
- Image results returned **inline as base64** — nothing stored server-side, privacy-friendly - Image results returned **inline as base64** — nothing stored server-side, privacy-friendly; the in-app **/docs** ships a size ↔ tier reference table
#### 🔁 Account Pools + Smart Failover #### 🔁 Account Pools + Smart Failover
- Round-robin scheduling across the pool; one bad account doesn't break the whole - Round-robin scheduling across the pool; one bad account doesn't break the whole
@@ -86,16 +86,19 @@ It's more than an API proxy: it ships with **credit billing, CDK top-ups, referr
#### 💳 Billing & Operations #### 💳 Billing & Operations
- Credit-based (**pre-deduct + refund on failure**), priced per model / resolution / duration - Credit-based (**pre-deduct + refund on failure**), priced per model / resolution / duration
- **Agent pricing**: a user can be set as an "agent" role and models can carry agent prices; agent users (including their API key calls) are billed at the agent price, falling back to the normal price when unset - **Agent pricing**: a user can be set as an "agent" role and models can carry agent prices; agent users (including their API key calls) are billed at the agent price, falling back to the normal price when unset
- **Online top-up (易支付 / epay)**: WeChat / Alipay QR, preset + custom amounts, unpaid orders auto-cancel after 30 min, MD5-verified idempotent callback auto-credits; cumulative top-up tracked
- **CDK redeem codes** · **referral rewards** · email sign-up / verification code / password reset - **CDK redeem codes** · **referral rewards** · email sign-up / verification code / password reset
- **Concurrency groups**: cap a user's simultaneous generations (playground + API key combined, `0` = unlimited), self-healing Redis counters, new users auto-join the default group
- Three roles: regular user / agent / admin (single) - Three roles: regular user / agent / admin (single)
#### 🖥️ User Frontend (Vue 3) #### 🖥️ User Frontend (Vue 3)
- Playground · creations gallery · generation logs (with failure reasons / source tags) - Playground · creations gallery · generation logs (with failure reasons / source tags)
- API docs · API key management · referral · about, light / dark theme - **Top-up · Orders** (recharge history / resume unpaid) · API docs · API key management · referral · about, light / dark theme
- **In-app announcements**: a Markdown notice pops up after login and re-shows whenever its content changes
#### 🛠️ Admin Console #### 🛠️ Admin Console
- Overview dashboard (trends / DAU / top failures / top spenders) - Overview dashboard (trends / DAU / top failures / top spenders)
- Model management (normal + agent price) · account management (bulk import / dedup / quota) · site-wide logs · user management (set as agent) · CDK · showcase · site config - Model management (normal + agent price) · account management (bulk import / dedup / quota) · **concurrency groups** · **order management** (filter / search / paginate) · site-wide logs · user management (set as agent / assign concurrency group / view cumulative top-up) · CDK · showcase · **announcements** · site config (incl. epay)
**🧰 Engineering highlights**: tls-client (Chrome JA3/JA4 fingerprint) reliably passes Cloudflare · media stored in S3/RustFS, served through an authenticated proxy with retention cleanup · self-healing maintenance loop (quota recovery / credential refresh / orphan-job cleanup with refunds) · one-command Docker deploy with acme.sh auto HTTPS. **🧰 Engineering highlights**: tls-client (Chrome JA3/JA4 fingerprint) reliably passes Cloudflare · media stored in S3/RustFS, served through an authenticated proxy with retention cleanup · self-healing maintenance loop (quota recovery / credential refresh / orphan-job cleanup with refunds) · one-command Docker deploy with acme.sh auto HTTPS.
@@ -116,15 +119,14 @@ It's more than an API proxy: it ships with **credit billing, CDK top-ups, referr
## 🔌 OpenAI-Compatible API ## 🔌 OpenAI-Compatible API
```bash ```bash
# Text-to-image — pure OpenAI params: size→aspect ratio, quality→tier (low/medium/high→1K/2K/4K) # Text-to-image — pure OpenAI params: size drives both aspect ratio + tier (long edge <1800→1K / <3500→2K / ≥3500→4K)
curl https://your-domain/v1/images/generations \ curl https://your-domain/v1/images/generations \
-H "Authorization: Bearer sk-xxxx" \ -H "Authorization: Bearer sk-xxxx" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{ -d '{
"model": "gpt-image-2", "model": "gpt-image-2",
"prompt": "a cute cat on a desk, studio lighting", "prompt": "a cute cat on a desk, studio lighting",
"size": "1024x1024", "size": "2048x2048"
"quality": "high"
}' }'
# Image-to-image — multipart reference upload (multiple via image[]) # Image-to-image — multipart reference upload (multiple via image[])
@@ -238,8 +240,10 @@ backend/ Backend source (Go)
│ │ ├── grok/ Grok (grok.com, spoofed statsig, video) │ │ ├── grok/ Grok (grok.com, spoofed statsig, video)
│ │ ├── leonardo/ Leonardo │ │ ├── leonardo/ Leonardo
│ │ ├── krea/ Krea │ │ ├── krea/ Krea
│ │ ── imagine/ Imagine.art │ │ ── imagine/ Imagine.art
│ ├── repo/ Data-access layer (users / models / accounts / logs / CDK…) │ ├── custom/ Custom upstream (OpenAI-compatible v1, routed by id)
│ │ └── epay/ 易支付 / epay (mapi order + MD5-verified callback, top-ups)
│ ├── repo/ Data-access layer (users / models / accounts / logs / CDK / orders / concurrency groups…)
│ ├── service/ Business logic (scheduling, billing, account pools, keep-alive, maintenance) │ ├── service/ Business logic (scheduling, billing, account pools, keep-alive, maintenance)
│ └── storage/ RustFS / S3 media storage │ └── storage/ RustFS / S3 media storage
├── Dockerfile Multi-stage build (compile source → slim runtime image) ├── Dockerfile Multi-stage build (compile source → slim runtime image)
@@ -247,7 +251,7 @@ backend/ Backend source (Go)
frontend/ Frontend source (Vue 3 + Vite) frontend/ Frontend source (Vue 3 + Vite)
├── src/ ├── src/
│ ├── views/ Pages (playground / accounts / models / logs / overview / users…) │ ├── views/ Pages (playground / accounts / models / users / concurrency / orders / logs / overview / top-up / settings…)
│ ├── components/ Reusable components (modals / selectors / lightbox…) │ ├── components/ Reusable components (modals / selectors / lightbox…)
│ ├── layouts/ Public / admin layouts │ ├── layouts/ Public / admin layouts
│ ├── utils/ Utility functions │ ├── utils/ Utility functions
+15 -12
View File
@@ -51,7 +51,7 @@
> 💡 前后端**完全开源**(MIT),Go + Vue 3,可自由二开 / 自部署。 > 💡 前后端**完全开源**(MIT),Go + Vue 3,可自由二开 / 自部署。
**一句话亮点** 🔌 OpenAI 兼容 · 🤖 7 平台十余模型 · 🔁 自动换号 / Token 保活 · 💳 积分 + 代理价计费 · 🎨 画图前端 + 管理后台 · 🐳 一键部署 + 自动 HTTPS **一句话亮点** 🔌 OpenAI 兼容 · 🤖 7 平台十余模型 · 🔁 自动换号 / Token 保活 · 💳 积分 + 在线充值(易支付)+ 代理价 · 🧩 并发分组 · 🎨 画图前端 + 管理后台 · 🐳 一键部署 + 自动 HTTPS
## 🖼️ 界面预览 ## 🖼️ 界面预览
@@ -65,13 +65,13 @@
#### 🎨 生成能力 #### 🎨 生成能力
- 生图 + 生视频一站式,支持**图生图 / 参考图**(首帧、末帧、风格参考) - 生图 + 生视频一站式,支持**图生图 / 参考图**(首帧、末帧、风格参考)
- 多分辨率(1K / 2K / 4K)、多宽高比、视频多时长,按模型独立配置与定价 - 多分辨率(图像 1K / 2K / 4K · 视频 720p / 1080p)、多宽高比、视频多时长,按模型独立配置与定价
- 7 大供应商、十余模型,后台**动态启用 / 下架 / 改价**,无需改代码 - 7 大供应商、十余模型,后台**动态启用 / 下架 / 改价**,无需改代码
#### 🔌 OpenAI 兼容 #### 🔌 OpenAI 兼容
- 文生图 `/v1/images/generations` · 图生图 `/v1/images/edits`(multipart 上传参考图) · 视频 `/v1/videos`(Sora 式异步:创建→轮询→`/content` 下载) · `/v1/models` - 文生图 `/v1/images/generations` · 图生图 `/v1/images/edits`(multipart 上传参考图) · 视频 `/v1/videos`(Sora 式异步:创建→轮询→`/content` 下载) · `/v1/models`
- **严格 OpenAI 入参**:`size` 决定比例、`quality` 决定画质档,改个 `base_url` + `api_key` 即接现有 OpenAI SDK - **严格 OpenAI 入参**:`size` **同时决定比例 + 分辨率档**(图像看长边 → 1K/2K/4K,视频看短边 → 720p/1080p),改个 `base_url` + `api_key` 即接现有 OpenAI SDK
- 图片结果 **base64 直返**,服务端不留存文件,隐私友好 - 图片结果 **base64 直返**,服务端不留存文件,隐私友好;站内 **/docs** 附「分辨率对照表」直接查 `size` 该传什么
#### 🔁 多账号池 + 智能故障转移 #### 🔁 多账号池 + 智能故障转移
- 账号池调度,单账号出错不影响整体 - 账号池调度,单账号出错不影响整体
@@ -93,16 +93,19 @@
#### 💳 计费与运营 #### 💳 计费与运营
- 积分制(**预扣 + 失败退款**),按模型 / 分辨率 / 时长精细定价 - 积分制(**预扣 + 失败退款**),按模型 / 分辨率 / 时长精细定价
- **代理价体系**:用户可设为「代理」角色,模型可设代理价;代理用户(含其 API Key 调用)自动按代理价计费,未设代理价则回退普通价 - **代理价体系**:用户可设为「代理」角色,模型可设代理价;代理用户(含其 API Key 调用)自动按代理价计费,未设代理价则回退普通价
- **在线充值(易支付)**:微信 / 支付宝扫码,金额档位 + 自定义,订单 30 分钟未付自动取消,支付回调 MD5 验签 + 幂等自动到账;累计充值可查
- **CDK 兑换码**充值 · **邀请奖励** · 邮箱注册 / 验证码 / 找回密码 - **CDK 兑换码**充值 · **邀请奖励** · 邮箱注册 / 验证码 / 找回密码
- **并发分组**:按分组限制用户「同时生成数」(画图台 + API Key 合计,`0` = 不限),Redis 自愈计数,新用户自动入默认组
- 三级角色:普通用户 / 代理 / 管理员(唯一) - 三级角色:普通用户 / 代理 / 管理员(唯一)
#### 🖥️ 用户前台(Vue 3) #### 🖥️ 用户前台(Vue 3)
- 画图台 · 创作记录画廊 · 生成日志(含失败原因 / 来源标签) - 画图台 · 创作记录画廊 · 生成日志(含失败原因 / 来源标签)
- API 文档 · API Key 管理 · 邀请 · 关于,亮 / 暗主题 - **充值 · 订单**(充值记录 / 未付可继续支付) · API 文档 · API Key 管理 · 邀请 · 关于,亮 / 暗主题
- **站内公告**:登录后自动弹出 Markdown 公告,内容更新即重推
#### 🛠️ 管理后台 #### 🛠️ 管理后台
- 概览看板(趋势 / DAU / 失败 Top / 消费榜) - 概览看板(趋势 / DAU / 失败 Top / 消费榜)
- 模型管理(普通价 + 代理价) · 账号管理(批量导入 / 去重 / 额度) · 全站日志 · 用户管理(设为代理) · CDK · 展示位 · 站点配置 - 模型管理(普通价 + 代理价) · 账号管理(批量导入 / 去重 / 额度) · **并发分组** · **订单管理**(筛选 / 搜索 / 分页) · 全站日志 · 用户管理(设为代理 / 分配并发组 / 看累计充值) · CDK · 展示位 · **站点公告** · 站点配置(含易支付)
**🧰 工程亮点**:tls-client(Chrome JA3/JA4 指纹)稳定穿透 Cloudflare · 媒体存 S3/RustFS 经鉴权代理分发 + 保留期清理 · 自愈式维护轮询(恢复额度 / 刷新凭据 / 清理僵死任务并退款) · 一条命令 Docker 部署 + acme.sh 自动 HTTPS。 **🧰 工程亮点**:tls-client(Chrome JA3/JA4 指纹)稳定穿透 Cloudflare · 媒体存 S3/RustFS 经鉴权代理分发 + 保留期清理 · 自愈式维护轮询(恢复额度 / 刷新凭据 / 清理僵死任务并退款) · 一条命令 Docker 部署 + acme.sh 自动 HTTPS。
@@ -124,15 +127,14 @@
## 🔌 OpenAI 兼容 API ## 🔌 OpenAI 兼容 API
```bash ```bash
# 文生图 —— 纯 OpenAI 参数:size→比例,quality→画质档(low/medium/high→1K/2K/4K) # 文生图 —— 纯 OpenAI 参数:size 同时决定比例 + 分辨率档(长边 <1800→1K / <3500→2K / ≥3500→4K)
curl https://你的域名/v1/images/generations \ curl https://你的域名/v1/images/generations \
-H "Authorization: Bearer sk-xxxx" \ -H "Authorization: Bearer sk-xxxx" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{ -d '{
"model": "gpt-image-2", "model": "gpt-image-2",
"prompt": "a cute cat on a desk, studio lighting", "prompt": "a cute cat on a desk, studio lighting",
"size": "1024x1024", "size": "2048x2048"
"quality": "high"
}' }'
# 图生图 —— multipart 上传参考图(可多张 image[]) # 图生图 —— multipart 上传参考图(可多张 image[])
@@ -247,8 +249,9 @@ backend/ 后端源码(Go)
│ │ ├── leonardo/ Leonardo │ │ ├── leonardo/ Leonardo
│ │ ├── krea/ Krea │ │ ├── krea/ Krea
│ │ ├── imagine/ Imagine.art │ │ ├── imagine/ Imagine.art
│ │ ── custom/ 自定义上游(OpenAI 兼容 v1,按 id 路由,直连不走代理) │ │ ── custom/ 自定义上游(OpenAI 兼容 v1,按 id 路由,直连不走代理)
── repo/ 数据访问层(用户 / 模型 / 账号 / 日志 / CDK…) │ └── epay/ 易支付(mapi 下单 + 回调 MD5 验签,积分充值)
│ ├── repo/ 数据访问层(用户 / 模型 / 账号 / 日志 / CDK / 订单 / 并发组…)
│ ├── service/ 业务逻辑(生成调度、计费、账号池、保活、维护) │ ├── service/ 业务逻辑(生成调度、计费、账号池、保活、维护)
│ └── storage/ RustFS / S3 媒体存储 │ └── storage/ RustFS / S3 媒体存储
├── Dockerfile 多阶段构建(源码编译 → 精简运行镜像) ├── Dockerfile 多阶段构建(源码编译 → 精简运行镜像)
@@ -256,7 +259,7 @@ backend/ 后端源码(Go)
frontend/ 前端源码(Vue 3 + Vite) frontend/ 前端源码(Vue 3 + Vite)
├── src/ ├── src/
│ ├── views/ 页面(画图台 / 账号 / 模型 / 日志 / 概览 / 用户…) │ ├── views/ 页面(画图台 / 账号 / 模型 / 用户 / 并发组 / 订单 / 日志 / 概览 / 充值 / 设置…)
│ ├── components/ 复用组件(弹窗 / 选择器 / 灯箱…) │ ├── components/ 复用组件(弹窗 / 选择器 / 灯箱…)
│ ├── layouts/ 公共 / 后台布局 │ ├── layouts/ 公共 / 后台布局
│ ├── utils/ 工具函数 │ ├── utils/ 工具函数