feat: expand novel IP and production workflows

This commit is contained in:
www
2026-09-18 08:14:05 +02:00
parent b2ae4600b4
commit d9c81a3ac0
235 changed files with 117971 additions and 2721 deletions
@@ -8,7 +8,9 @@ import {
LiveActionGenerateDto,
LiveActionManualReviewDto,
LiveActionPreflightQueryDto,
LiveActionQualityCheckDto
LiveActionQualityCheckDto,
LiveActionShotAssetPlanQueryDto,
LiveActionUpdateShotPromptDto
} from './live-action.dto';
import { LiveActionService } from './live-action.service';
@@ -36,6 +38,33 @@ export class LiveActionController {
return this.liveActionService.listLiveActionShots(user, episodeId);
}
@Get('episodes/:episodeId/live-action/shot-asset-plans')
planLiveActionShotAssets(
@CurrentUser() user: AuthRequestUser,
@Param('episodeId') episodeId: string,
@Query() query: LiveActionShotAssetPlanQueryDto
) {
return this.liveActionService.planLiveActionShotAssets(user, episodeId, query);
}
@Get('episodes/:episodeId/live-action/generation-plans')
listGenerationPlans(
@CurrentUser() user: AuthRequestUser,
@Param('episodeId') episodeId: string
) {
return this.liveActionService.listGenerationPlans(user, episodeId);
}
@Get('episodes/:episodeId/live-action/generation-plans/compare')
compareGenerationPlans(
@CurrentUser() user: AuthRequestUser,
@Param('episodeId') episodeId: string,
@Query('base_plan_id') basePlanId: string,
@Query('target_plan_id') targetPlanId: string
) {
return this.liveActionService.compareGenerationPlans(user, episodeId, basePlanId, targetPlanId);
}
@Post('episodes/:episodeId/live-action/shots/prepare')
prepareLiveActionShots(
@CurrentUser() user: AuthRequestUser,
@@ -92,6 +121,46 @@ export class LiveActionController {
return this.liveActionService.attachShotKeyframe(user, episodeId, shotId, dto);
}
@Post('episodes/:episodeId/live-action/shots/:shotId/keyframe/generate')
generateShotKeyframe(
@CurrentUser() user: AuthRequestUser,
@Param('episodeId') episodeId: string,
@Param('shotId') shotId: string,
@Body() dto: LiveActionGenerateDto
) {
return this.liveActionService.generateShotKeyframe(user, episodeId, shotId, dto);
}
@Post('episodes/:episodeId/live-action/shots/:shotId/keyframe/approve')
approveShotKeyframe(
@CurrentUser() user: AuthRequestUser,
@Param('episodeId') episodeId: string,
@Param('shotId') shotId: string,
@Body() dto: LiveActionGenerateDto
) {
return this.liveActionService.approveShotKeyframe(user, episodeId, shotId, dto);
}
@Post('episodes/:episodeId/live-action/shots/:shotId/generation-plan/freeze')
freezeShotGenerationPlan(
@CurrentUser() user: AuthRequestUser,
@Param('episodeId') episodeId: string,
@Param('shotId') shotId: string,
@Body() dto: LiveActionGenerateDto
) {
return this.liveActionService.freezeShotGenerationPlan(user, episodeId, shotId, dto);
}
@Post('episodes/:episodeId/live-action/shots/:shotId/prompt')
updateShotPrompt(
@CurrentUser() user: AuthRequestUser,
@Param('episodeId') episodeId: string,
@Param('shotId') shotId: string,
@Body() dto: LiveActionUpdateShotPromptDto
) {
return this.liveActionService.updateShotPrompt(user, episodeId, shotId, dto);
}
@Post('episodes/:episodeId/live-action/shots/:shotId/video-clip/generate')
generateShotVideoClip(
@CurrentUser() user: AuthRequestUser,
@@ -151,4 +220,13 @@ export class LiveActionController {
) {
return this.liveActionService.renderLiveActionEpisode(user, episodeId, dto);
}
@Post('episodes/:episodeId/live-action/music/generate')
generateOriginalMusicPackage(
@CurrentUser() user: AuthRequestUser,
@Param('episodeId') episodeId: string,
@Body() dto: LiveActionGenerateDto
) {
return this.liveActionService.generateOriginalMusicPackage(user, episodeId, dto);
}
}