Commit 16cbe1d3 authored by yaoke.yk's avatar yaoke.yk

Add storyboard scene ref and video prompt contract

parent d4e2919a
......@@ -29,6 +29,8 @@ public class StoryboardDTO {
private Integer durationSeconds;
private String startFramePrompt;
private String motionScript;
private String sceneRef;
private String videoPrompt;
private String notes;
private String status;
private LocalDateTime createdAt;
......@@ -55,6 +57,8 @@ public class StoryboardDTO {
dto.setDurationSeconds(s.getDurationSeconds());
dto.setStartFramePrompt(s.getStartFramePrompt());
dto.setMotionScript(s.getMotionScript());
dto.setSceneRef(s.getSceneRef());
dto.setVideoPrompt(s.getVideoPrompt());
dto.setNotes(s.getNotes());
dto.setStatus(s.getStatus());
dto.setCreatedAt(s.getCreatedAt());
......
ALTER TABLE storyboards
ADD COLUMN scene_ref VARCHAR(128) DEFAULT NULL COMMENT 'Storyboard scene reference',
ADD COLUMN video_prompt LONGTEXT DEFAULT NULL COMMENT 'Expanded prompt for video generation';
package com.yaoai.pipeline.service.impl;
import com.yaoai.api.dto.ai.StoryboardDTO;
import com.yaoai.domain.entity.Storyboard;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class StoryboardPipelineServiceImplTest {
@Test
void storyboardDtoFromExposesSceneRefAndVideoPrompt() {
Storyboard storyboard = new Storyboard();
storyboard.setSceneRef("scene-ref-001");
storyboard.setVideoPrompt("A slow dolly-in across the moonlit alley.");
StoryboardDTO dto = StoryboardDTO.from(storyboard);
assertEquals("scene-ref-001", dto.getSceneRef());
assertEquals("A slow dolly-in across the moonlit alley.", dto.getVideoPrompt());
}
}
......@@ -34,6 +34,8 @@ public class Storyboard {
private String motionScript;
private String startFramePrompt;
private String endFramePrompt;
private String sceneRef;
private String videoPrompt;
private String notes;
/** V16:分镜上落地的素材选择(编辑态记忆) */
......
......@@ -23,6 +23,10 @@ public interface StoryboardMapper extends BaseMapper<Storyboard> {
@Select("SELECT COUNT(*) FROM storyboards WHERE episode_id=#{episodeId} AND tenant_id=#{tenantId}")
int countByEpisode(Long episodeId, Long tenantId);
@Select("SELECT * FROM storyboards WHERE episode_id=#{episodeId} AND tenant_id=#{tenantId} " +
"AND (video_prompt IS NULL OR TRIM(video_prompt) = '') ORDER BY sequence_num ASC")
List<Storyboard> findMissingVideoPromptByEpisode(Long episodeId, Long tenantId);
@Update("UPDATE storyboards SET sequence_num=#{seq} WHERE id=#{id} AND tenant_id=#{tenantId}")
int updateSequence(Long id, int seq, Long tenantId);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment