import { SceneEntity } from '../domain/Entities'; import { SceneItem, TagItem, TextItem } from '../domain/Item'; import { regenerateScene, applySceneToShots } from '@/api/video_flow'; /** * 场景编辑用例 * 负责场景内容的初始化、修改和优化 */ export class SceneEditUseCase { constructor(private sceneItem: SceneItem) { } /** * @description: 重新生成场景 * @param {TextItem} prompt * @param {TagItem[]} tags * @return {*} */ async AIgenerateScene(prompt: TextItem, tags: TagItem[]): Promise { const promptText = prompt.entity.content; const tagList = tags.map((tag) => tag.entity.content); // 调用重新生成场景接口 const response = await regenerateScene({ sceneId: this.sceneItem.entity.id || '', prompt: promptText, tagTypes: tagList, }); if (response.successful) { const sceneEntity = response.data; this.sceneItem.setEntity(sceneEntity); return sceneEntity; } else { throw new Error(`重新生成场景失败: ${response.message}`); } } /** * 应用此场景到指定分镜 * @param shotIds 分镜ID列表 * @returns 应用结果 */ async applyScene(shotIds: string[]) { const sceneId = this.sceneItem.entity.id; return await applySceneToShots({ sceneId, shotIds }); } }