feat: harden tenant access and production operations
This commit is contained in:
@@ -8,10 +8,13 @@
|
||||
- 多组织:一个用户可以属于多个组织,组织之间的项目、成员、模型和审计数据隔离。
|
||||
- 多工作区:制作部、素材实验室、客户空间可以在同一组织下独立管理。
|
||||
- 多用户与角色:组织所有者、组织管理员、制片、编剧、资产美术、配音/字幕、审片、项目编辑和项目查看者。
|
||||
- 项目级访问控制:项目邀请使用受限 `project_guest` 工作区身份和 `project-only` 访问模式,只能看到显式授权项目,不会因加入工作区而继承全部项目或生成权限。
|
||||
- 真实 scope API:所有项目、任务、模型、审片、导出请求都经过 user → organization → workspace → project 检查。
|
||||
- 平台级系统治理:系统配置、功能开关、通知渠道、API 客户端、服务健康和队列运营;系统权限独立于组织管理员。
|
||||
- 实时运营概览:管理概览直接读取服务健康探针、Worker 心跳/队列和部署生产就绪度,不使用前端静态状态冒充在线运行状态。
|
||||
- 企业身份中心:TOTP MFA、登录策略、OIDC/SAML 提供商登记与发现探测、SCIM 目录令牌轮换和受令牌保护的用户同步接口。
|
||||
- 用户通知中心:按用户、组织、工作区隔离的通知收件箱、未读计数、单条/全部已读、组织级通知偏好和服务端收件人过滤。
|
||||
- 全局生产搜索:支持 `⌘/Ctrl + K` 命令入口,在当前工作区或当前项目内定位项目、剧本、分集、镜头、资产、任务、生成任务和交付记录;结果由后端按租户作用域过滤。
|
||||
- 协作任务中心:项目内任务创建、负责人分派、优先级、截止时间、状态、本人任务更新、任务通知和审计记录。
|
||||
- 资产版本台账:资产版本不可覆盖,支持当前版本切换、历史版本恢复、锁定状态和镜头绑定审计。
|
||||
- 本地持久化:Node 24 内置 SQLite 自动初始化到 `/Users/xz/Documents/daima/ai短剧/ai-drama-platform/data/platform.sqlite`。
|
||||
@@ -40,7 +43,7 @@ npm run api
|
||||
API:http://127.0.0.1:8787/api/health
|
||||
```
|
||||
|
||||
完整回归(必须串行执行,共 25 项,避免 SQLite 写入竞争):
|
||||
完整回归(必须串行执行,共 32 项,避免 SQLite 写入竞争):
|
||||
|
||||
```bash
|
||||
npm run smoke:all
|
||||
@@ -77,6 +80,8 @@ POST http://127.0.0.1:8787/api/auth/sessions/:sessionId/revoke
|
||||
POST http://127.0.0.1:8787/api/auth/sessions/revoke-others
|
||||
POST http://127.0.0.1:8787/api/auth/password
|
||||
GET http://127.0.0.1:8787/api/context
|
||||
GET http://127.0.0.1:8787/api/search?q=雷雨&scope=workspace&limit=40
|
||||
GET http://127.0.0.1:8787/api/search?q=雷雨&scope=project&limit=40
|
||||
GET http://127.0.0.1:8787/api/tasks?status=all&assignedTo=me&limit=100
|
||||
POST http://127.0.0.1:8787/api/tasks
|
||||
PATCH http://127.0.0.1:8787/api/tasks/:taskId
|
||||
@@ -105,6 +110,9 @@ GET http://127.0.0.1:8787/api/billing
|
||||
GET http://127.0.0.1:8787/api/audit
|
||||
GET http://127.0.0.1:8787/api/audit/:auditId
|
||||
GET http://127.0.0.1:8787/api/audit/export
|
||||
GET http://127.0.0.1:8787/api/system/health
|
||||
GET http://127.0.0.1:8787/api/system/worker
|
||||
GET http://127.0.0.1:8787/api/system/readiness
|
||||
GET http://127.0.0.1:8787/api/permissions
|
||||
GET http://127.0.0.1:8787/api/assets?kind=voice
|
||||
POST http://127.0.0.1:8787/api/assets/upload
|
||||
@@ -237,6 +245,7 @@ API 客户端 scope 由后端白名单强制执行:`jobs:read` 只能读取任
|
||||
- 一次生成只允许一张完整单画面;分镜图、接触表、边界表只能审核,不能喂回生成。
|
||||
- 声音作为独立资产锁定,不把 MiniMax H3 随机原生声音作为最终角色声线。
|
||||
- 当前平台底座已具备真实任务合同、队列、重试、取消、租约、并发控制和 HTTP Runner 执行接口;API 启动时自动运行本地 Worker,只会领取本地 `ready` 连接器任务。若未配置可用的自有图片/视频/TTS/ASR Runner,任务会明确显示 `not-connected`/`blocked`,不会伪称已经生成真实媒体成片。
|
||||
- 手动执行接口对已完成任务是幂等的:如果本地 Worker 已先完成任务,重复调用 `POST /api/jobs/:jobId/run` 会返回现有完成结果并标记 `idempotent: true`,不会再次调用模型或生成第二份媒体。
|
||||
- 模型协议、Worker 环境变量、状态字段和接口返回约定见 `/Users/xz/Documents/daima/ai短剧/ai-drama-platform/docs/API_REFERENCE.md`。
|
||||
- 本地验证脚本会修改 SQLite,因此多个 smoke 脚本应顺序执行;并行写入会触发 SQLite 的正常写锁保护。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user