feat: expand commercial ai drama platform
This commit is contained in:
+18
-9
@@ -73,6 +73,7 @@ import {
|
||||
ProjectAssistantPage,
|
||||
VoiceStudioPage
|
||||
} from "./components/CreatorSuitePages";
|
||||
import { KnowledgeLibraryPage } from "./components/KnowledgeLibraryPage";
|
||||
import {
|
||||
CastingBoardPage,
|
||||
DeliveryAccessPage,
|
||||
@@ -110,7 +111,8 @@ const navigationGroups = [
|
||||
{ id: "creator-home", label: "我的工作台", icon: RadioTower },
|
||||
{ id: "tasks", label: "协作任务", icon: ListChecks, requiredPermission: "task:view" },
|
||||
{ id: "assistant", label: "项目 AI 助手", icon: Bot },
|
||||
{ id: "asset-library", label: "资产库", icon: Images, requiredPermission: "asset:edit" },
|
||||
{ id: "knowledge", label: "内容知识库", icon: FileJson2, requiredPermission: "script:read" },
|
||||
{ id: "asset-library", label: "资产库", icon: Images, requiredAnyPermissions: ["asset:edit", "voice:edit", "compliance:manage"] },
|
||||
{ id: "voice-studio", label: "声音与字幕", icon: AudioLines, requiredPermission: "voice:edit" },
|
||||
{ id: "batch-production", label: "批量生产", icon: ListPlus, requiredPermission: "job:create" }
|
||||
]
|
||||
@@ -128,13 +130,13 @@ const navigationGroups = [
|
||||
{ id: "overview", label: "生产总控", icon: RadioTower, requiredPermission: "usage:view" },
|
||||
{ id: "factory", label: "项目工厂", icon: Layers3, requiredPermission: "project:create" },
|
||||
{ id: "script", label: "剧本拆解", icon: BookOpen, requiredPermission: "script:edit" },
|
||||
{ id: "casting", label: "资产与选角", icon: ShieldCheck, requiredPermission: "asset:edit" },
|
||||
{ id: "casting", label: "资产与选角", icon: ShieldCheck, requiredAnyPermissions: ["asset:edit", "compliance:manage"] },
|
||||
{ id: "director", label: "导演工作台", icon: Clapperboard, requiredPermission: "job:create" },
|
||||
{ id: "jobs", label: "生成任务", icon: Wand2, requiredPermission: "job:create" },
|
||||
{ id: "bible", label: "系列 Bible", icon: BookOpen, requiredPermission: "script:edit" },
|
||||
{ id: "locks", label: "连续性锁", icon: ShieldCheck, requiredPermission: "asset:edit" },
|
||||
{ id: "locks", label: "连续性锁", icon: ShieldCheck, requiredAnyPermissions: ["asset:edit", "compliance:manage"] },
|
||||
{ id: "shots", label: "镜头清单", icon: Clapperboard, requiredPermission: "job:create" },
|
||||
{ id: "modelops", label: "模型中台", icon: Network, requiredPermission: "model:manage" },
|
||||
{ id: "modelops", label: "模型中台", icon: Network, requiredAnyPermissions: ["model:manage", "model:approve"] },
|
||||
{ id: "qa", label: "审片中心", icon: ListChecks, requiredPermission: "qa:review" },
|
||||
{ id: "compliance", label: "成本合规", icon: Scale, requiredPermission: "usage:view" },
|
||||
{ id: "export", label: "交付运营", icon: Download, requiredPermission: "delivery:view" },
|
||||
@@ -147,7 +149,7 @@ const navigationGroups = [
|
||||
{ id: "admin-overview", label: "管理概览", icon: Gauge, requiredPermission: "usage:view" },
|
||||
{ id: "admin-organizations", label: "组织与工作区", icon: Building2, requiredPermission: "organization:manage" },
|
||||
{ id: "admin-members", label: "用户与权限", icon: Users, requiredPermission: "organization:members:invite" },
|
||||
{ id: "admin-models", label: "模型与 Runner", icon: Network, requiredPermission: "model:manage" },
|
||||
{ id: "admin-models", label: "模型与 Runner", icon: Network, requiredAnyPermissions: ["model:manage", "model:approve"] },
|
||||
{ id: "admin-queue", label: "队列与任务", icon: Wand2, requiredPermission: "queue:manage" },
|
||||
{ id: "admin-usage", label: "用量与成本", icon: Coins, requiredPermission: "usage:view" },
|
||||
{ id: "admin-audit", label: "审计与合规", icon: ListChecks, requiredPermission: "audit:view" }
|
||||
@@ -1706,9 +1708,9 @@ function App() {
|
||||
projectId: activeProjectId,
|
||||
episodeId: activeEpisodeId
|
||||
};
|
||||
const enterpriseArea = activeTab === "creator-home" || activeTab === "tasks" || activeTab === "assistant" || activeTab === "asset-library" || activeTab === "voice-studio" || activeTab === "batch-production" || activeTab === "account" || activeTab === "factory" || activeTab === "script" || activeTab === "casting" || activeTab === "director" || activeTab === "jobs" || activeTab === "bible" || activeTab === "locks" || activeTab === "shots" || activeTab === "modelops" || activeTab === "qa" || activeTab === "export" || activeTab === "delivery-portal" || activeTab.startsWith("admin-") || activeTab.startsWith("system-");
|
||||
const enterpriseArea = activeTab === "creator-home" || activeTab === "tasks" || activeTab === "assistant" || activeTab === "knowledge" || activeTab === "asset-library" || activeTab === "voice-studio" || activeTab === "batch-production" || activeTab === "account" || activeTab === "factory" || activeTab === "script" || activeTab === "casting" || activeTab === "director" || activeTab === "jobs" || activeTab === "bible" || activeTab === "locks" || activeTab === "shots" || activeTab === "modelops" || activeTab === "qa" || activeTab === "export" || activeTab === "delivery-portal" || activeTab.startsWith("admin-") || activeTab.startsWith("system-");
|
||||
const effectivePermissions = new Set(platformContext?.context?.permissions || []);
|
||||
const canViewAdmin = ["workspace:create", "model:manage", "usage:view", "audit:view", "queue:manage"].some((permission) => effectivePermissions.has(permission));
|
||||
const canViewAdmin = ["workspace:create", "model:manage", "model:approve", "usage:view", "compliance:manage", "audit:view", "queue:manage"].some((permission) => effectivePermissions.has(permission));
|
||||
const canViewSystem = platformContext?.context?.systemAdmin || effectivePermissions.has("system:settings:view");
|
||||
const canCreateProject = effectivePermissions.has("project:create");
|
||||
const canCreateJob = effectivePermissions.has("job:create");
|
||||
@@ -1716,9 +1718,14 @@ function App() {
|
||||
const canManageProject = effectivePermissions.has("project:manage");
|
||||
const canApproveDelivery = effectivePermissions.has("delivery:approve");
|
||||
const canApproveVoice = effectivePermissions.has("voice:approve");
|
||||
const canApproveAssets = effectivePermissions.has("compliance:manage");
|
||||
const canSeeNavigationItem = (item) => {
|
||||
if (item.requiredAnyPermissions) return item.requiredAnyPermissions.some((permission) => effectivePermissions.has(permission));
|
||||
return !item.requiredPermission || effectivePermissions.has(item.requiredPermission);
|
||||
};
|
||||
const visibleNavigationGroups = navigationGroups
|
||||
.filter((group) => group.label === "创作套件" || group.label === "账户" || group.label === "生产流水线" || (group.label === "管理员后台" && canViewAdmin) || (group.label === "系统设置" && canViewSystem))
|
||||
.map((group) => ({ ...group, items: group.items.filter((item) => !item.requiredPermission || effectivePermissions.has(item.requiredPermission)) }))
|
||||
.map((group) => ({ ...group, items: group.items.filter(canSeeNavigationItem) }))
|
||||
.filter((group) => group.items.length);
|
||||
const activeNavigationItem = visibleNavigationGroups.flatMap((group) => group.items).find((item) => item.id === activeTab);
|
||||
|
||||
@@ -1830,7 +1837,9 @@ function App() {
|
||||
|
||||
{activeTab === "assistant" && <ProjectAssistantPage project={project} setActiveTab={setActiveTab} allowedTabs={visibleNavigationGroups.flatMap((group) => group.items).map((item) => item.id)} />}
|
||||
|
||||
{activeTab === "asset-library" && <AssetLibraryPage project={project} contextOverrides={contextOverrides} />}
|
||||
{activeTab === "knowledge" && <KnowledgeLibraryPage platformContext={platformContext} contextOverrides={contextOverrides} />}
|
||||
|
||||
{activeTab === "asset-library" && <AssetLibraryPage project={project} contextOverrides={contextOverrides} canApproveAssets={canApproveAssets} />}
|
||||
|
||||
{activeTab === "voice-studio" && <VoiceStudioPage project={project} onQueueJob={enqueueJob} contextOverrides={contextOverrides} canApproveVoice={canApproveVoice} />}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user