feat: add admin accounts and image templates

This commit is contained in:
inman
2026-07-03 11:25:25 +08:00
parent d98e58adfa
commit c3ea9f0eb1
61 changed files with 7016 additions and 199 deletions

View File

@@ -12,8 +12,9 @@
- 统一创作入口:`/create`
- 结果资产管理:`/assets`
- 服务与引擎配置:`/settings`
- 后台日志管理:`/logs`
- 服务与引擎配置:`/settings`,管理员可见
- 后台日志管理:`/logs`,管理员可见
- 账号管理:`/accounts`,管理员可见
- 图片生成:即梦图片生成 4.6 或 EvoLink GPT Image 2
- 图片编辑:局部重绘、智能超清
- 视频生成Seedance 2.0
@@ -141,6 +142,7 @@ npm run info
| `/assets` | 历史任务与资产 |
| `/logs` | 后台日志管理 |
| `/settings` | 接口、引擎和服务配置 |
| `/accounts` | 组织成员账号管理 |
## 账户登录 / SSO
@@ -158,16 +160,34 @@ https://你的域名/api/auth/callback
|------|------|
| `ZHINIAN_AUTH_REQUIRED` | `auto` 默认策略;生产启用,本地可信开发可设 `0` |
| `ZHINIAN_AUTH_BASE_URL` | 认证服务网关地址,例如 `https://<gateway-domain>/auth` |
| `ZHINIAN_AUTH_CLIENT_ID` | OAuth2 客户端 ID默认 `customPC` |
| `ZHINIAN_AUTH_CLIENT_ID` | OAuth2 客户端 ID默认 `app` |
| `ZHINIAN_AUTH_CLIENT_SECRET` | OAuth2 客户端密钥,只能保存在服务端 |
| `ZHINIAN_AUTH_SCOPE` | 默认 `server` |
| `ZHINIAN_AUTH_ISSUER` | JWT issuer默认 `https://pig4cloud.com` |
| `ZHINIAN_AUTH_PASSWORD_ENC_KEY` | 按 AgentBus 方式对 password grant 的密码做 AES-CFB 加密;留空则透传明文 |
| `ZHINIAN_AUTH_PASSWORD_ENC_KEY` | 按认证中心 `security.encode-key` 对 password grant 的密码做 AES-CFB 加密,默认示例 `thanks,pig4cloud` |
| `ZHINIAN_AUTH_SESSION_SECRET` | 本地会话签名密钥,使用长随机字符串 |
| `ZHINIAN_ADMIN_AUTHORITIES` | 管理员权限码白名单,逗号分隔 |
| `ZHINIAN_ADMIN_USERS` | 管理员账号白名单,逗号分隔,默认 `ceshiop` |
受保护范围包括 `/create``/assets``/settings`、第一方生成/资产 API以及本地 `/uploads/*``/generated-results/*` 文件。开放 `/api/v1/*` 仍使用 API KeyWorker 仍使用内部 token不走浏览器 SSO。
受保护范围包括 `/create``/assets``/settings``/logs``/accounts`第一方生成/资产 API以及本地 `/uploads/*``/generated-results/*` 文件。普通用户主导航只显示创作和结果;`/logs``/settings``/accounts``/api/admin/*` 需要管理员权限。开放 `/api/v1/*` 仍使用 API KeyWorker 仍使用内部 token不走浏览器 SSO。
如果认证中心客户端没有加入 `security.ignore-clients`账号密码登录会要求图形验证码;验证码图片由 `/api/auth/captcha` 代理 `${AUTH_BASE}/code/image` 获取
如果认证中心客户端没有加入 `security.ignore-clients``/oauth2/token` 可能返回“验证码不能为空”。当前推荐使用运维分配的 `app/app` 客户端;如改用 `customPC` 登录平台用户,需要认证中心把该 clientId 加入 `security.ignore-clients`
## 组织账号管理
后台账号管理通过组织模块接口维护成员、角色、部门绑定和成员状态,并通过企业端用户接口创建用户、重置密码。按运维提供的组织能力接口文档,需要在服务端配置:
| 变量 | 说明 |
|------|------|
| `ZHINIAN_ORG_API_BASE_URL` | 组织能力网关或统一服务前缀,例如 `https://<gateway-domain>/hotelStaff` |
| `ZHINIAN_ORG_API_TOKEN` | 备用 Bearer Token默认优先转发当前登录管理员的 `access_token` |
| `ZHINIAN_STAFF_API_BASE_URL` | 企业端用户服务网关或统一服务前缀,例如 `https://<gateway-domain>/hotelStaff` |
| `ZHINIAN_STAFF_API_TOKEN` | 备用 Bearer Token可为空默认优先转发当前登录管理员的 `access_token` |
| `ZHINIAN_ORG_TENANT_ID` | 需要多租户 Header 时填写 |
| `ZHINIAN_ORG_ID` | 默认组织 ID可为空系统会优先使用组织列表第一项 |
| `ZHINIAN_ORG_MEMBER_LIST_PATH` | 可选,成员查询路径覆盖;默认 `/adminOrganization/organizationMember/organizationMemberList` |
成员分页列表通过 `hotelStaff``/adminOrganization/organizationMember/organizationMemberList` 对外代理;只有直连基础组织服务内部 `/organizationMember/organizationMemberList` 时才需要 `from: Y`。创建账号会优先调用 `/adminOrganization/organizationMember/addOrganizationMemberAndCreatePlatformUser`,密码重置调用 `/adminPcUser/resetPlatformUserPassword`;这些接口默认使用当前登录账号的 token要求该账号具备管理员角色 `1`
## 引擎说明
@@ -206,6 +226,8 @@ ZHINIAN_API_KEYS=demo-agent:change-me-public-api-key
ZHINIAN_INTERNAL_WORKER_TOKEN=change-me-worker-token
```
`ZHINIAN_API_KEYS` 冒号前的值是账号 ID开放 API 任务和资产会按该账号 ID 写入独立 owner 分区,例如 `api:demo-agent`
调用示例:
```bash
@@ -252,7 +274,15 @@ cp .env.example .env.local
| `ZHINIAN_AUTH_CLIENT_ID` | OAuth2 客户端 ID |
| `ZHINIAN_AUTH_CLIENT_SECRET` | OAuth2 客户端密钥 |
| `ZHINIAN_AUTH_SESSION_SECRET` | 本地登录态签名密钥 |
| `ZHINIAN_API_KEYS` | 开放 API Key格式 `clientId:key,clientId2:key2` |
| `ZHINIAN_ADMIN_AUTHORITIES` | 管理员权限码白名单 |
| `ZHINIAN_ADMIN_USERS` | 管理员账号白名单,默认 `ceshiop` |
| `ZHINIAN_ORG_API_BASE_URL` | 组织账号接口 Base URL |
| `ZHINIAN_ORG_API_TOKEN` | 组织账号接口备用 Bearer Token |
| `ZHINIAN_STAFF_API_BASE_URL` | 企业端用户接口 Base URL |
| `ZHINIAN_STAFF_API_TOKEN` | 企业端用户接口备用 Bearer Token可为空 |
| `ZHINIAN_ORG_TENANT_ID` | 组织接口租户 ID |
| `ZHINIAN_ORG_ID` | 默认组织 ID |
| `ZHINIAN_API_KEYS` | 开放 API Key格式 `账号ID:key,账号ID2:key2`;任务和资产按账号 ID 写入独立 owner 分区 |
| `ZHINIAN_INTERNAL_WORKER_TOKEN` | 内部 Worker tick 接口令牌 |
| `ZHINIAN_WEBHOOK_SECRET` | Webhook 签名密钥,可选 |
| `ZHINIAN_WORKER_*` | Worker 间隔、批量、锁超时、重试配置 |