forked from 77media/video-flow
Merge branch 'dev' of https://git.qikongjian.com/77media/video-flow into dev
This commit is contained in:
commit
15e2db2ebc
@ -13,7 +13,6 @@ import { usePlaybackControls } from "./work-flow/use-playback-controls";
|
|||||||
import { AlertCircle, RefreshCw, Pause, Play, ChevronLast } from "lucide-react";
|
import { AlertCircle, RefreshCw, Pause, Play, ChevronLast } from "lucide-react";
|
||||||
import { motion } from "framer-motion";
|
import { motion } from "framer-motion";
|
||||||
import { GlassIconButton } from '@/components/ui/glass-icon-button';
|
import { GlassIconButton } from '@/components/ui/glass-icon-button';
|
||||||
import { useScriptData } from "./work-flow/use-script-data";
|
|
||||||
|
|
||||||
export default function WorkFlow() {
|
export default function WorkFlow() {
|
||||||
const containerRef = useRef<HTMLDivElement>(null);
|
const containerRef = useRef<HTMLDivElement>(null);
|
||||||
@ -23,6 +22,7 @@ export default function WorkFlow() {
|
|||||||
// 使用自定义 hooks 管理状态
|
// 使用自定义 hooks 管理状态
|
||||||
const {
|
const {
|
||||||
taskObject,
|
taskObject,
|
||||||
|
scriptData,
|
||||||
taskSketch,
|
taskSketch,
|
||||||
taskScenes,
|
taskScenes,
|
||||||
taskShotSketch,
|
taskShotSketch,
|
||||||
@ -57,10 +57,6 @@ export default function WorkFlow() {
|
|||||||
playTimerRef,
|
playTimerRef,
|
||||||
} = usePlaybackControls(taskSketch, taskVideos, currentStep);
|
} = usePlaybackControls(taskSketch, taskVideos, currentStep);
|
||||||
|
|
||||||
const {
|
|
||||||
scriptData
|
|
||||||
} = useScriptData();
|
|
||||||
|
|
||||||
// 跟踪是否已经自动开始播放过,避免重复触发
|
// 跟踪是否已经自动开始播放过,避免重复触发
|
||||||
const hasAutoStartedRef = useRef(false);
|
const hasAutoStartedRef = useRef(false);
|
||||||
|
|
||||||
|
|||||||
@ -1,44 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
import { useEffect, useState } from "react";
|
|
||||||
import { useScriptService } from "@/app/service/Interaction/ScriptService";
|
|
||||||
import { useSearchParams } from 'next/navigation';
|
|
||||||
|
|
||||||
export const useScriptData = () => {
|
|
||||||
const searchParams = useSearchParams();
|
|
||||||
const projectId = searchParams.get('episodeId') || '';
|
|
||||||
|
|
||||||
const {
|
|
||||||
loading, // 加载状态
|
|
||||||
synopsis, //故事梗概
|
|
||||||
categories, //故事分类
|
|
||||||
protagonist, //主角
|
|
||||||
incitingIncident, //激励事件
|
|
||||||
problem, //问题与新目标
|
|
||||||
conflict, //冲突与障碍
|
|
||||||
stakes, //赌注
|
|
||||||
characterArc, //人物弧线完成
|
|
||||||
planId, //计划ID
|
|
||||||
aiOptimizing, //AI优化要求
|
|
||||||
scriptBlocksMemo, // 渲染数据
|
|
||||||
initializeFromProject,
|
|
||||||
} = useScriptService();
|
|
||||||
|
|
||||||
const [scriptData, setScriptData] = useState<any>(null);
|
|
||||||
|
|
||||||
// 初始化剧本
|
|
||||||
useEffect(() => {
|
|
||||||
initializeFromProject(projectId);
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
// 监听剧本加载完毕
|
|
||||||
useEffect(() => {
|
|
||||||
if (!loading) {
|
|
||||||
console.log('scriptBlocksMemo', scriptBlocksMemo);
|
|
||||||
}
|
|
||||||
}, [loading, scriptBlocksMemo]);
|
|
||||||
|
|
||||||
return {
|
|
||||||
scriptData
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -5,6 +5,7 @@ import { useSearchParams } from 'next/navigation';
|
|||||||
import { detailScriptEpisodeNew, getScriptTitle, getRunningStreamData } from '@/api/video_flow';
|
import { detailScriptEpisodeNew, getScriptTitle, getRunningStreamData } from '@/api/video_flow';
|
||||||
import { useAppDispatch, useAppSelector } from '@/lib/store/hooks';
|
import { useAppDispatch, useAppSelector } from '@/lib/store/hooks';
|
||||||
import { setSketchCount, setVideoCount } from '@/lib/store/workflowSlice';
|
import { setSketchCount, setVideoCount } from '@/lib/store/workflowSlice';
|
||||||
|
import { useScriptService } from "@/app/service/Interaction/ScriptService";
|
||||||
|
|
||||||
// 步骤映射
|
// 步骤映射
|
||||||
const STEP_MAP = {
|
const STEP_MAP = {
|
||||||
@ -53,10 +54,12 @@ interface TaskObject {
|
|||||||
|
|
||||||
export function useWorkflowData() {
|
export function useWorkflowData() {
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const episodeId = searchParams.get('episodeId');
|
const episodeId = searchParams.get('episodeId') || '';
|
||||||
|
|
||||||
// 更新 taskObject 的类型
|
// 更新 taskObject 的类型
|
||||||
const [taskObject, setTaskObject] = useState<TaskObject | null>(null);
|
const [taskObject, setTaskObject] = useState<TaskObject | null>(null);
|
||||||
|
const [originalText, setOriginalText] = useState<string>('');
|
||||||
|
const [scriptData, setScriptData] = useState<any>(null);
|
||||||
const [taskSketch, setTaskSketch] = useState<any[]>([]);
|
const [taskSketch, setTaskSketch] = useState<any[]>([]);
|
||||||
const [taskScenes, setTaskScenes] = useState<any[]>([]);
|
const [taskScenes, setTaskScenes] = useState<any[]>([]);
|
||||||
const [taskShotSketch, setTaskShotSketch] = useState<any[]>([]);
|
const [taskShotSketch, setTaskShotSketch] = useState<any[]>([]);
|
||||||
@ -79,6 +82,23 @@ export function useWorkflowData() {
|
|||||||
const dispatch = useAppDispatch();
|
const dispatch = useAppDispatch();
|
||||||
const { sketchCount, videoCount } = useAppSelector((state) => state.workflow);
|
const { sketchCount, videoCount } = useAppSelector((state) => state.workflow);
|
||||||
|
|
||||||
|
const {
|
||||||
|
loading, // 加载状态
|
||||||
|
scriptBlocksMemo, // 渲染剧本数据
|
||||||
|
initializeFromProject,
|
||||||
|
} = useScriptService();
|
||||||
|
// 初始化剧本
|
||||||
|
useEffect(() => {
|
||||||
|
console.log('开始初始化剧本', originalText);
|
||||||
|
initializeFromProject(episodeId);
|
||||||
|
}, [originalText]);
|
||||||
|
// 监听剧本加载完毕
|
||||||
|
useEffect(() => {
|
||||||
|
if (!loading) {
|
||||||
|
console.log('scriptBlocksMemo', scriptBlocksMemo);
|
||||||
|
}
|
||||||
|
}, [loading, scriptBlocksMemo]);
|
||||||
|
|
||||||
// 自动开始播放一轮
|
// 自动开始播放一轮
|
||||||
const autoPlaySketch = useCallback(() => {
|
const autoPlaySketch = useCallback(() => {
|
||||||
return new Promise<void>((resolve) => {
|
return new Promise<void>((resolve) => {
|
||||||
@ -355,8 +375,9 @@ export function useWorkflowData() {
|
|||||||
throw new Error(response.message);
|
throw new Error(response.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
const { name, status, data, tags, mode } = response.data;
|
const { name, status, data, tags, mode, original_text } = response.data;
|
||||||
setMode(mode);
|
setMode(mode);
|
||||||
|
setOriginalText(original_text);
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
|
|
||||||
// 设置初始数据
|
// 设置初始数据
|
||||||
@ -556,6 +577,7 @@ export function useWorkflowData() {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
taskObject,
|
taskObject,
|
||||||
|
scriptData,
|
||||||
taskSketch,
|
taskSketch,
|
||||||
taskScenes,
|
taskScenes,
|
||||||
taskShotSketch,
|
taskShotSketch,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user