feat: add local auth billing and usage management
This commit is contained in:
1 parent
f642b5e71f
commit
196fdde83f
119 files changed
+15695
-2650
No files matched your search
+14
-19
@@ -44,19 +44,9 @@ HOSTNAME=0.0.0.0
|
||||
NEXT_PUBLIC_APP_URL=https://你的域名
|
||||
|
||||
ZHINIAN_AUTH_REQUIRED=auto
|
||||
ZHINIAN_AUTH_BASE_URL=https://<gateway-domain>/auth
|
||||
ZHINIAN_AUTH_CLIENT_ID=custom
|
||||
ZHINIAN_AUTH_CLIENT_SECRET=custom
|
||||
ZHINIAN_ADMIN_AUTH_CLIENT_ID=app
|
||||
ZHINIAN_ADMIN_AUTH_CLIENT_SECRET=app
|
||||
ZHINIAN_AUTH_TENANT_ID=
|
||||
ZHINIAN_ADMIN_AUTH_TENANT_ID=
|
||||
ZHINIAN_AUTH_SCOPE=server
|
||||
ZHINIAN_AUTH_ISSUER=https://pig4cloud.com
|
||||
ZHINIAN_AUTH_PASSWORD_ENC_KEY=thanks,pig4cloud
|
||||
ZHINIAN_AUTH_SESSION_SECRET=请替换为强随机会话密钥
|
||||
ZHINIAN_ADMIN_AUTHORITIES=ROLE_ADMIN,sys_user_view,sys_log_view,sys_config_view
|
||||
ZHINIAN_ADMIN_USERS=ceshiop
|
||||
NEXT_PUBLIC_SUPABASE_URL=https://你的项目.supabase.co
|
||||
SUPABASE_SERVICE_ROLE_KEY=请替换为服务端密钥
|
||||
|
||||
ZHINIAN_API_KEYS=partner-a:请替换为强随机key
|
||||
ZHINIAN_INTERNAL_WORKER_TOKEN=请替换为强随机token
|
||||
@@ -69,7 +59,6 @@ ZHINIAN_WEBHOOK_SECRET=请替换为webhook签名密钥
|
||||
|
||||
```env
|
||||
IMAGE_GENERATE_ENGINE=evolink
|
||||
IMAGE_INPAINT_ENGINE=jimeng
|
||||
|
||||
EVOLINK_API_KEY=
|
||||
|
||||
@@ -87,15 +76,15 @@ ALI_OSS_PUBLIC_BASE_URL=
|
||||
|
||||
如果不配置真实供应商密钥,mock 配置会保留本地验收能力,但生产对接应配置真实密钥。
|
||||
|
||||
认证中心客户端需要允许回调地址:
|
||||
平台账号部署说明:
|
||||
|
||||
```text
|
||||
https://你的域名/api/auth/callback
|
||||
npm run bootstrap:admin -- --phone 13800138000 --password '请替换为强密码' --name '平台超级管理员'
|
||||
```
|
||||
|
||||
如果使用登录页内的账号密码方式,需要确认客户端支持 `password` 和 `refresh_token` grant,并已加入认证中心配置 `security.ignore-clients`。普通账号登录使用 `ZHINIAN_AUTH_CLIENT_ID` / `ZHINIAN_AUTH_CLIENT_SECRET`,默认 `custom/custom`,并会把 `ZHINIAN_AUTH_TENANT_ID` 作为 `tenantId` 传给认证中心;`ZHINIAN_AUTH_TENANT_ID` 为空时复用 `ZHINIAN_ORG_TENANT_ID`。登录页里的“管理员登录”入口使用 `ZHINIAN_ADMIN_AUTH_CLIENT_ID` / `ZHINIAN_ADMIN_AUTH_CLIENT_SECRET`,默认 `app/app`;管理员租户只在显式配置 `ZHINIAN_ADMIN_AUTH_TENANT_ID` 时传递。
|
||||
生产部署前请在 Supabase SQL Editor 执行幂等脚本 [`supabase/schema.sql`](../supabase/schema.sql),然后运行一次超级管理员初始化命令。旧账号使用 `npm run migrate:accounts -- path/to/legacy-accounts.json` 导入;迁移会保留用量并把历史素材、任务、项目和模板映射到本地账号。
|
||||
|
||||
## 组织账号接口
|
||||
## 旧版组织账号接口(已停用)
|
||||
|
||||
如需启用 `/accounts` 后台账号管理,按组织能力接口文档配置:
|
||||
|
||||
@@ -127,6 +116,8 @@ Web 后台可在登录后访问:
|
||||
https://你的域名/logs
|
||||
https://你的域名/settings
|
||||
https://你的域名/accounts
|
||||
https://你的域名/usage
|
||||
https://你的域名/billing
|
||||
```
|
||||
|
||||
日志默认写入 `.runtime/logs/server-events.jsonl`,用于查看 API 500 错误、Worker 任务异常、错误栈和请求路径。可通过环境变量 `ZHINIAN_LOG_DIR` 调整目录,通过 `ZHINIAN_LOG_MAX_BYTES` 调整单文件轮转大小。
|
||||
@@ -161,6 +152,8 @@ Docker Compose 会挂载:
|
||||
本地 JSON 数据层、上传文件和生成结果都会放在 `.runtime/` 下。生产环境如果未启用 Supabase/Postgres,请定期备份该目录。
|
||||
服务端日志也会放在 `.runtime/logs/` 下,建议和运行时数据一起备份或接入服务器日志采集。
|
||||
|
||||
如果生产环境启用了 Supabase/Postgres,发布包含用量和计费管理的版本前,必须在 Supabase SQL Editor 重新执行仓库中的 `supabase/schema.sql`。脚本会幂等升级表结构、补充计费规则的模型变体、来源和参数档位字段、按 `job_id` 去重历史用量,并把计量记录调整为不随生成任务删除。首次打开 `/billing` 或提交真实任务时,系统会自动导入内置标准成本目录;平台参数档案会同步,已有倍率会保留,超级管理员只维护上浮倍率。
|
||||
|
||||
建议备份:
|
||||
|
||||
```bash
|
||||
@@ -209,8 +202,10 @@ curl https://你的域名/api/v1/openapi.json
|
||||
确认:
|
||||
|
||||
- 未登录访问 Web 页面会跳转到 `/auth/login`
|
||||
- 普通用户登录后只看到创作和结果
|
||||
- 管理员登录后可访问 `/logs`、`/settings`、`/accounts`
|
||||
- 普通用户登录后看到创作、账号和计费;账号页可修改自己的密码,任务详情、输入要素和结果下载均在创作页右侧任务模块完成,点击页头账号 ID 可查看自己的快捷周期用量
|
||||
- 从管理员入口登录且命中管理员账号或专用角色白名单后,可访问 `/logs`、`/settings`、`/usage`,并在 `/accounts` 额外维护组织和成员;超级管理员还可配置 `/billing` 计费规则和组织余额
|
||||
- `/usage` 可按日期、组织、账号、功能和服务商筛选,Mock 与开放 API 任务不计入
|
||||
- `/billing` 可查看组织余额、成员消耗和账务流水;管理员通过“余额与上账”直接记入组织额度
|
||||
- `/api/health` 返回 `ok: true`
|
||||
- `/logs` 可查看后台错误日志
|
||||
- `/api/v1/capabilities` 使用 API Key 可访问
|
||||
|
||||
Reference in new issue
Block a user