feat: 完成短剧项目空间与结构化资产创作闭环 (#38)

* feat(canvas): 短剧项目空间 - 建立项目章节与画布关联 MVP

* feat(canvas): 短剧项目空间 - 完善项目资产、镜头与流程闭环

Refs #30

* fix(deploy): 本地部署 - 修复前端构建并忽略本地 PostgreSQL 配置

* feat(*): 短剧项目空间 - 完成项目、章节、资产、角色与画布创作闭环

Refs #30

---------

Co-authored-by: ddCat <ddcat666@88.com>
This commit is contained in:
ddcat666
2026-07-27 10:45:11 +08:00
committed by GitHub
parent 243c43f6c2
commit ea15000541
208 changed files with 22655 additions and 4234 deletions

View File

@@ -3,13 +3,13 @@ import { useEffect, useRef } from "react";
import { App } from "antd";
import { createModelChannel, useConfigStore } from "@/stores/use-config-store";
import { navigateToSettings } from "@/lib/settings-navigation";
export function ClientRootInit({ children }: { children: ReactNode }) {
const { message } = App.useApp();
const handledConfigParams = useRef(false);
const updateConfig = useConfigStore((state) => state.updateConfig);
const config = useConfigStore((state) => state.config);
const openConfigDialog = useConfigStore((state) => state.openConfigDialog);
useEffect(() => {
if (handledConfigParams.current) return;
@@ -38,10 +38,10 @@ export function ClientRootInit({ children }: { children: ReactNode }) {
: [createModelChannel({ id: "default", name: "默认渠道", baseUrl: baseUrl || undefined })],
);
if (baseUrl) updateConfig("baseUrl", baseUrl);
openConfigDialog(false);
navigateToSettings({ section: "channels" });
if (ignoredApiKey) message.warning("出于安全考虑,链接中的 API Key 已忽略,请在配置中手动填写");
else message.success("已导入本地直连地址");
}, [config.channels, message, openConfigDialog, updateConfig]);
}, [config.channels, message, updateConfig]);
return <>{children}</>;
}