SYMBOL INDEX (1198 symbols across 108 files) FILE: api/handlers/ai_config.go type AIConfigHandler (line 14) | type AIConfigHandler struct method CreateConfig (line 26) | func (h *AIConfigHandler) CreateConfig(c *gin.Context) { method GetConfig (line 42) | func (h *AIConfigHandler) GetConfig(c *gin.Context) { method ListConfigs (line 63) | func (h *AIConfigHandler) ListConfigs(c *gin.Context) { method UpdateConfig (line 76) | func (h *AIConfigHandler) UpdateConfig(c *gin.Context) { method DeleteConfig (line 103) | func (h *AIConfigHandler) DeleteConfig(c *gin.Context) { method TestConnection (line 123) | func (h *AIConfigHandler) TestConnection(c *gin.Context) { function NewAIConfigHandler (line 19) | func NewAIConfigHandler(db *gorm.DB, cfg *config.Config, log *logger.Log... FILE: api/handlers/asset.go type AssetHandler (line 16) | type AssetHandler struct method CreateAsset (line 28) | func (h *AssetHandler) CreateAsset(c *gin.Context) { method UpdateAsset (line 46) | func (h *AssetHandler) UpdateAsset(c *gin.Context) { method GetAsset (line 70) | func (h *AssetHandler) GetAsset(c *gin.Context) { method ListAssets (line 87) | func (h *AssetHandler) ListAssets(c *gin.Context) { method DeleteAsset (line 169) | func (h *AssetHandler) DeleteAsset(c *gin.Context) { method ImportFromImageGen (line 186) | func (h *AssetHandler) ImportFromImageGen(c *gin.Context) { method ImportFromVideoGen (line 204) | func (h *AssetHandler) ImportFromVideoGen(c *gin.Context) { function NewAssetHandler (line 21) | func NewAssetHandler(db *gorm.DB, cfg *config.Config, log *logger.Logger... FILE: api/handlers/audio_extraction.go type AudioExtractionHandler (line 11) | type AudioExtractionHandler struct method ExtractAudio (line 34) | func (h *AudioExtractionHandler) ExtractAudio(c *gin.Context) { method BatchExtractAudio (line 67) | func (h *AudioExtractionHandler) BatchExtractAudio(c *gin.Context) { function NewAudioExtractionHandler (line 17) | func NewAudioExtractionHandler(log *logger.Logger, dataDir string) *Audi... type BatchExtractAudioRequest (line 54) | type BatchExtractAudioRequest struct FILE: api/handlers/character_batch.go method BatchGenerateCharacterImages (line 9) | func (h *CharacterLibraryHandler) BatchGenerateCharacterImages(c *gin.Co... FILE: api/handlers/character_library.go type CharacterLibraryHandler (line 15) | type CharacterLibraryHandler struct method ListLibraryItems (line 30) | func (h *CharacterLibraryHandler) ListLibraryItems(c *gin.Context) { method CreateLibraryItem (line 56) | func (h *CharacterLibraryHandler) CreateLibraryItem(c *gin.Context) { method GetLibraryItem (line 75) | func (h *CharacterLibraryHandler) GetLibraryItem(c *gin.Context) { method DeleteLibraryItem (line 94) | func (h *CharacterLibraryHandler) DeleteLibraryItem(c *gin.Context) { method UploadCharacterImage (line 112) | func (h *CharacterLibraryHandler) UploadCharacterImage(c *gin.Context) { method ApplyLibraryItemToCharacter (line 146) | func (h *CharacterLibraryHandler) ApplyLibraryItemToCharacter(c *gin.C... method AddCharacterToLibrary (line 181) | func (h *CharacterLibraryHandler) AddCharacterToLibrary(c *gin.Context) { method UpdateCharacter (line 217) | func (h *CharacterLibraryHandler) UpdateCharacter(c *gin.Context) { method DeleteCharacter (line 245) | func (h *CharacterLibraryHandler) DeleteCharacter(c *gin.Context) { method ExtractCharacters (line 272) | func (h *CharacterLibraryHandler) ExtractCharacters(c *gin.Context) { function NewCharacterLibraryHandler (line 21) | func NewCharacterLibraryHandler(db *gorm.DB, cfg *config.Config, log *lo... FILE: api/handlers/character_library_gen.go method GenerateCharacterImage (line 9) | func (h *CharacterLibraryHandler) GenerateCharacterImage(c *gin.Context) { FILE: api/handlers/drama.go type DramaHandler (line 15) | type DramaHandler struct method CreateDrama (line 31) | func (h *DramaHandler) CreateDrama(c *gin.Context) { method GetDrama (line 48) | func (h *DramaHandler) GetDrama(c *gin.Context) { method ListDramas (line 65) | func (h *DramaHandler) ListDramas(c *gin.Context) { method UpdateDrama (line 89) | func (h *DramaHandler) UpdateDrama(c *gin.Context) { method DeleteDrama (line 112) | func (h *DramaHandler) DeleteDrama(c *gin.Context) { method GetDramaStats (line 128) | func (h *DramaHandler) GetDramaStats(c *gin.Context) { method SaveOutline (line 139) | func (h *DramaHandler) SaveOutline(c *gin.Context) { method GetCharacters (line 161) | func (h *DramaHandler) GetCharacters(c *gin.Context) { method SaveCharacters (line 188) | func (h *DramaHandler) SaveCharacters(c *gin.Context) { method SaveEpisodes (line 248) | func (h *DramaHandler) SaveEpisodes(c *gin.Context) { method SaveProgress (line 270) | func (h *DramaHandler) SaveProgress(c *gin.Context) { method FinalizeEpisode (line 293) | func (h *DramaHandler) FinalizeEpisode(c *gin.Context) { method DownloadEpisodeVideo (line 323) | func (h *DramaHandler) DownloadEpisodeVideo(c *gin.Context) { function NewDramaHandler (line 22) | func NewDramaHandler(db *gorm.DB, cfg *config.Config, log *logger.Logger... FILE: api/handlers/frame_prompt.go type FramePromptHandler (line 11) | type FramePromptHandler struct method GenerateFramePrompt (line 26) | func (h *FramePromptHandler) GenerateFramePrompt(c *gin.Context) { function NewFramePromptHandler (line 17) | func NewFramePromptHandler(framePromptService *services.FramePromptServi... FILE: api/handlers/frame_prompt_query.go function GetStoryboardFramePrompts (line 13) | func GetStoryboardFramePrompts(db *gorm.DB, log *logger.Logger) gin.Hand... FILE: api/handlers/image_generation.go type ImageGenerationHandler (line 16) | type ImageGenerationHandler struct method GenerateImage (line 34) | func (h *ImageGenerationHandler) GenerateImage(c *gin.Context) { method GenerateImagesForScene (line 52) | func (h *ImageGenerationHandler) GenerateImagesForScene(c *gin.Context) { method GetBackgroundsForEpisode (line 66) | func (h *ImageGenerationHandler) GetBackgroundsForEpisode(c *gin.Conte... method ExtractBackgroundsForEpisode (line 80) | func (h *ImageGenerationHandler) ExtractBackgroundsForEpisode(c *gin.C... method BatchGenerateForEpisode (line 117) | func (h *ImageGenerationHandler) BatchGenerateForEpisode(c *gin.Contex... method GetImageGeneration (line 131) | func (h *ImageGenerationHandler) GetImageGeneration(c *gin.Context) { method ListImageGenerations (line 148) | func (h *ImageGenerationHandler) ListImageGenerations(c *gin.Context) { method DeleteImageGeneration (line 197) | func (h *ImageGenerationHandler) DeleteImageGeneration(c *gin.Context) { method UploadImage (line 215) | func (h *ImageGenerationHandler) UploadImage(c *gin.Context) { function NewImageGenerationHandler (line 24) | func NewImageGenerationHandler(db *gorm.DB, cfg *config.Config, log *log... FILE: api/handlers/prop.go type PropHandler (line 15) | type PropHandler struct method ListProps (line 28) | func (h *PropHandler) ListProps(c *gin.Context) { method CreateProp (line 51) | func (h *PropHandler) CreateProp(c *gin.Context) { method UpdateProp (line 67) | func (h *PropHandler) UpdateProp(c *gin.Context) { method DeleteProp (line 90) | func (h *PropHandler) DeleteProp(c *gin.Context) { method ExtractProps (line 107) | func (h *PropHandler) ExtractProps(c *gin.Context) { method GenerateImage (line 125) | func (h *PropHandler) GenerateImage(c *gin.Context) { method AssociateProps (line 144) | func (h *PropHandler) AssociateProps(c *gin.Context) { function NewPropHandler (line 20) | func NewPropHandler(db *gorm.DB, cfg *config.Config, log *logger.Logger,... FILE: api/handlers/scene.go type SceneHandler (line 11) | type SceneHandler struct method GetStoryboardsForEpisode (line 23) | func (h *SceneHandler) GetStoryboardsForEpisode(c *gin.Context) { method UpdateScene (line 39) | func (h *SceneHandler) UpdateScene(c *gin.Context) { method GenerateSceneImage (line 57) | func (h *SceneHandler) GenerateSceneImage(c *gin.Context) { method UpdateScenePrompt (line 77) | func (h *SceneHandler) UpdateScenePrompt(c *gin.Context) { method DeleteScene (line 99) | func (h *SceneHandler) DeleteScene(c *gin.Context) { method CreateScene (line 115) | func (h *SceneHandler) CreateScene(c *gin.Context) { function NewSceneHandler (line 16) | func NewSceneHandler(db *gorm.DB, log *logger.Logger, imageGenService *s... FILE: api/handlers/script_generation.go type ScriptGenerationHandler (line 12) | type ScriptGenerationHandler struct method GenerateCharacters (line 26) | func (h *ScriptGenerationHandler) GenerateCharacters(c *gin.Context) { function NewScriptGenerationHandler (line 18) | func NewScriptGenerationHandler(db *gorm.DB, cfg *config.Config, log *lo... FILE: api/handlers/settings.go type SettingsHandler (line 11) | type SettingsHandler struct method GetLanguage (line 24) | func (h *SettingsHandler) GetLanguage(c *gin.Context) { method UpdateLanguage (line 36) | func (h *SettingsHandler) UpdateLanguage(c *gin.Context) { function NewSettingsHandler (line 16) | func NewSettingsHandler(cfg *config.Config, log *logger.Logger) *Setting... FILE: api/handlers/storyboard.go type StoryboardHandler (line 14) | type StoryboardHandler struct method GenerateStoryboard (line 29) | func (h *StoryboardHandler) GenerateStoryboard(c *gin.Context) { method UpdateStoryboard (line 58) | func (h *StoryboardHandler) UpdateStoryboard(c *gin.Context) { method CreateStoryboard (line 79) | func (h *StoryboardHandler) CreateStoryboard(c *gin.Context) { method DeleteStoryboard (line 97) | func (h *StoryboardHandler) DeleteStoryboard(c *gin.Context) { function NewStoryboardHandler (line 20) | func NewStoryboardHandler(db *gorm.DB, cfg *config.Config, log *logger.L... FILE: api/handlers/task.go type TaskHandler (line 11) | type TaskHandler struct method GetTaskStatus (line 24) | func (h *TaskHandler) GetTaskStatus(c *gin.Context) { method GetResourceTasks (line 42) | func (h *TaskHandler) GetResourceTasks(c *gin.Context) { function NewTaskHandler (line 16) | func NewTaskHandler(db *gorm.DB, log *logger.Logger) *TaskHandler { FILE: api/handlers/upload.go type UploadHandler (line 11) | type UploadHandler struct method UploadImage (line 31) | func (h *UploadHandler) UploadImage(c *gin.Context) { method UploadCharacterImage (line 83) | func (h *UploadHandler) UploadCharacterImage(c *gin.Context) { function NewUploadHandler (line 17) | func NewUploadHandler(cfg *config.Config, log *logger.Logger, characterL... FILE: api/handlers/video_generation.go type VideoGenerationHandler (line 14) | type VideoGenerationHandler struct method GenerateVideo (line 26) | func (h *VideoGenerationHandler) GenerateVideo(c *gin.Context) { method GenerateVideoFromImage (line 44) | func (h *VideoGenerationHandler) GenerateVideoFromImage(c *gin.Context) { method BatchGenerateForEpisode (line 62) | func (h *VideoGenerationHandler) BatchGenerateForEpisode(c *gin.Contex... method GetVideoGeneration (line 76) | func (h *VideoGenerationHandler) GetVideoGeneration(c *gin.Context) { method ListVideoGenerations (line 93) | func (h *VideoGenerationHandler) ListVideoGenerations(c *gin.Context) { method DeleteVideoGeneration (line 134) | func (h *VideoGenerationHandler) DeleteVideoGeneration(c *gin.Context) { function NewVideoGenerationHandler (line 19) | func NewVideoGenerationHandler(db *gorm.DB, transferService *services.Re... FILE: api/handlers/video_merge.go type VideoMergeHandler (line 13) | type VideoMergeHandler struct method MergeVideos (line 25) | func (h *VideoMergeHandler) MergeVideos(c *gin.Context) { method GetMerge (line 45) | func (h *VideoMergeHandler) GetMerge(c *gin.Context) { method ListMerges (line 63) | func (h *VideoMergeHandler) ListMerges(c *gin.Context) { method DeleteMerge (line 89) | func (h *VideoMergeHandler) DeleteMerge(c *gin.Context) { function NewVideoMergeHandler (line 18) | func NewVideoMergeHandler(db *gorm.DB, transferService *services2.Resour... FILE: api/middlewares/cors.go function CORSMiddleware (line 7) | func CORSMiddleware(allowedOrigins []string) gin.HandlerFunc { FILE: api/middlewares/logger.go function LoggerMiddleware (line 10) | func LoggerMiddleware(log *logger.Logger) gin.HandlerFunc { FILE: api/middlewares/ratelimit.go type rateLimiter (line 11) | type rateLimiter struct function RateLimitMiddleware (line 24) | func RateLimitMiddleware() gin.HandlerFunc { FILE: api/routes/routes.go function SetupRouter (line 14) | func SetupRouter(cfg *config.Config, db *gorm.DB, log *logger.Logger, lo... FILE: application/services/ai_service.go type AIService (line 13) | type AIService struct method CreateConfig (line 61) | func (s *AIService) CreateConfig(req *CreateAIConfigRequest) (*models.... method GetConfig (line 137) | func (s *AIService) GetConfig(configID uint) (*models.AIServiceConfig,... method ListConfigs (line 149) | func (s *AIService) ListConfigs(serviceType string) ([]models.AIServic... method UpdateConfig (line 166) | func (s *AIService) UpdateConfig(configID uint, req *UpdateAIConfigReq... method DeleteConfig (line 254) | func (s *AIService) DeleteConfig(configID uint) error { method TestConnection (line 270) | func (s *AIService) TestConnection(req *TestConnectionRequest) error { method GetDefaultConfig (line 318) | func (s *AIService) GetDefaultConfig(serviceType string) (*models.AISe... method GetConfigForModel (line 336) | func (s *AIService) GetConfigForModel(serviceType string, modelName st... method GetAIClient (line 358) | func (s *AIService) GetAIClient(serviceType string) (ai.AIClient, erro... method GetAIClientForModel (line 392) | func (s *AIService) GetAIClientForModel(serviceType string, modelName ... method GenerateText (line 419) | func (s *AIService) GenerateText(prompt string, systemPrompt string, o... method GenerateImage (line 428) | func (s *AIService) GenerateImage(prompt string, size string, n int) (... function NewAIService (line 18) | func NewAIService(db *gorm.DB, log *logger.Logger) *AIService { type CreateAIConfigRequest (line 25) | type CreateAIConfigRequest struct type UpdateAIConfigRequest (line 39) | type UpdateAIConfigRequest struct type TestConnectionRequest (line 53) | type TestConnectionRequest struct FILE: application/services/asset_duration_update.go method UpdateAssetDurationFromFile (line 11) | func (s *AssetService) UpdateAssetDurationFromFile(assetID uint, localFi... method UpdateAssetDurationFromURL (line 44) | func (s *AssetService) UpdateAssetDurationFromURL(assetID uint, localSto... FILE: application/services/asset_service.go type AssetService (line 14) | type AssetService struct method CreateAsset (line 70) | func (s *AssetService) CreateAsset(req *CreateAssetRequest) (*models.A... method UpdateAsset (line 113) | func (s *AssetService) UpdateAsset(assetID uint, req *UpdateAssetReque... method GetAsset (line 149) | func (s *AssetService) GetAsset(assetID uint) (*models.Asset, error) { method ListAssets (line 160) | func (s *AssetService) ListAssets(req *ListAssetsRequest) ([]models.As... method DeleteAsset (line 209) | func (s *AssetService) DeleteAsset(assetID uint) error { method ImportFromImageGen (line 220) | func (s *AssetService) ImportFromImageGen(imageGenID uint) (*models.As... method ImportFromVideoGen (line 248) | func (s *AssetService) ImportFromVideoGen(videoGenID uint) (*models.As... function NewAssetService (line 20) | func NewAssetService(db *gorm.DB, log *logger.Logger) *AssetService { type CreateAssetRequest (line 28) | type CreateAssetRequest struct type UpdateAssetRequest (line 48) | type UpdateAssetRequest struct type ListAssetsRequest (line 57) | type ListAssetsRequest struct FILE: application/services/audio_extraction_service.go type AudioExtractionService (line 12) | type AudioExtractionService struct method ExtractAudio (line 34) | func (s *AudioExtractionService) ExtractAudio(videoURL string, dataDir... method BatchExtractAudio (line 77) | func (s *AudioExtractionService) BatchExtractAudio(videoURLs []string,... function NewAudioExtractionService (line 17) | func NewAudioExtractionService(log *logger.Logger) *AudioExtractionServi... type ExtractAudioRequest (line 24) | type ExtractAudioRequest struct type ExtractAudioResponse (line 28) | type ExtractAudioResponse struct FILE: application/services/character_library_service.go type CharacterLibraryService (line 16) | type CharacterLibraryService struct method ListLibraryItems (line 55) | func (s *CharacterLibraryService) ListLibraryItems(query *CharacterLib... method CreateLibraryItem (line 96) | func (s *CharacterLibraryService) CreateLibraryItem(req *CreateLibrary... method GetLibraryItem (line 122) | func (s *CharacterLibraryService) GetLibraryItem(itemID string) (*mode... method DeleteLibraryItem (line 138) | func (s *CharacterLibraryService) DeleteLibraryItem(itemID string) err... method ApplyLibraryItemToCharacter (line 155) | func (s *CharacterLibraryService) ApplyLibraryItemToCharacter(characte... method UploadCharacterImage (line 203) | func (s *CharacterLibraryService) UploadCharacterImage(characterID str... method AddCharacterToLibrary (line 233) | func (s *CharacterLibraryService) AddCharacterToLibrary(characterID st... method DeleteCharacter (line 276) | func (s *CharacterLibraryService) DeleteCharacter(characterID uint) er... method GenerateCharacterImage (line 306) | func (s *CharacterLibraryService) GenerateCharacterImage(characterID s... method waitAndUpdateCharacterImage (line 370) | func (s *CharacterLibraryService) waitAndUpdateCharacterImage(characte... method UpdateCharacter (line 416) | func (s *CharacterLibraryService) UpdateCharacter(characterID string, ... method BatchGenerateCharacterImages (line 475) | func (s *CharacterLibraryService) BatchGenerateCharacterImages(charact... method ExtractCharactersFromScript (line 503) | func (s *CharacterLibraryService) ExtractCharactersFromScript(episodeI... method processCharacterExtraction (line 523) | func (s *CharacterLibraryService) processCharacterExtraction(taskID st... function NewCharacterLibraryService (line 25) | func NewCharacterLibraryService(db *gorm.DB, log *logger.Logger, cfg *co... type CreateLibraryItemRequest (line 36) | type CreateLibraryItemRequest struct type CharacterLibraryQuery (line 46) | type CharacterLibraryQuery struct type UpdateCharacterRequest (line 405) | type UpdateCharacterRequest struct FILE: application/services/data_migration_service.go type DataMigrationService (line 18) | type DataMigrationService struct method MigrateLocalPaths (line 35) | func (s *DataMigrationService) MigrateLocalPaths() error { method ensureStorageDirectories (line 115) | func (s *DataMigrationService) ensureStorageDirectories() error { method migrateAssets (line 133) | func (s *DataMigrationService) migrateAssets(stats *MigrationStats) er... method migrateCharacterLibraries (line 175) | func (s *DataMigrationService) migrateCharacterLibraries(stats *Migrat... method migrateImageGenerations (line 211) | func (s *DataMigrationService) migrateImageGenerations(stats *Migratio... method migrateScenes (line 258) | func (s *DataMigrationService) migrateScenes(stats *MigrationStats) er... method migrateCharacters (line 297) | func (s *DataMigrationService) migrateCharacters(stats *MigrationStats... method migrateVideoGenerations (line 336) | func (s *DataMigrationService) migrateVideoGenerations(stats *Migratio... method downloadOrGetCached (line 375) | func (s *DataMigrationService) downloadOrGetCached(url, subDir, prefix... method downloadAndSaveImage (line 405) | func (s *DataMigrationService) downloadAndSaveImage(imageURL, subDir, ... method downloadAndSaveVideo (line 434) | func (s *DataMigrationService) downloadAndSaveVideo(videoURL, subDir, ... method extractFileExtension (line 466) | func (s *DataMigrationService) extractFileExtension(url string) string { method downloadFile (line 496) | func (s *DataMigrationService) downloadFile(url, filepath string) error { function NewDataMigrationService (line 25) | func NewDataMigrationService(db *gorm.DB, log *logger.Logger) *DataMigra... type MigrationStats (line 99) | type MigrationStats struct FILE: application/services/drama_service.go type DramaService (line 16) | type DramaService struct method CreateDrama (line 55) | func (s *DramaService) CreateDrama(req *CreateDramaRequest) (*models.D... method GetDrama (line 81) | func (s *DramaService) GetDrama(dramaID string) (*models.Drama, error) { method ListDramas (line 206) | func (s *DramaService) ListDramas(query *DramaListQuery) ([]models.Dra... method UpdateDrama (line 259) | func (s *DramaService) UpdateDrama(dramaID string, req *UpdateDramaReq... method DeleteDrama (line 300) | func (s *DramaService) DeleteDrama(dramaID string) error { method GetDramaStats (line 316) | func (s *DramaService) GetDramaStats() (map[string]interface{}, error) { method SaveOutline (line 363) | func (s *DramaService) SaveOutline(dramaID string, req *SaveOutlineReq... method GetCharacters (line 400) | func (s *DramaService) GetCharacters(dramaID string, episodeID *string... method SaveCharacters (line 455) | func (s *DramaService) SaveCharacters(dramaID string, req *SaveCharact... method SaveEpisodes (line 579) | func (s *DramaService) SaveEpisodes(dramaID string, req *SaveEpisodesR... method SaveProgress (line 627) | func (s *DramaService) SaveProgress(dramaID string, req *SaveProgressR... method addBaseURLToScenes (line 674) | func (s *DramaService) addBaseURLToScenes(drama *models.Drama) { function NewDramaService (line 22) | func NewDramaService(db *gorm.DB, cfg *config.Config, log *logger.Logger... type CreateDramaRequest (line 30) | type CreateDramaRequest struct type UpdateDramaRequest (line 38) | type UpdateDramaRequest struct type DramaListQuery (line 47) | type DramaListQuery struct type SaveOutlineRequest (line 342) | type SaveOutlineRequest struct type SaveCharactersRequest (line 349) | type SaveCharactersRequest struct type SaveProgressRequest (line 354) | type SaveProgressRequest struct type SaveEpisodesRequest (line 359) | type SaveEpisodesRequest struct FILE: application/services/frame_prompt_helper.go method parseFramePromptJSON (line 10) | func (s *FramePromptService) parseFramePromptJSON(aiResponse string) *Si... FILE: application/services/frame_prompt_service.go type FramePromptService (line 14) | type FramePromptService struct method GenerateFramePrompt (line 74) | func (s *FramePromptService) GenerateFramePrompt(req GenerateFrameProm... method processFramePromptGeneration (line 96) | func (s *FramePromptService) processFramePromptGeneration(taskID strin... method saveFramePrompt (line 179) | func (s *FramePromptService) saveFramePrompt(storyboardID, frameType, ... method generateFirstFrame (line 210) | func (s *FramePromptService) generateFirstFrame(sb models.Storyboard, ... method generateKeyFrame (line 258) | func (s *FramePromptService) generateKeyFrame(sb models.Storyboard, sc... method generateLastFrame (line 305) | func (s *FramePromptService) generateLastFrame(sb models.Storyboard, s... method generatePanelFrames (line 352) | func (s *FramePromptService) generatePanelFrames(sb models.Storyboard,... method generateActionSequence (line 382) | func (s *FramePromptService) generateActionSequence(sb models.Storyboa... method buildStoryboardContext (line 445) | func (s *FramePromptService) buildStoryboardContext(sb models.Storyboa... method buildFallbackPrompt (line 504) | func (s *FramePromptService) buildFallbackPrompt(sb models.Storyboard,... function NewFramePromptService (line 24) | func NewFramePromptService(db *gorm.DB, cfg *config.Config, log *logger.... type FrameType (line 36) | type FrameType constant FrameTypeFirst (line 39) | FrameTypeFirst FrameType = "first" constant FrameTypeKey (line 40) | FrameTypeKey FrameType = "key" constant FrameTypeLast (line 41) | FrameTypeLast FrameType = "last" constant FrameTypePanel (line 42) | FrameTypePanel FrameType = "panel" constant FrameTypeAction (line 43) | FrameTypeAction FrameType = "action" type GenerateFramePromptRequest (line 47) | type GenerateFramePromptRequest struct type FramePromptResponse (line 55) | type FramePromptResponse struct type SingleFramePrompt (line 62) | type SingleFramePrompt struct type MultiFramePrompt (line 68) | type MultiFramePrompt struct function mustParseUint (line 203) | func mustParseUint(s string) uint64 { FILE: application/services/image_generation_service.go type ImageGenerationService (line 23) | type ImageGenerationService struct method GetDB (line 66) | func (s *ImageGenerationService) GetDB() *gorm.DB { method GenerateImage (line 94) | func (s *ImageGenerationService) GenerateImage(request *GenerateImageR... method ProcessImageGeneration (line 158) | func (s *ImageGenerationService) ProcessImageGeneration(imageGenID uin... method pollTaskStatus (line 311) | func (s *ImageGenerationService) pollTaskStatus(imageGenID uint, clien... method completeImageGeneration (line 338) | func (s *ImageGenerationService) completeImageGeneration(imageGenID ui... method updateImageGenError (line 466) | func (s *ImageGenerationService) updateImageGenError(imageGenID uint, ... method getImageClient (line 488) | func (s *ImageGenerationService) getImageClient(provider string) (imag... method getImageClientWithModel (line 531) | func (s *ImageGenerationService) getImageClientWithModel(provider stri... method GetImageGeneration (line 588) | func (s *ImageGenerationService) GetImageGeneration(imageGenID uint) (... method ListImageGenerations (line 596) | func (s *ImageGenerationService) ListImageGenerations(dramaID *uint, s... method DeleteImageGeneration (line 633) | func (s *ImageGenerationService) DeleteImageGeneration(imageGenID uint... method CreateImageFromUpload (line 654) | func (s *ImageGenerationService) CreateImageFromUpload(req *UploadImag... method GenerateImagesForScene (line 698) | func (s *ImageGenerationService) GenerateImagesForScene(sceneID string... method BatchGenerateImagesForEpisode (line 744) | func (s *ImageGenerationService) BatchGenerateImagesForEpisode(episode... method GetScencesForEpisode (line 800) | func (s *ImageGenerationService) GetScencesForEpisode(episodeID string... method ExtractBackgroundsForEpisode (line 816) | func (s *ImageGenerationService) ExtractBackgroundsForEpisode(episodeI... method processBackgroundExtraction (line 842) | func (s *ImageGenerationService) processBackgroundExtraction(taskID st... method extractBackgroundsFromScript (line 931) | func (s *ImageGenerationService) extractBackgroundsFromScript(scriptCo... method extractBackgroundsWithAI (line 1088) | func (s *ImageGenerationService) extractBackgroundsWithAI(storyboards ... method extractUniqueBackgrounds (line 1270) | func (s *ImageGenerationService) extractUniqueBackgrounds(scenes []mod... method loadImageAsBase64 (line 1311) | func (s *ImageGenerationService) loadImageAsBase64(localPath string) (... function truncateImageURL (line 35) | func truncateImageURL(url string) string { function NewImageGenerationService (line 52) | func NewImageGenerationService(db *gorm.DB, cfg *config.Config, transfer... type GenerateImageRequest (line 70) | type GenerateImageRequest struct type UploadImageRequest (line 645) | type UploadImageRequest struct type BackgroundInfo (line 734) | type BackgroundInfo struct FILE: application/services/prompt_i18n.go type PromptI18n (line 10) | type PromptI18n struct method GetLanguage (line 20) | func (p *PromptI18n) GetLanguage() string { method IsEnglish (line 29) | func (p *PromptI18n) IsEnglish() bool { method GetStoryboardSystemPrompt (line 34) | func (p *PromptI18n) GetStoryboardSystemPrompt() string { method GetSceneExtractionPrompt (line 147) | func (p *PromptI18n) GetSceneExtractionPrompt(style string) string { method GetFirstFramePrompt (line 200) | func (p *PromptI18n) GetFirstFramePrompt(style string) string { method GetKeyFramePrompt (line 240) | func (p *PromptI18n) GetKeyFramePrompt(style string) string { method GetActionSequenceFramePrompt (line 280) | func (p *PromptI18n) GetActionSequenceFramePrompt(style string) string { method GetLastFramePrompt (line 365) | func (p *PromptI18n) GetLastFramePrompt(style string) string { method GetOutlineGenerationPrompt (line 405) | func (p *PromptI18n) GetOutlineGenerationPrompt() string { method GetCharacterExtractionPrompt (line 448) | func (p *PromptI18n) GetCharacterExtractionPrompt(style string) string { method GetPropExtractionPrompt (line 494) | func (p *PromptI18n) GetPropExtractionPrompt(style string) string { method GetEpisodeScriptPrompt (line 545) | func (p *PromptI18n) GetEpisodeScriptPrompt() string { method FormatUserPrompt (line 592) | func (p *PromptI18n) FormatUserPrompt(key string, args ...interface{})... method GetStylePrompt (line 676) | func (p *PromptI18n) GetStylePrompt(style string) string { method GetVideoConstraintPrompt (line 846) | func (p *PromptI18n) GetVideoConstraintPrompt(referenceMode string) st... function NewPromptI18n (line 15) | func NewPromptI18n(cfg *config.Config) *PromptI18n { FILE: application/services/prop_service.go type PropService (line 16) | type PropService struct method ListProps (line 39) | func (s *PropService) ListProps(dramaID uint) ([]models.Prop, error) { method CreateProp (line 48) | func (s *PropService) CreateProp(prop *models.Prop) error { method UpdateProp (line 53) | func (s *PropService) UpdateProp(id uint, updates map[string]interface... method DeleteProp (line 58) | func (s *PropService) DeleteProp(id uint) error { method ExtractPropsFromScript (line 63) | func (s *PropService) ExtractPropsFromScript(episodeID uint) (string, ... method processPropExtraction (line 79) | func (s *PropService) processPropExtraction(taskID string, episode mod... method GeneratePropImage (line 148) | func (s *PropService) GeneratePropImage(propID uint) (string, error) { method processPropImageGeneration (line 169) | func (s *PropService) processPropImageGeneration(taskID string, prop m... method AssociatePropsWithStoryboard (line 232) | func (s *PropService) AssociatePropsWithStoryboard(storyboardID uint, ... function NewPropService (line 26) | func NewPropService(db *gorm.DB, aiService *AIService, taskService *Task... FILE: application/services/resource_transfer_service.go type ResourceTransferService (line 8) | type ResourceTransferService struct function NewResourceTransferService (line 13) | func NewResourceTransferService(db *gorm.DB, log *logger.Logger) *Resour... FILE: application/services/script_generation_service.go type ScriptGenerationService (line 15) | type ScriptGenerationService struct method GenerateCharacters (line 44) | func (s *ScriptGenerationService) GenerateCharacters(req *GenerateChar... method processCharacterGeneration (line 65) | func (s *ScriptGenerationService) processCharacterGeneration(taskID st... function NewScriptGenerationService (line 24) | func NewScriptGenerationService(db *gorm.DB, cfg *config.Config, log *lo... type GenerateCharactersRequest (line 35) | type GenerateCharactersRequest struct function minInt (line 197) | func minInt(a, b int) int { FILE: application/services/storyboard_composition_service.go type StoryboardCompositionService (line 12) | type StoryboardCompositionService struct method GetScenesForEpisode (line 72) | func (s *StoryboardCompositionService) GetScenesForEpisode(episodeID s... method UpdateScene (line 282) | func (s *StoryboardCompositionService) UpdateScene(sceneID string, req... method GenerateSceneImage (line 356) | func (s *StoryboardCompositionService) GenerateSceneImage(req *Generat... method UpdateScenePrompt (line 418) | func (s *StoryboardCompositionService) UpdateScenePrompt(sceneID strin... method UpdateSceneInfo (line 445) | func (s *StoryboardCompositionService) UpdateSceneInfo(sceneID string,... method DeleteScene (line 484) | func (s *StoryboardCompositionService) DeleteScene(sceneID string) err... method CreateScene (line 520) | func (s *StoryboardCompositionService) CreateScene(req *CreateSceneReq... function NewStoryboardCompositionService (line 18) | func NewStoryboardCompositionService(db *gorm.DB, log *logger.Logger, im... type SceneCharacterInfo (line 26) | type SceneCharacterInfo struct type SceneBackgroundInfo (line 33) | type SceneBackgroundInfo struct type SceneCompositionInfo (line 42) | type SceneCompositionInfo struct type UpdateSceneRequest (line 267) | type UpdateSceneRequest struct type GenerateSceneImageRequest (line 350) | type GenerateSceneImageRequest struct type UpdateScenePromptRequest (line 414) | type UpdateScenePromptRequest struct type UpdateSceneInfoRequest (line 436) | type UpdateSceneInfoRequest struct function getStringValue (line 502) | func getStringValue(s *string) string { type CreateSceneRequest (line 509) | type CreateSceneRequest struct FILE: application/services/storyboard_service.go type StoryboardService (line 18) | type StoryboardService struct method GenerateStoryboard (line 64) | func (s *StoryboardService) GenerateStoryboard(episodeID string, model... method processStoryboardGeneration (line 348) | func (s *StoryboardService) processStoryboardGeneration(taskID, episod... method generateImagePrompt (line 477) | func (s *StoryboardService) generateImagePrompt(sb Storyboard) string { method generateVideoPrompt (line 621) | func (s *StoryboardService) generateVideoPrompt(sb Storyboard) string { method saveStoryboards (line 685) | func (s *StoryboardService) saveStoryboards(episodeID string, storyboa... method CreateStoryboard (line 895) | func (s *StoryboardService) CreateStoryboard(req *CreateStoryboardRequ... method DeleteStoryboard (line 970) | func (s *StoryboardService) DeleteStoryboard(storyboardID uint) error { function NewStoryboardService (line 27) | func NewStoryboardService(db *gorm.DB, cfg *config.Config, log *logger.L... type Storyboard (line 38) | type Storyboard struct type GenerateStoryboardResult (line 59) | type GenerateStoryboardResult struct function extractInitialPose (line 512) | func extractInitialPose(action string) string { function extractSimpleLocation (line 535) | func extractSimpleLocation(location string) string { function extractSimplePose (line 559) | func extractSimplePose(action string) string { function extractFirstFramePose (line 578) | func extractFirstFramePose(action string) string { function extractCompositionType (line 600) | func extractCompositionType(shotType string) string { type CreateStoryboardRequest (line 873) | type CreateStoryboardRequest struct function min (line 981) | func min(a, b int) int { function getString (line 988) | func getString(s *string) string { FILE: application/services/storyboard_update_full.go method UpdateStoryboard (line 10) | func (s *StoryboardService) UpdateStoryboard(storyboardID string, update... FILE: application/services/task_service.go type TaskService (line 14) | type TaskService struct method CreateTask (line 27) | func (s *TaskService) CreateTask(taskType, resourceID string) (*models... method UpdateTaskStatus (line 44) | func (s *TaskService) UpdateTaskStatus(taskID, status string, progress... method UpdateTaskError (line 63) | func (s *TaskService) UpdateTaskError(taskID string, err error) error { method UpdateTaskResult (line 77) | func (s *TaskService) UpdateTaskResult(taskID string, result interface... method GetTask (line 96) | func (s *TaskService) GetTask(taskID string) (*models.AsyncTask, error) { method GetTasksByResource (line 105) | func (s *TaskService) GetTasksByResource(resourceID string) ([]*models... function NewTaskService (line 19) | func NewTaskService(db *gorm.DB, log *logger.Logger) *TaskService { FILE: application/services/upload_service.go type UploadService (line 15) | type UploadService struct method UploadFile (line 41) | func (s *UploadService) UploadFile(file io.Reader, fileName, contentTy... method UploadCharacterImage (line 81) | func (s *UploadService) UploadCharacterImage(file io.Reader, fileName,... method DeleteFile (line 86) | func (s *UploadService) DeleteFile(fileURL string) error { method extractRelativePathFromURL (line 106) | func (s *UploadService) extractRelativePathFromURL(fileURL string) str... method GetPresignedURL (line 116) | func (s *UploadService) GetPresignedURL(objectName string, expiry time... function NewUploadService (line 21) | func NewUploadService(cfg *config.Config, log *logger.Logger) (*UploadSe... type UploadResult (line 35) | type UploadResult struct FILE: application/services/video_generation_service.go type VideoGenerationService (line 19) | type VideoGenerationService struct method GenerateVideo (line 78) | func (s *VideoGenerationService) GenerateVideo(request *GenerateVideoR... method ProcessVideoGeneration (line 190) | func (s *VideoGenerationService) ProcessVideoGeneration(videoGenID uin... method pollTaskStatus (line 367) | func (s *VideoGenerationService) pollTaskStatus(videoGenID uint, taskI... method completeVideoGeneration (line 449) | func (s *VideoGenerationService) completeVideoGeneration(videoGenID ui... method updateVideoGenError (line 566) | func (s *VideoGenerationService) updateVideoGenError(videoGenID uint, ... method getVideoClient (line 575) | func (s *VideoGenerationService) getVideoClient(provider string, model... method RecoverPendingTasks (line 631) | func (s *VideoGenerationService) RecoverPendingTasks() { method GetVideoGeneration (line 657) | func (s *VideoGenerationService) GetVideoGeneration(id uint) (*models.... method ListVideoGenerations (line 665) | func (s *VideoGenerationService) ListVideoGenerations(dramaID *uint, s... method GenerateVideoFromImage (line 692) | func (s *VideoGenerationService) GenerateVideoFromImage(imageGenID uin... method BatchGenerateVideosForEpisode (line 727) | func (s *VideoGenerationService) BatchGenerateVideosForEpisode(episode... method DeleteVideoGeneration (line 758) | func (s *VideoGenerationService) DeleteVideoGeneration(id uint) error { method convertImageToBase64 (line 764) | func (s *VideoGenerationService) convertImageToBase64(imageURL string)... function NewVideoGenerationService (line 29) | func NewVideoGenerationService(db *gorm.DB, transferService *ResourceTra... type GenerateVideoRequest (line 45) | type GenerateVideoRequest struct FILE: application/services/video_merge_service.go type VideoMergeService (line 19) | type VideoMergeService struct method MergeVideos (line 50) | func (s *VideoMergeService) MergeVideos(req *MergeVideoRequest) (*mode... method processMergeVideo (line 101) | func (s *VideoMergeService) processMergeVideo(mergeID uint) { method mergeVideoClips (line 142) | func (s *VideoMergeService) mergeVideoClips(client video.VideoClient, ... method pollMergeStatus (line 219) | func (s *VideoMergeService) pollMergeStatus(mergeID uint, client video... method completeMerge (line 246) | func (s *VideoMergeService) completeMerge(mergeID uint, result *video.... method updateMergeError (line 285) | func (s *VideoMergeService) updateMergeError(mergeID uint, errorMsg st... method getVideoClient (line 293) | func (s *VideoMergeService) getVideoClient(provider string) (video.Vid... method GetMerge (line 333) | func (s *VideoMergeService) GetMerge(mergeID uint) (*models.VideoMerge... method ListMerges (line 341) | func (s *VideoMergeService) ListMerges(episodeID *string, status strin... method DeleteMerge (line 366) | func (s *VideoMergeService) DeleteMerge(mergeID uint) error { method FinalizeEpisode (line 412) | func (s *VideoMergeService) FinalizeEpisode(episodeID string, timeline... function NewVideoMergeService (line 29) | func NewVideoMergeService(db *gorm.DB, transferService *ResourceTransfer... type MergeVideoRequest (line 41) | type MergeVideoRequest struct type TimelineClip (line 378) | type TimelineClip struct function getAssetIDString (line 389) | func getAssetIDString(assetID interface{}) string { type FinalizeEpisodeRequest (line 406) | type FinalizeEpisodeRequest struct FILE: cmd/migrate/main.go type DataMigrationService (line 21) | type DataMigrationService struct method MigrateLocalPaths (line 86) | func (s *DataMigrationService) MigrateLocalPaths() error { method ensureStorageDirectories (line 150) | func (s *DataMigrationService) ensureStorageDirectories() error { method migrateAssets (line 168) | func (s *DataMigrationService) migrateAssets(stats *MigrationStats) er... method migrateCharacterLibraries (line 207) | func (s *DataMigrationService) migrateCharacterLibraries(stats *Migrat... method migrateCharacters (line 241) | func (s *DataMigrationService) migrateCharacters(stats *MigrationStats... method migrateImageGenerations (line 278) | func (s *DataMigrationService) migrateImageGenerations(stats *Migratio... method migrateScenes (line 322) | func (s *DataMigrationService) migrateScenes(stats *MigrationStats) er... method migrateVideoGenerations (line 359) | func (s *DataMigrationService) migrateVideoGenerations(stats *Migratio... method downloadOrGetCached (line 396) | func (s *DataMigrationService) downloadOrGetCached(url, subDir, prefix... method downloadAndSaveImage (line 426) | func (s *DataMigrationService) downloadAndSaveImage(imageURL, subDir, ... method downloadAndSaveVideo (line 455) | func (s *DataMigrationService) downloadAndSaveVideo(videoURL, subDir, ... method extractFileExtension (line 487) | func (s *DataMigrationService) extractFileExtension(url string) string { method downloadFile (line 517) | func (s *DataMigrationService) downloadFile(url, filepath string) error { type MigrationStats (line 29) | type MigrationStats struct function main (line 44) | func main() { FILE: domain/models/ai_config.go type AIServiceConfig (line 10) | type AIServiceConfig struct method TableName (line 28) | func (c *AIServiceConfig) TableName() string { type AIServiceProvider (line 32) | type AIServiceProvider struct method TableName (line 44) | func (p *AIServiceProvider) TableName() string { type ModelField (line 49) | type ModelField method Value (line 52) | func (m ModelField) Value() (driver.Value, error) { method Scan (line 64) | func (m *ModelField) Scan(value interface{}) error { method MarshalJSON (line 100) | func (m ModelField) MarshalJSON() ([]byte, error) { method UnmarshalJSON (line 108) | func (m *ModelField) UnmarshalJSON(data []byte) error { FILE: domain/models/asset.go type Asset (line 9) | type Asset struct method TableName (line 55) | func (Asset) TableName() string { type AssetType (line 47) | type AssetType constant AssetTypeImage (line 50) | AssetTypeImage AssetType = "image" constant AssetTypeVideo (line 51) | AssetTypeVideo AssetType = "video" constant AssetTypeAudio (line 52) | AssetTypeAudio AssetType = "audio" FILE: domain/models/character_library.go type CharacterLibrary (line 10) | type CharacterLibrary struct method TableName (line 24) | func (c *CharacterLibrary) TableName() string { FILE: domain/models/drama.go type Drama (line 10) | type Drama struct method TableName (line 32) | func (d *Drama) TableName() string { type Character (line 36) | type Character struct method TableName (line 62) | func (c *Character) TableName() string { type Episode (line 66) | type Episode struct method TableName (line 88) | func (e *Episode) TableName() string { type Storyboard (line 92) | type Storyboard struct method TableName (line 126) | func (s *Storyboard) TableName() string { type Scene (line 130) | type Scene struct method TableName (line 150) | func (s *Scene) TableName() string { type Prop (line 154) | type Prop struct method TableName (line 173) | func (p *Prop) TableName() string { FILE: domain/models/frame_prompt.go type FramePrompt (line 6) | type FramePrompt struct method TableName (line 17) | func (FramePrompt) TableName() string { constant FrameTypeFirst (line 23) | FrameTypeFirst = "first" constant FrameTypeKey (line 24) | FrameTypeKey = "key" constant FrameTypeLast (line 25) | FrameTypeLast = "last" constant FrameTypePanel (line 26) | FrameTypePanel = "panel" constant FrameTypeAction (line 27) | FrameTypeAction = "action" FILE: domain/models/image_generation.go type ImageGeneration (line 9) | type ImageGeneration struct method TableName (line 48) | func (ImageGeneration) TableName() string { type ImageGenerationStatus (line 52) | type ImageGenerationStatus constant ImageStatusPending (line 55) | ImageStatusPending ImageGenerationStatus = "pending" constant ImageStatusProcessing (line 56) | ImageStatusProcessing ImageGenerationStatus = "processing" constant ImageStatusCompleted (line 57) | ImageStatusCompleted ImageGenerationStatus = "completed" constant ImageStatusFailed (line 58) | ImageStatusFailed ImageGenerationStatus = "failed" type ImageProvider (line 61) | type ImageProvider constant ProviderOpenAI (line 64) | ProviderOpenAI ImageProvider = "openai" constant ProviderMidjourney (line 65) | ProviderMidjourney ImageProvider = "midjourney" constant ProviderStableDiffusion (line 66) | ProviderStableDiffusion ImageProvider = "stable_diffusion" constant ProviderDALLE (line 67) | ProviderDALLE ImageProvider = "dalle" type ImageType (line 71) | type ImageType constant ImageTypeCharacter (line 74) | ImageTypeCharacter ImageType = "character" constant ImageTypeScene (line 75) | ImageTypeScene ImageType = "scene" constant ImageTypeProp (line 76) | ImageTypeProp ImageType = "prop" constant ImageTypeStoryboard (line 77) | ImageTypeStoryboard ImageType = "storyboard" FILE: domain/models/task.go type AsyncTask (line 10) | type AsyncTask struct FILE: domain/models/timeline.go type Timeline (line 9) | type Timeline struct method TableName (line 42) | func (Timeline) TableName() string { type TimelineStatus (line 33) | type TimelineStatus constant TimelineStatusDraft (line 36) | TimelineStatusDraft TimelineStatus = "draft" constant TimelineStatusEditing (line 37) | TimelineStatusEditing TimelineStatus = "editing" constant TimelineStatusCompleted (line 38) | TimelineStatusCompleted TimelineStatus = "completed" constant TimelineStatusExporting (line 39) | TimelineStatusExporting TimelineStatus = "exporting" type TimelineTrack (line 46) | type TimelineTrack struct method TableName (line 73) | func (TimelineTrack) TableName() string { type TrackType (line 65) | type TrackType constant TrackTypeVideo (line 68) | TrackTypeVideo TrackType = "video" constant TrackTypeAudio (line 69) | TrackTypeAudio TrackType = "audio" constant TrackTypeText (line 70) | TrackTypeText TrackType = "text" type TimelineClip (line 77) | type TimelineClip struct method TableName (line 116) | func (TimelineClip) TableName() string { type ClipTransition (line 120) | type ClipTransition struct method TableName (line 144) | func (ClipTransition) TableName() string { type TransitionType (line 133) | type TransitionType constant TransitionTypeFade (line 136) | TransitionTypeFade TransitionType = "fade" constant TransitionTypeCrossFade (line 137) | TransitionTypeCrossFade TransitionType = "crossfade" constant TransitionTypeSlide (line 138) | TransitionTypeSlide TransitionType = "slide" constant TransitionTypeWipe (line 139) | TransitionTypeWipe TransitionType = "wipe" constant TransitionTypeZoom (line 140) | TransitionTypeZoom TransitionType = "zoom" constant TransitionTypeDissolve (line 141) | TransitionTypeDissolve TransitionType = "dissolve" type ClipEffect (line 148) | type ClipEffect struct method TableName (line 176) | func (ClipEffect) TableName() string { type EffectType (line 165) | type EffectType constant EffectTypeFilter (line 168) | EffectTypeFilter EffectType = "filter" constant EffectTypeColor (line 169) | EffectTypeColor EffectType = "color" constant EffectTypeBlur (line 170) | EffectTypeBlur EffectType = "blur" constant EffectTypeBrightness (line 171) | EffectTypeBrightness EffectType = "brightness" constant EffectTypeContrast (line 172) | EffectTypeContrast EffectType = "contrast" constant EffectTypeSaturation (line 173) | EffectTypeSaturation EffectType = "saturation" FILE: domain/models/video_generation.go type VideoGeneration (line 9) | type VideoGeneration struct method TableName (line 77) | func (VideoGeneration) TableName() string { type VideoStatus (line 59) | type VideoStatus constant VideoStatusPending (line 62) | VideoStatusPending VideoStatus = "pending" constant VideoStatusProcessing (line 63) | VideoStatusProcessing VideoStatus = "processing" constant VideoStatusCompleted (line 64) | VideoStatusCompleted VideoStatus = "completed" constant VideoStatusFailed (line 65) | VideoStatusFailed VideoStatus = "failed" type VideoProvider (line 68) | type VideoProvider constant VideoProviderRunway (line 71) | VideoProviderRunway VideoProvider = "runway" constant VideoProviderPika (line 72) | VideoProviderPika VideoProvider = "pika" constant VideoProviderDoubao (line 73) | VideoProviderDoubao VideoProvider = "doubao" constant VideoProviderOpenAI (line 74) | VideoProviderOpenAI VideoProvider = "openai" FILE: domain/models/video_merge.go type VideoMergeStatus (line 10) | type VideoMergeStatus constant VideoMergeStatusPending (line 13) | VideoMergeStatusPending VideoMergeStatus = "pending" constant VideoMergeStatusProcessing (line 14) | VideoMergeStatusProcessing VideoMergeStatus = "processing" constant VideoMergeStatusCompleted (line 15) | VideoMergeStatusCompleted VideoMergeStatus = "completed" constant VideoMergeStatusFailed (line 16) | VideoMergeStatusFailed VideoMergeStatus = "failed" type VideoMerge (line 19) | type VideoMerge struct method TableName (line 50) | func (v *VideoMerge) TableName() string { type SceneClip (line 40) | type SceneClip struct FILE: infrastructure/database/custom_logger.go type CustomLogger (line 12) | type CustomLogger struct method Trace (line 24) | func (l *CustomLogger) Trace(ctx context.Context, begin time.Time, fc ... method Info (line 71) | func (l *CustomLogger) Info(ctx context.Context, msg string, data ...i... method Warn (line 76) | func (l *CustomLogger) Warn(ctx context.Context, msg string, data ...i... method Error (line 81) | func (l *CustomLogger) Error(ctx context.Context, msg string, data ...... method LogMode (line 99) | func (l *CustomLogger) LogMode(level logger.LogLevel) logger.Interface { function NewCustomLogger (line 17) | func NewCustomLogger() logger.Interface { function truncateLongValues (line 40) | func truncateLongValues(sql string) string { FILE: infrastructure/database/database.go function NewDatabase (line 17) | func NewDatabase(cfg config.DatabaseConfig) (*gorm.DB, error) { function AutoMigrate (line 72) | func AutoMigrate(db *gorm.DB) error { FILE: infrastructure/external/ffmpeg/ffmpeg.go type FFmpeg (line 16) | type FFmpeg struct method MergeVideos (line 44) | func (f *FFmpeg) MergeVideos(opts *MergeOptions) (string, error) { method downloadVideo (line 107) | func (f *FFmpeg) downloadVideo(url, destPath string) (string, error) { method trimVideo (line 164) | func (f *FFmpeg) trimVideo(inputPath, outputPath string, startTime, en... method concatenateVideosWithTransitions (line 244) | func (f *FFmpeg) concatenateVideosWithTransitions(inputPaths []string,... method concatenateVideos (line 275) | func (f *FFmpeg) concatenateVideos(inputPaths []string, outputPath str... method mergeWithXfade (line 313) | func (f *FFmpeg) mergeWithXfade(inputPaths []string, clips []VideoClip... method mapTransitionType (line 630) | func (f *FFmpeg) mapTransitionType(transType string) string { method hasAudioStream (line 693) | func (f *FFmpeg) hasAudioStream(videoPath string) bool { method getVideoResolution (line 711) | func (f *FFmpeg) getVideoResolution(videoPath string) (int, int) { method GetVideoDuration (line 745) | func (f *FFmpeg) GetVideoDuration(videoPath string) (float64, error) { method copyFile (line 774) | func (f *FFmpeg) copyFile(src, dst string) error { method cleanup (line 784) | func (f *FFmpeg) cleanup(paths []string) { method CleanupTempDir (line 792) | func (f *FFmpeg) CleanupTempDir() error { method ExtractAudio (line 798) | func (f *FFmpeg) ExtractAudio(videoURL, outputPath string) (string, er... method generateSilence (line 855) | func (f *FFmpeg) generateSilence(outputPath string, duration float64) ... function NewFFmpeg (line 21) | func NewFFmpeg(log *logger.Logger) *FFmpeg { type VideoClip (line 31) | type VideoClip struct type MergeOptions (line 39) | type MergeOptions struct FILE: infrastructure/scheduler/resource_transfer_scheduler.go type ResourceTransferScheduler (line 12) | type ResourceTransferScheduler struct method Start (line 35) | func (s *ResourceTransferScheduler) Start() error { method Stop (line 69) | func (s *ResourceTransferScheduler) Stop() { method transferPendingResources (line 82) | func (s *ResourceTransferScheduler) transferPendingResources() { method transferAllPendingResources (line 155) | func (s *ResourceTransferScheduler) transferAllPendingResources() { method RunNow (line 231) | func (s *ResourceTransferScheduler) RunNow() { method RunFullScan (line 237) | func (s *ResourceTransferScheduler) RunFullScan() { function NewResourceTransferScheduler (line 20) | func NewResourceTransferScheduler( FILE: infrastructure/storage/local_storage.go type LocalStorage (line 15) | type LocalStorage struct method Upload (line 31) | func (s *LocalStorage) Upload(file io.Reader, filename string, categor... method Delete (line 55) | func (s *LocalStorage) Delete(url string) error { method GetURL (line 59) | func (s *LocalStorage) GetURL(path string) string { method DownloadFromURL (line 71) | func (s *LocalStorage) DownloadFromURL(url, category string) (string, ... method DownloadFromURLWithPath (line 80) | func (s *LocalStorage) DownloadFromURLWithPath(url, category string) (... method GetAbsolutePath (line 136) | func (s *LocalStorage) GetAbsolutePath(relativePath string) string { function NewLocalStorage (line 20) | func NewLocalStorage(basePath, baseURL string) (*LocalStorage, error) { type DownloadResult (line 64) | type DownloadResult struct function getFileExtension (line 141) | func getFileExtension(url, contentType string) string { FILE: main.go function main (line 21) | func main() { FILE: migrations/init.sql type dramas (line 10) | CREATE TABLE IF NOT EXISTS dramas ( type idx_dramas_status (line 27) | CREATE INDEX IF NOT EXISTS idx_dramas_status ON dramas(status) type idx_dramas_deleted_at (line 28) | CREATE INDEX IF NOT EXISTS idx_dramas_deleted_at ON dramas(deleted_at) type episodes (line 31) | CREATE TABLE IF NOT EXISTS episodes ( type idx_episodes_drama_id (line 47) | CREATE INDEX IF NOT EXISTS idx_episodes_drama_id ON episodes(drama_id) type idx_episodes_status (line 48) | CREATE INDEX IF NOT EXISTS idx_episodes_status ON episodes(status) type idx_episodes_deleted_at (line 49) | CREATE INDEX IF NOT EXISTS idx_episodes_deleted_at ON episodes(deleted_at) type characters (line 52) | CREATE TABLE IF NOT EXISTS characters ( type idx_characters_drama_id (line 71) | CREATE INDEX IF NOT EXISTS idx_characters_drama_id ON characters(drama_id) type idx_characters_deleted_at (line 72) | CREATE INDEX IF NOT EXISTS idx_characters_deleted_at ON characters(delet... type scenes (line 75) | CREATE TABLE IF NOT EXISTS scenes ( type idx_scenes_drama_id (line 90) | CREATE INDEX IF NOT EXISTS idx_scenes_drama_id ON scenes(drama_id) type idx_scenes_status (line 91) | CREATE INDEX IF NOT EXISTS idx_scenes_status ON scenes(status) type idx_scenes_deleted_at (line 92) | CREATE INDEX IF NOT EXISTS idx_scenes_deleted_at ON scenes(deleted_at) type props (line 95) | CREATE TABLE IF NOT EXISTS props ( type idx_props_drama_id (line 110) | CREATE INDEX IF NOT EXISTS idx_props_drama_id ON props(drama_id) type idx_props_deleted_at (line 111) | CREATE INDEX IF NOT EXISTS idx_props_deleted_at ON props(deleted_at) type storyboards (line 114) | CREATE TABLE IF NOT EXISTS storyboards ( type idx_storyboards_episode_id (line 138) | CREATE INDEX IF NOT EXISTS idx_storyboards_episode_id ON storyboards(epi... type idx_storyboards_scene_id (line 139) | CREATE INDEX IF NOT EXISTS idx_storyboards_scene_id ON storyboards(scene... type idx_storyboards_storyboard_number (line 140) | CREATE INDEX IF NOT EXISTS idx_storyboards_storyboard_number ON storyboa... type idx_storyboards_status (line 141) | CREATE INDEX IF NOT EXISTS idx_storyboards_status ON storyboards(status) type idx_storyboards_deleted_at (line 142) | CREATE INDEX IF NOT EXISTS idx_storyboards_deleted_at ON storyboards(del... type image_generations (line 149) | CREATE TABLE IF NOT EXISTS image_generations ( type idx_image_generations_storyboard_id (line 178) | CREATE INDEX IF NOT EXISTS idx_image_generations_storyboard_id ON image_... type idx_image_generations_drama_id (line 179) | CREATE INDEX IF NOT EXISTS idx_image_generations_drama_id ON image_gener... type idx_image_generations_status (line 180) | CREATE INDEX IF NOT EXISTS idx_image_generations_status ON image_generat... type idx_image_generations_task_id (line 181) | CREATE INDEX IF NOT EXISTS idx_image_generations_task_id ON image_genera... type idx_image_generations_deleted_at (line 182) | CREATE INDEX IF NOT EXISTS idx_image_generations_deleted_at ON image_gen... type video_generations (line 185) | CREATE TABLE IF NOT EXISTS video_generations ( type idx_video_generations_storyboard_id (line 217) | CREATE INDEX IF NOT EXISTS idx_video_generations_storyboard_id ON video_... type idx_video_generations_drama_id (line 218) | CREATE INDEX IF NOT EXISTS idx_video_generations_drama_id ON video_gener... type idx_video_generations_provider (line 219) | CREATE INDEX IF NOT EXISTS idx_video_generations_provider ON video_gener... type idx_video_generations_status (line 220) | CREATE INDEX IF NOT EXISTS idx_video_generations_status ON video_generat... type idx_video_generations_task_id (line 221) | CREATE INDEX IF NOT EXISTS idx_video_generations_task_id ON video_genera... type idx_video_generations_image_gen_id (line 222) | CREATE INDEX IF NOT EXISTS idx_video_generations_image_gen_id ON video_g... type idx_video_generations_deleted_at (line 223) | CREATE INDEX IF NOT EXISTS idx_video_generations_deleted_at ON video_gen... type video_merges (line 226) | CREATE TABLE IF NOT EXISTS video_merges ( type idx_video_merges_episode_id (line 244) | CREATE INDEX IF NOT EXISTS idx_video_merges_episode_id ON video_merges(e... type idx_video_merges_drama_id (line 245) | CREATE INDEX IF NOT EXISTS idx_video_merges_drama_id ON video_merges(dra... type idx_video_merges_status (line 246) | CREATE INDEX IF NOT EXISTS idx_video_merges_status ON video_merges(status) type idx_video_merges_deleted_at (line 247) | CREATE INDEX IF NOT EXISTS idx_video_merges_deleted_at ON video_merges(d... type character_libraries (line 254) | CREATE TABLE IF NOT EXISTS character_libraries ( type idx_character_libraries_category (line 268) | CREATE INDEX IF NOT EXISTS idx_character_libraries_category ON character... type idx_character_libraries_deleted_at (line 269) | CREATE INDEX IF NOT EXISTS idx_character_libraries_deleted_at ON charact... type timelines (line 276) | CREATE TABLE IF NOT EXISTS timelines ( type idx_timelines_drama_id (line 291) | CREATE INDEX IF NOT EXISTS idx_timelines_drama_id ON timelines(drama_id) type idx_timelines_episode_id (line 292) | CREATE INDEX IF NOT EXISTS idx_timelines_episode_id ON timelines(episode... type idx_timelines_status (line 293) | CREATE INDEX IF NOT EXISTS idx_timelines_status ON timelines(status) type idx_timelines_deleted_at (line 294) | CREATE INDEX IF NOT EXISTS idx_timelines_deleted_at ON timelines(deleted... type timeline_tracks (line 297) | CREATE TABLE IF NOT EXISTS timeline_tracks ( type idx_timeline_tracks_timeline_id (line 311) | CREATE INDEX IF NOT EXISTS idx_timeline_tracks_timeline_id ON timeline_t... type idx_timeline_tracks_type (line 312) | CREATE INDEX IF NOT EXISTS idx_timeline_tracks_type ON timeline_tracks(t... type idx_timeline_tracks_deleted_at (line 313) | CREATE INDEX IF NOT EXISTS idx_timeline_tracks_deleted_at ON timeline_tr... type timeline_clips (line 316) | CREATE TABLE IF NOT EXISTS timeline_clips ( type idx_timeline_clips_track_id (line 339) | CREATE INDEX IF NOT EXISTS idx_timeline_clips_track_id ON timeline_clips... type idx_timeline_clips_asset_id (line 340) | CREATE INDEX IF NOT EXISTS idx_timeline_clips_asset_id ON timeline_clips... type idx_timeline_clips_storyboard_id (line 341) | CREATE INDEX IF NOT EXISTS idx_timeline_clips_storyboard_id ON timeline_... type idx_timeline_clips_transition_in (line 342) | CREATE INDEX IF NOT EXISTS idx_timeline_clips_transition_in ON timeline_... type idx_timeline_clips_transition_out (line 343) | CREATE INDEX IF NOT EXISTS idx_timeline_clips_transition_out ON timeline... type idx_timeline_clips_deleted_at (line 344) | CREATE INDEX IF NOT EXISTS idx_timeline_clips_deleted_at ON timeline_cli... type clip_transitions (line 347) | CREATE TABLE IF NOT EXISTS clip_transitions ( type idx_clip_transitions_type (line 358) | CREATE INDEX IF NOT EXISTS idx_clip_transitions_type ON clip_transitions... type idx_clip_transitions_deleted_at (line 359) | CREATE INDEX IF NOT EXISTS idx_clip_transitions_deleted_at ON clip_trans... type clip_effects (line 362) | CREATE TABLE IF NOT EXISTS clip_effects ( type idx_clip_effects_clip_id (line 375) | CREATE INDEX IF NOT EXISTS idx_clip_effects_clip_id ON clip_effects(clip... type idx_clip_effects_type (line 376) | CREATE INDEX IF NOT EXISTS idx_clip_effects_type ON clip_effects(type) type idx_clip_effects_deleted_at (line 377) | CREATE INDEX IF NOT EXISTS idx_clip_effects_deleted_at ON clip_effects(d... type assets (line 384) | CREATE TABLE IF NOT EXISTS assets ( type idx_assets_drama_id (line 409) | CREATE INDEX IF NOT EXISTS idx_assets_drama_id ON assets(drama_id) type idx_assets_type (line 410) | CREATE INDEX IF NOT EXISTS idx_assets_type ON assets(type) type idx_assets_category (line 411) | CREATE INDEX IF NOT EXISTS idx_assets_category ON assets(category) type idx_assets_image_gen_id (line 412) | CREATE INDEX IF NOT EXISTS idx_assets_image_gen_id ON assets(image_gen_id) type idx_assets_video_gen_id (line 413) | CREATE INDEX IF NOT EXISTS idx_assets_video_gen_id ON assets(video_gen_id) type idx_assets_deleted_at (line 414) | CREATE INDEX IF NOT EXISTS idx_assets_deleted_at ON assets(deleted_at) type asset_tags (line 417) | CREATE TABLE IF NOT EXISTS asset_tags ( type idx_asset_tags_deleted_at (line 426) | CREATE INDEX IF NOT EXISTS idx_asset_tags_deleted_at ON asset_tags(delet... type asset_collections (line 429) | CREATE TABLE IF NOT EXISTS asset_collections ( type idx_asset_collections_drama_id (line 439) | CREATE INDEX IF NOT EXISTS idx_asset_collections_drama_id ON asset_colle... type idx_asset_collections_deleted_at (line 440) | CREATE INDEX IF NOT EXISTS idx_asset_collections_deleted_at ON asset_col... type asset_tag_relations (line 443) | CREATE TABLE IF NOT EXISTS asset_tag_relations ( type idx_asset_tag_relations_asset_id (line 449) | CREATE INDEX IF NOT EXISTS idx_asset_tag_relations_asset_id ON asset_tag... type idx_asset_tag_relations_tag_id (line 450) | CREATE INDEX IF NOT EXISTS idx_asset_tag_relations_tag_id ON asset_tag_r... type asset_collection_relations (line 453) | CREATE TABLE IF NOT EXISTS asset_collection_relations ( type idx_asset_collection_relations_asset_id (line 459) | CREATE INDEX IF NOT EXISTS idx_asset_collection_relations_asset_id ON as... type idx_asset_collection_relations_collection_id (line 460) | CREATE INDEX IF NOT EXISTS idx_asset_collection_relations_collection_id ... type ai_service_configs (line 467) | CREATE TABLE IF NOT EXISTS ai_service_configs ( type idx_ai_service_configs_service_type (line 486) | CREATE INDEX IF NOT EXISTS idx_ai_service_configs_service_type ON ai_ser... type idx_ai_service_configs_deleted_at (line 487) | CREATE INDEX IF NOT EXISTS idx_ai_service_configs_deleted_at ON ai_servi... type ai_service_providers (line 490) | CREATE TABLE IF NOT EXISTS ai_service_providers ( type idx_ai_service_providers_service_type (line 503) | CREATE INDEX IF NOT EXISTS idx_ai_service_providers_service_type ON ai_s... type idx_ai_service_providers_deleted_at (line 504) | CREATE INDEX IF NOT EXISTS idx_ai_service_providers_deleted_at ON ai_ser... FILE: pkg/ai/client.go type AIClient (line 4) | type AIClient interface FILE: pkg/ai/gemini_client.go type GeminiClient (line 13) | type GeminiClient struct method GenerateText (line 82) | func (c *GeminiClient) GenerateText(prompt string, systemPrompt string... method GenerateImage (line 186) | func (c *GeminiClient) GenerateImage(prompt string, size string, n int... method TestConnection (line 190) | func (c *GeminiClient) TestConnection() error { type GeminiTextRequest (line 21) | type GeminiTextRequest struct type GeminiContent (line 26) | type GeminiContent struct type GeminiPart (line 31) | type GeminiPart struct type GeminiInstruction (line 35) | type GeminiInstruction struct type GeminiTextResponse (line 39) | type GeminiTextResponse struct function NewGeminiClient (line 61) | func NewGeminiClient(baseURL, apiKey, model, endpoint string) *GeminiCli... FILE: pkg/ai/openai_client.go type OpenAIClient (line 13) | type OpenAIClient struct method ChatCompletion (line 95) | func (c *OpenAIClient) ChatCompletion(messages []ChatMessage, options ... method sendChatRequest (line 108) | func (c *OpenAIClient) sendChatRequest(req *ChatCompletionRequest) (*C... method doChatRequest (line 126) | func (c *OpenAIClient) doChatRequest(req *ChatCompletionRequest) (*Cha... method GenerateText (line 240) | func (c *OpenAIClient) GenerateText(prompt string, systemPrompt string... method GenerateImage (line 267) | func (c *OpenAIClient) GenerateImage(prompt string, size string, n int... method TestConnection (line 333) | func (c *OpenAIClient) TestConnection() error { type ChatMessage (line 21) | type ChatMessage struct type ChatCompletionRequest (line 26) | type ChatCompletionRequest struct type ChatCompletionResponse (line 36) | type ChatCompletionResponse struct type ImageGenerationRequest (line 56) | type ImageGenerationRequest struct type ImageGenerationResponse (line 63) | type ImageGenerationResponse struct type ErrorResponse (line 71) | type ErrorResponse struct function NewOpenAIClient (line 79) | func NewOpenAIClient(baseURL, apiKey, model, endpoint string) *OpenAICli... function WithTemperature (line 222) | func WithTemperature(temp float64) func(*ChatCompletionRequest) { function WithMaxTokens (line 228) | func WithMaxTokens(tokens int) func(*ChatCompletionRequest) { function WithTopP (line 234) | func WithTopP(topP float64) func(*ChatCompletionRequest) { function shouldRetryWithMaxCompletionTokens (line 352) | func shouldRetryWithMaxCompletionTokens(err error, req *ChatCompletionRe... FILE: pkg/config/config.go type Config (line 9) | type Config struct type AppConfig (line 17) | type AppConfig struct type ServerConfig (line 24) | type ServerConfig struct type DatabaseConfig (line 32) | type DatabaseConfig struct method DSN (line 77) | func (c *DatabaseConfig) DSN() string { type StorageConfig (line 45) | type StorageConfig struct type AIConfig (line 51) | type AIConfig struct function LoadConfig (line 57) | func LoadConfig() (*Config, error) { FILE: pkg/image/gemini_image_client.go type GeminiImageClient (line 14) | type GeminiImageClient struct method GenerateImage (line 108) | func (c *GeminiImageClient) GenerateImage(prompt string, opts ...Image... method GetTaskStatus (line 267) | func (c *GeminiImageClient) GetTaskStatus(taskID string) (*ImageResult... type GeminiImageRequest (line 22) | type GeminiImageRequest struct type GeminiPart (line 31) | type GeminiPart struct type GeminiInlineData (line 36) | type GeminiInlineData struct type GeminiImageResponse (line 41) | type GeminiImageResponse struct function downloadImageToBase64 (line 61) | func downloadImageToBase64(imageURL string) (string, string, error) { function NewGeminiImageClient (line 87) | func NewGeminiImageClient(baseURL, apiKey, model, endpoint string) *Gemi... function replaceModelPlaceholder (line 271) | func replaceModelPlaceholder(endpoint, model string) string { FILE: pkg/image/image_client.go type ImageClient (line 3) | type ImageClient interface type ImageResult (line 8) | type ImageResult struct type ImageOptions (line 18) | type ImageOptions struct type ImageOption (line 32) | type ImageOption function WithNegativePrompt (line 34) | func WithNegativePrompt(prompt string) ImageOption { function WithSize (line 40) | func WithSize(size string) ImageOption { function WithQuality (line 46) | func WithQuality(quality string) ImageOption { function WithStyle (line 52) | func WithStyle(style string) ImageOption { function WithSteps (line 58) | func WithSteps(steps int) ImageOption { function WithCfgScale (line 64) | func WithCfgScale(scale float64) ImageOption { function WithSeed (line 70) | func WithSeed(seed int64) ImageOption { function WithModel (line 76) | func WithModel(model string) ImageOption { function WithDimensions (line 82) | func WithDimensions(width, height int) ImageOption { function WithReferenceImages (line 89) | func WithReferenceImages(images []string) ImageOption { FILE: pkg/image/openai_image_client.go type OpenAIImageClient (line 12) | type OpenAIImageClient struct method GenerateImage (line 52) | func (c *OpenAIImageClient) GenerateImage(prompt string, opts ...Image... method GetTaskStatus (line 126) | func (c *OpenAIImageClient) GetTaskStatus(taskID string) (*ImageResult... type DALLERequest (line 20) | type DALLERequest struct type DALLEResponse (line 29) | type DALLEResponse struct function NewOpenAIImageClient (line 37) | func NewOpenAIImageClient(baseURL, apiKey, model, endpoint string) *Open... FILE: pkg/image/volcengine_image_client.go type VolcEngineImageClient (line 12) | type VolcEngineImageClient struct method GenerateImage (line 64) | func (c *VolcEngineImageClient) GenerateImage(prompt string, opts ...I... method GetTaskStatus (line 156) | func (c *VolcEngineImageClient) GetTaskStatus(taskID string) (*ImageRe... type VolcEngineImageRequest (line 21) | type VolcEngineImageRequest struct type VolcEngineImageResponse (line 30) | type VolcEngineImageResponse struct function NewVolcEngineImageClient (line 45) | func NewVolcEngineImageClient(baseURL, apiKey, model, endpoint, queryEnd... FILE: pkg/logger/logger.go type Logger (line 8) | type Logger struct function NewLogger (line 12) | func NewLogger(debug bool) *Logger { FILE: pkg/response/response.go type Response (line 10) | type Response struct type ErrorInfo (line 18) | type ErrorInfo struct type PaginationData (line 24) | type PaginationData struct type Pagination (line 29) | type Pagination struct function Success (line 36) | func Success(c *gin.Context, data interface{}) { function SuccessWithMessage (line 44) | func SuccessWithMessage(c *gin.Context, message string, data interface{}) { function Created (line 53) | func Created(c *gin.Context, data interface{}) { function SuccessWithPagination (line 61) | func SuccessWithPagination(c *gin.Context, items interface{}, total int6... function Error (line 78) | func Error(c *gin.Context, statusCode int, errCode string, message strin... function ErrorWithDetails (line 89) | func ErrorWithDetails(c *gin.Context, statusCode int, errCode string, me... function BadRequest (line 101) | func BadRequest(c *gin.Context, message string) { function Unauthorized (line 105) | func Unauthorized(c *gin.Context, message string) { function Forbidden (line 109) | func Forbidden(c *gin.Context, message string) { function NotFound (line 113) | func NotFound(c *gin.Context, message string) { function InternalError (line 117) | func InternalError(c *gin.Context, message string) { FILE: pkg/utils/image_utils.go function ImageToBase64 (line 14) | func ImageToBase64(imagePath string) (string, error) { function downloadImageFromURL (line 43) | func downloadImageFromURL(url string) ([]byte, error) { function detectImageMimeType (line 58) | func detectImageMimeType(data []byte) string { FILE: pkg/utils/json_parser.go function SafeParseAIJSON (line 17) | func SafeParseAIJSON(aiResponse string, v interface{}) error { function attemptJSONRepair (line 109) | func attemptJSONRepair(jsonStr string) string { function ExtractJSONFromText (line 170) | func ExtractJSONFromText(text string) string { function ValidateJSON (line 196) | func ValidateJSON(jsonStr string) error { function isTruncated (line 202) | func isTruncated(jsonStr string) bool { function truncateString (line 234) | func truncateString(s string, maxLen int) string { function maxInt (line 241) | func maxInt(a, b int) int { function minInt (line 248) | func minInt(a, b int) int { FILE: pkg/utils/json_parser_test.go function TestAttemptJSONRepairExcessBraces (line 10) | func TestAttemptJSONRepairExcessBraces(t *testing.T) { function TestAttemptJSONRepairFunction (line 81) | func TestAttemptJSONRepairFunction(t *testing.T) { FILE: pkg/video/chatfire_client.go type ChatfireClient (line 14) | type ChatfireClient struct method GenerateVideo (line 125) | func (c *ChatfireClient) GenerateVideo(imageURL, prompt string, opts .... method GetTaskStatus (line 339) | func (c *ChatfireClient) GetTaskStatus(taskID string) (*VideoResult, e... type ChatfireRequest (line 23) | type ChatfireRequest struct type ChatfireSoraRequest (line 32) | type ChatfireSoraRequest struct type ChatfireDoubaoRequest (line 41) | type ChatfireDoubaoRequest struct type ChatfireResponse (line 51) | type ChatfireResponse struct type ChatfireTaskResponse (line 63) | type ChatfireTaskResponse struct function getErrorMessage (line 80) | func getErrorMessage(errorData json.RawMessage) string { function NewChatfireClient (line 106) | func NewChatfireClient(baseURL, apiKey, model, endpoint, queryEndpoint s... FILE: pkg/video/minimax_client.go constant ModelHailuo23 (line 17) | ModelHailuo23 = "MiniMax-Hailuo-2.3" constant ModelHailuo23Fast (line 22) | ModelHailuo23Fast = "MiniMax-Hailuo-2.3-Fast" constant ModelHailuo02 (line 27) | ModelHailuo02 = "MiniMax-Hailuo-02" constant Resolution768P (line 32) | Resolution768P = "768P" constant Resolution1080P (line 33) | Resolution1080P = "1080P" constant Duration6s (line 38) | Duration6s = 6 constant Duration10s (line 39) | Duration10s = 10 type MinimaxClient (line 43) | type MinimaxClient struct method GenerateVideo (line 116) | func (c *MinimaxClient) GenerateVideo(imageURL, prompt string, opts ..... method GetTaskStatus (line 206) | func (c *MinimaxClient) GetTaskStatus(taskID string) (*VideoResult, er... method getFileDownloadURL (line 266) | func (c *MinimaxClient) getFileDownloadURL(fileID string) (string, err... type MinimaxSubjectReference (line 50) | type MinimaxSubjectReference struct type MinimaxRequest (line 55) | type MinimaxRequest struct type MinimaxCreateResponse (line 66) | type MinimaxCreateResponse struct type MinimaxQueryResponse (line 75) | type MinimaxQueryResponse struct type MinimaxFileResponse (line 88) | type MinimaxFileResponse struct function NewMinimaxClient (line 103) | func NewMinimaxClient(baseURL, apiKey, model string) *MinimaxClient { FILE: pkg/video/openai_sora_client.go type OpenAISoraClient (line 17) | type OpenAISoraClient struct method GenerateVideo (line 56) | func (c *OpenAISoraClient) GenerateVideo(imageURL, prompt string, opts... method GetTaskStatus (line 234) | func (c *OpenAISoraClient) GetTaskStatus(taskID string) (*VideoResult,... type OpenAISoraResponse (line 24) | type OpenAISoraResponse struct function NewOpenAISoraClient (line 45) | func NewOpenAISoraClient(baseURL, apiKey, model string) *OpenAISoraClient { FILE: pkg/video/video_client.go type VideoClient (line 12) | type VideoClient interface type VideoResult (line 17) | type VideoResult struct type VideoOptions (line 29) | type VideoOptions struct type VideoOption (line 44) | type VideoOption function WithModel (line 46) | func WithModel(model string) VideoOption { function WithDuration (line 52) | func WithDuration(duration int) VideoOption { function WithFPS (line 58) | func WithFPS(fps int) VideoOption { function WithResolution (line 64) | func WithResolution(resolution string) VideoOption { function WithAspectRatio (line 70) | func WithAspectRatio(ratio string) VideoOption { function WithStyle (line 76) | func WithStyle(style string) VideoOption { function WithMotionLevel (line 82) | func WithMotionLevel(level int) VideoOption { function WithCameraMotion (line 88) | func WithCameraMotion(motion string) VideoOption { function WithSeed (line 94) | func WithSeed(seed int64) VideoOption { function WithFirstFrame (line 100) | func WithFirstFrame(url string) VideoOption { function WithLastFrame (line 106) | func WithLastFrame(url string) VideoOption { function WithReferenceImages (line 112) | func WithReferenceImages(urls []string) VideoOption { type RunwayClient (line 118) | type RunwayClient struct method GenerateVideo (line 154) | func (c *RunwayClient) GenerateVideo(imageURL, prompt string, opts ...... method GetTaskStatus (line 229) | func (c *RunwayClient) GetTaskStatus(taskID string) (*VideoResult, err... type RunwayRequest (line 125) | type RunwayRequest struct type RunwayResponse (line 134) | type RunwayResponse struct function NewRunwayClient (line 143) | func NewRunwayClient(baseURL, apiKey, model string) *RunwayClient { type PikaClient (line 271) | type PikaClient struct method GenerateVideo (line 309) | func (c *PikaClient) GenerateVideo(imageURL, prompt string, opts ...Vi... method GetTaskStatus (line 387) | func (c *PikaClient) GetTaskStatus(taskID string) (*VideoResult, error) { type PikaRequest (line 278) | type PikaRequest struct type PikaResponse (line 289) | type PikaResponse struct function NewPikaClient (line 298) | func NewPikaClient(baseURL, apiKey, model string) *PikaClient { FILE: pkg/video/volces_ark_client.go type VolcesArkClient (line 14) | type VolcesArkClient struct method GenerateVideo (line 80) | func (c *VolcesArkClient) GenerateVideo(imageURL, prompt string, opts ... method GetTaskStatus (line 232) | func (c *VolcesArkClient) GetTaskStatus(taskID string) (*VideoResult, ... type VolcesArkContent (line 23) | type VolcesArkContent struct type VolcesArkRequest (line 30) | type VolcesArkRequest struct type VolcesArkResponse (line 36) | type VolcesArkResponse struct function NewVolcesArkClient (line 60) | func NewVolcesArkClient(baseURL, apiKey, model, endpoint, queryEndpoint ... FILE: web/public/ffmpeg/ffmpeg-core.js function stringToPtr (line 8) | function stringToPtr(str){const len=Module["lengthBytesUTF8"](str)+1;con... function stringsToPtr (line 8) | function stringsToPtr(strs){const len=strs.length;const ptr=Module["_mal... function print (line 8) | function print(message){Module["logger"]({type:"stdout",message:message})} function printErr (line 8) | function printErr(message){if(!message.startsWith("Aborted(native code c... function exec (line 8) | function exec(..._args){const args=[...Module["DEFAULT_ARGS"],..._args];... function ffprobe (line 8) | function ffprobe(..._args){const args=[...Module["DEFAULT_ARGS_FFPROBE"]... function setLogger (line 8) | function setLogger(logger){Module["logger"]=logger} function setTimeout (line 8) | function setTimeout(timeout){Module["timeout"]=timeout} function setProgress (line 8) | function setProgress(handler){Module["progress"]=handler} function receiveProgress (line 8) | function receiveProgress(progress,time){Module["progress"]({progress:pro... function reset (line 8) | function reset(){Module["ret"]=-1;Module["timeout"]=-1} function _locateFile (line 8) | function _locateFile(path,prefix){const mainScriptUrlOrBlob=Module["main... function locateFile (line 8) | function locateFile(path){if(Module["locateFile"]){return Module["locate... function assert (line 8) | function assert(condition,text){if(!condition){abort(text)}} function updateMemoryViews (line 8) | function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEA... function keepRuntimeAlive (line 8) | function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounte... function preRun (line 8) | function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="func... function initRuntime (line 8) | function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!... function postRun (line 8) | function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="f... function addOnPreRun (line 8) | function addOnPreRun(cb){__ATPRERUN__.unshift(cb)} function addOnInit (line 8) | function addOnInit(cb){__ATINIT__.unshift(cb)} function addOnPostRun (line 8) | function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)} function getUniqueRunDependency (line 8) | function getUniqueRunDependency(id){return id} function addRunDependency (line 8) | function addRunDependency(id){runDependencies++;if(Module["monitorRunDep... function removeRunDependency (line 8) | function removeRunDependency(id){runDependencies--;if(Module["monitorRun... function abort (line 8) | function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what=... function isDataURI (line 8) | function isDataURI(filename){return filename.startsWith(dataURIPrefix)} function getBinary (line 8) | function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return... function getBinaryPromise (line 8) | function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WE... function instantiateArrayBuffer (line 8) | function instantiateArrayBuffer(binaryFile,imports,receiver){return getB... function instantiateAsync (line 8) | function instantiateAsync(binary,binaryFile,imports,callback){if(!binary... function createWasm (line 8) | function createWasm(){var info={"a":wasmImports};function receiveInstanc... function send_progress (line 8) | function send_progress(progress,time){Module.receiveProgress(progress,ti... function is_timeout (line 8) | function is_timeout(diff){if(Module.timeout===-1)return 0;else{return Mo... function ExitStatus (line 8) | function ExitStatus(status){this.name="ExitStatus";this.message=`Program... function callRuntimeCallbacks (line 8) | function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callb... function getWasmTableEntry (line 8) | function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if... function getValue (line 8) | function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(t... function setValue (line 8) | function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";sw... function UTF8ArrayToString (line 8) | function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=id... function UTF8ToString (line 8) | function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(H... function ___assert_fail (line 8) | function ___assert_fail(condition,filename,line,func){abort(`Assertion f... function ExceptionInfo (line 8) | function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;thi... function ___cxa_throw (line 8) | function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(pt... function ___dlsym (line 8) | function ___dlsym(handle,symbol){abort(dlopenMissingError)} function initRandomFill (line 8) | function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["get... function randomFill (line 8) | function randomFill(view){return(randomFill=initRandomFill())(view)} function trim (line 8) | function trim(arr){var start=0;for(;start0... function zeroMemory (line 8) | function zeroMemory(address,size){HEAPU8.fill(0,address,address+size);re... function alignMemory (line 8) | function alignMemory(size,alignment){return Math.ceil(size/alignment)*al... function mmapAlloc (line 8) | function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripte... function asyncLoad (line 8) | function asyncLoad(url,onload,onerror,noRunDep){var dep=!noRunDep?getUni... function FS_handledByPreloadPlugin (line 8) | function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if... function FS_createPreloadedFile (line 8) | function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,... function FS_modeStringToFlags (line 8) | function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|6... function FS_getMode (line 8) | function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73... function ensureParent (line 8) | function ensureParent(path){var parts=path.split("/");var parent=root;fo... function base (line 8) | function base(path){var parts=path.split("/");return parts[parts.length-1]} function doCallback (line 8) | function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)} function done (line 8) | function done(errCode){if(errCode){if(!done.errored){done.errored=true;r... function LazyUint8Array (line 8) | function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]} function writeChunks (line 8) | function writeChunks(stream,buffer,offset,length,position){var contents=... function ___syscall__newselect (line 8) | function ___syscall__newselect(nfds,readfds,writefds,exceptfds,timeout){... function handleMessage (line 8) | function handleMessage(data){if(typeof data=="string"){var encoder=new T... function getSocketFromFD (line 8) | function getSocketFromFD(fd){var socket=SOCKFS.getSocket(fd);if(!socket)... function setErrNo (line 8) | function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value} function inetPton4 (line 8) | function inetPton4(str){var b=str.split(".");for(var i=0;i<4;i++){var tm... function jstoi_q (line 8) | function jstoi_q(str){return parseInt(str)} function inetPton6 (line 8) | function inetPton6(str){var words;var w,offset,z;var valid6regx=/^((?=.*... function writeSockaddr (line 8) | function writeSockaddr(sa,family,addr,port,addrlen){switch(family){case ... function ___syscall_accept4 (line 8) | function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=ge... function inetNtop4 (line 8) | function inetNtop4(addr){return(addr&255)+"."+(addr>>8&255)+"."+(addr>>1... function inetNtop6 (line 8) | function inetNtop6(ints){var str="";var word=0;var longest=0;var lastzer... function readSockaddr (line 8) | function readSockaddr(sa,salen){var family=HEAP16[sa>>1];var port=_ntohs... function getSocketAddress (line 8) | function getSocketAddress(addrp,addrlen,allowNull){if(allowNull&&addrp==... function ___syscall_bind (line 8) | function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocke... function ___syscall_connect (line 8) | function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSo... function ___syscall_faccessat (line 8) | function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.... function ___syscall_fcntl64 (line 8) | function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try... function ___syscall_fstat64 (line 8) | function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFro... function stringToUTF8 (line 8) | function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Arr... function ___syscall_getdents64 (line 8) | function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.ge... function ___syscall_getpeername (line 8) | function ___syscall_getpeername(fd,addr,addrlen,d1,d2,d3){try{var sock=g... function ___syscall_getsockname (line 8) | function ___syscall_getsockname(fd,addr,addrlen,d1,d2,d3){try{var sock=g... function ___syscall_getsockopt (line 8) | function ___syscall_getsockopt(fd,level,optname,optval,optlen,d1){try{va... function ___syscall_ioctl (line 8) | function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{va... function ___syscall_listen (line 8) | function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);... function ___syscall_lstat64 (line 8) | function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);ret... function ___syscall_mkdirat (line 8) | function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(pa... function ___syscall_newfstatat (line 8) | function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.g... function ___syscall_openat (line 8) | function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=va... function ___syscall_poll (line 8) | function ___syscall_poll(fds,nfds,timeout){try{var nonzero=0;for(var i=0... function ___syscall_recvfrom (line 8) | function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){try{var sock... function ___syscall_renameat (line 8) | function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldp... function ___syscall_rmdir (line 8) | function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(... function ___syscall_sendto (line 8) | function ___syscall_sendto(fd,message,length,flags,addr,addr_len){try{va... function ___syscall_socket (line 8) | function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.cre... function ___syscall_stat64 (line 8) | function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);retu... function ___syscall_unlinkat (line 8) | function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(... function __emscripten_get_now_is_monotonic (line 8) | function __emscripten_get_now_is_monotonic(){return nowIsMonotonic} function __emscripten_throw_longjmp (line 8) | function __emscripten_throw_longjmp(){throw Infinity} function readI53FromI64 (line 8) | function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*429... function __gmtime_js (line 8) | function __gmtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*... function isLeapYear (line 8) | function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)} function ydayFromDate (line 8) | function ydayFromDate(date){var leap=isLeapYear(date.getFullYear());var ... function __localtime_js (line 8) | function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(tim... function __mktime_js (line 8) | function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,H... function __mmap_js (line 8) | function __mmap_js(len,prot,flags,fd,off,allocated,addr){try{var stream=... function __munmap_js (line 8) | function __munmap_js(addr,len,prot,flags,fd,offset){try{var stream=SYSCA... function stringToNewUTF8 (line 8) | function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_m... function __tzset_js (line 8) | function __tzset_js(timezone,daylight,tzname){var currentYear=(new Date)... function _abort (line 8) | function _abort(){abort("")} function _dlopen (line 8) | function _dlopen(handle){abort(dlopenMissingError)} function readEmAsmArgs (line 8) | function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;bu... function runEmAsmFunction (line 8) | function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sig... function _emscripten_asm_const_int (line 8) | function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFu... function _emscripten_date_now (line 8) | function _emscripten_date_now(){return Date.now()} function getHeapMax (line 8) | function getHeapMax(){return 2147483648} function _emscripten_get_heap_max (line 8) | function _emscripten_get_heap_max(){return getHeapMax()} function _emscripten_memcpy_big (line 8) | function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src... function emscripten_realloc_buffer (line 8) | function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{was... function _emscripten_resize_heap (line 8) | function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.lengt... function getExecutableName (line 8) | function getExecutableName(){return thisProgram||"./this.program"} function getEnvStrings (line 8) | function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof nav... function stringToAscii (line 8) | function stringToAscii(str,buffer){for(var i=0;iMAX_INT53?NaN... function _fd_seek (line 8) | function _fd_seek(fd,offset,whence,newOffset){try{offset=bigintToI53Chec... function doWritev (line 8) | function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var... function invoke_iiiii (line 8) | function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return g... function invoke_vii (line 8) | function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntr... function invoke_iii (line 8) | function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTa... function invoke_iiiijj (line 8) | function invoke_iiiijj(index,a1,a2,a3,a4,a5){var sp=stackSave();try{retu... function invoke_iiiiiiiii (line 8) | function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSav... function invoke_vi (line 8) | function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(in... function invoke_viiii (line 8) | function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmT... function invoke_iiii (line 8) | function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWa... function invoke_iij (line 8) | function invoke_iij(index,a1,a2){var sp=stackSave();try{return getWasmTa... function invoke_i (line 8) | function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry... function invoke_ii (line 8) | function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableE... function invoke_viiiiiiii (line 8) | function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSav... function invoke_iiiiii (line 8) | function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{retu... function invoke_viiiiii (line 8) | function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{... function run (line 8) | function run(){if(runDependencies>0){return}preRun();if(runDependencies>... FILE: web/src/api/ai.ts method list (line 11) | list(serviceType?: AIServiceType) { method create (line 17) | create(data: CreateAIConfigRequest) { method get (line 21) | get(id: number) { method update (line 25) | update(id: number, data: UpdateAIConfigRequest) { method delete (line 29) | delete(id: number) { method testConnection (line 33) | testConnection(data: TestConnectionRequest) { FILE: web/src/api/asset.ts method createAsset (line 12) | createAsset(data: CreateAssetRequest) { method updateAsset (line 16) | updateAsset(id: number, data: UpdateAssetRequest) { method getAsset (line 20) | getAsset(id: number) { method listAssets (line 24) | listAssets(params: ListAssetsParams) { method deleteAsset (line 36) | deleteAsset(id: number) { method importFromImage (line 40) | importFromImage(imageGenId: number) { method importFromVideo (line 44) | importFromVideo(videoGenId: number) { FILE: web/src/api/audio.ts constant API_BASE_URL (line 3) | const API_BASE_URL = '/api/v1' type ExtractAudioRequest (line 5) | interface ExtractAudioRequest { type ExtractAudioResponse (line 9) | interface ExtractAudioResponse { type BatchExtractAudioRequest (line 14) | interface BatchExtractAudioRequest { type BatchExtractAudioResponse (line 18) | interface BatchExtractAudioResponse { FILE: web/src/api/character-library.ts type CharacterLibraryItem (line 3) | interface CharacterLibraryItem { type CreateLibraryItemRequest (line 15) | interface CreateLibraryItemRequest { type CharacterLibraryQuery (line 24) | interface CharacterLibraryQuery { method list (line 34) | list(params?: CharacterLibraryQuery) { method create (line 47) | create(data: CreateLibraryItemRequest) { method get (line 52) | get(id: string) { method delete (line 57) | delete(id: string) { method uploadCharacterImage (line 62) | uploadCharacterImage(characterId: string, imageUrl: string) { method applyFromLibrary (line 67) | applyFromLibrary(characterId: string, libraryItemId: string) { method addCharacterToLibrary (line 74) | addCharacterToLibrary(characterId: string, category?: string) { method generateCharacterImage (line 81) | generateCharacterImage(characterId: string, model?: string) { method batchGenerateCharacterImages (line 88) | batchGenerateCharacterImages(characterIds: string[], model?: string) { method updateCharacter (line 96) | updateCharacter(characterId: number, data: { method deleteCharacter (line 108) | deleteCharacter(characterId: number) { method extractFromEpisode (line 113) | extractFromEpisode(episodeId: number) { FILE: web/src/api/drama.ts method list (line 11) | list(params?: DramaListQuery) { method create (line 23) | create(data: CreateDramaRequest) { method get (line 27) | get(id: string) { method update (line 31) | update(id: string, data: UpdateDramaRequest) { method delete (line 35) | delete(id: string) { method getStats (line 39) | getStats() { method saveOutline (line 43) | saveOutline(id: string, data: { title: string; summary: string; genre?: ... method getCharacters (line 47) | getCharacters(dramaId: string) { method saveCharacters (line 51) | saveCharacters(id: string, data: any[], episodeId?: string) { method updateCharacter (line 58) | updateCharacter(id: number, data: any) { method saveEpisodes (line 62) | saveEpisodes(id: string, data: any[]) { method saveProgress (line 66) | saveProgress(id: string, data: { current_step: string; step_data?: any }) { method generateStoryboard (line 70) | generateStoryboard(episodeId: string) { method getBackgrounds (line 74) | getBackgrounds(episodeId: string) { method extractBackgrounds (line 78) | extractBackgrounds(episodeId: string, model?: string) { method batchGenerateBackgrounds (line 82) | batchGenerateBackgrounds(episodeId: string) { method generateSingleBackground (line 86) | generateSingleBackground(backgroundId: number, dramaId: string, prompt: ... method getStoryboards (line 94) | getStoryboards(episodeId: string) { method updateStoryboard (line 98) | updateStoryboard(storyboardId: string, data: any) { method updateScene (line 102) | updateScene(sceneId: string, data: { method createScene (line 118) | createScene(data: { method generateSceneImage (line 131) | generateSceneImage(data: { scene_id: number; prompt?: string; model?: st... method updateScenePrompt (line 135) | updateScenePrompt(sceneId: string, prompt: string) { method deleteScene (line 139) | deleteScene(sceneId: string) { method finalizeEpisode (line 144) | finalizeEpisode(episodeId: string, timelineData?: any) { method createStoryboard (line 148) | createStoryboard(data: { method deleteStoryboard (line 161) | deleteStoryboard(storyboardId: number) { FILE: web/src/api/frame.ts type FrameType (line 4) | type FrameType = 'first' | 'key' | 'last' | 'panel' | 'action' type SingleFramePrompt (line 7) | interface SingleFramePrompt { type MultiFramePrompt (line 13) | interface MultiFramePrompt { type GenerateFramePromptResponse (line 19) | interface GenerateFramePromptResponse { type GenerateFramePromptRequest (line 26) | interface GenerateFramePromptRequest { function generateFramePrompt (line 34) | function generateFramePrompt( function generateFirstFrame (line 44) | function generateFirstFrame(storyboardId: number): Promise { method getMerge (line 44) | async getMerge(mergeId: number): Promise { method listMerges (line 49) | async listMerges(params: { method deleteMerge (line 62) | async deleteMerge(mergeId: number): Promise { FILE: web/src/stores/episode.ts type EpisodeCache (line 6) | interface EpisodeCache { type EpisodeOperations (line 13) | interface EpisodeOperations { type SetOperationParams (line 23) | interface SetOperationParams { type DeleteOperationParams (line 28) | interface DeleteOperationParams { type GenerateImageOptions (line 33) | interface GenerateImageOptions { type CachedEpisode (line 38) | interface CachedEpisode { method refresh (line 68) | async refresh() { method set (line 72) | async set(params: SetOperationParams) { method del (line 91) | async del(params: DeleteOperationParams) { method saveScript (line 107) | async saveScript(content: string) { method extractData (line 120) | async extractData() { method generateImages (line 125) | async generateImages(options?: GenerateImageOptions) { method generateStoryboards (line 161) | async generateStoryboards() { method value (line 168) | get value() { method loading (line 171) | get loading() { method error (line 174) | get error() { FILE: web/src/types/ai.ts type AIServiceConfig (line 1) | interface AIServiceConfig { type AIServiceType (line 18) | type AIServiceType = 'text' | 'image' | 'video' type CreateAIConfigRequest (line 20) | interface CreateAIConfigRequest { type UpdateAIConfigRequest (line 33) | interface UpdateAIConfigRequest { type TestConnectionRequest (line 46) | interface TestConnectionRequest { type AIServiceProvider (line 55) | interface AIServiceProvider { FILE: web/src/types/asset.ts type Asset (line 1) | interface Asset { type AssetType (line 30) | type AssetType = 'image' | 'video' | 'audio' type AssetTag (line 32) | interface AssetTag { type AssetCollection (line 39) | interface AssetCollection { type CreateAssetRequest (line 48) | interface CreateAssetRequest { type UpdateAssetRequest (line 68) | interface UpdateAssetRequest { type ListAssetsParams (line 77) | interface ListAssetsParams { constant ASSET_CATEGORIES (line 90) | const ASSET_CATEGORIES = { FILE: web/src/types/drama.ts type Drama (line 3) | interface Drama { type DramaStatus (line 26) | type DramaStatus = 'draft' | 'planning' | 'production' | 'completed' | '... type Character (line 28) | interface Character { type Episode (line 49) | interface Episode { type Storyboard (line 74) | interface Storyboard { type Scene (line 99) | interface Scene { type CreateDramaRequest (line 119) | interface CreateDramaRequest { type UpdateDramaRequest (line 127) | interface UpdateDramaRequest { type DramaListQuery (line 136) | interface DramaListQuery { type DramaStats (line 144) | interface DramaStats { FILE: web/src/types/generation.ts type GenerateCharactersRequest (line 1) | interface GenerateCharactersRequest { type ParseScriptRequest (line 10) | interface ParseScriptRequest { type ParseScriptResult (line 16) | interface ParseScriptResult { type ParsedCharacter (line 22) | interface ParsedCharacter { type ParsedEpisode (line 29) | interface ParsedEpisode { FILE: web/src/types/image.ts type ImageGeneration (line 1) | interface ImageGeneration { type ImageStatus (line 32) | type ImageStatus = 'pending' | 'processing' | 'completed' | 'failed' type ImageProvider (line 34) | type ImageProvider = 'openai' | 'dalle' | 'midjourney' | 'stable_diffusi... type GenerateImageRequest (line 36) | interface GenerateImageRequest { type ImageGenerationListParams (line 57) | interface ImageGenerationListParams { FILE: web/src/types/prop.ts type Prop (line 1) | interface Prop { type CreatePropRequest (line 14) | interface CreatePropRequest { type UpdatePropRequest (line 23) | interface UpdatePropRequest { FILE: web/src/types/timeline.ts type Timeline (line 3) | interface Timeline { type TimelineStatus (line 18) | type TimelineStatus = 'draft' | 'editing' | 'completed' | 'exporting' type TimelineTrack (line 20) | interface TimelineTrack { type TrackType (line 33) | type TrackType = 'video' | 'audio' | 'text' type TimelineClip (line 35) | interface TimelineClip { type ClipTransition (line 60) | interface ClipTransition { type TransitionType (line 68) | type TransitionType = 'fade' | 'crossfade' | 'slide' | 'wipe' | 'zoom' |... type ClipEffect (line 70) | interface ClipEffect { type EffectType (line 80) | type EffectType = 'filter' | 'color' | 'blur' | 'brightness' | 'contrast... type CreateTimelineRequest (line 82) | interface CreateTimelineRequest { type UpdateTimelineRequest (line 91) | interface UpdateTimelineRequest { type CreateTrackRequest (line 99) | interface CreateTrackRequest { type UpdateTrackRequest (line 106) | interface UpdateTrackRequest { type CreateClipRequest (line 114) | interface CreateClipRequest { type UpdateClipRequest (line 129) | interface UpdateClipRequest { type CreateTransitionRequest (line 142) | interface CreateTransitionRequest { constant TRANSITION_TYPES (line 149) | const TRANSITION_TYPES = [ constant EFFECT_TYPES (line 158) | const EFFECT_TYPES = [ FILE: web/src/types/user.ts type User (line 1) | interface User { type UserConfig (line 13) | interface UserConfig { FILE: web/src/types/video.ts type VideoGeneration (line 1) | interface VideoGeneration { type VideoStatus (line 32) | type VideoStatus = 'pending' | 'processing' | 'completed' | 'failed' type VideoProvider (line 34) | type VideoProvider = 'runway' | 'pika' | 'doubao' | 'openai' type GenerateVideoRequest (line 36) | interface GenerateVideoRequest { type VideoGenerationListParams (line 58) | interface VideoGenerationListParams { constant VIDEO_ASPECT_RATIOS (line 67) | const VIDEO_ASPECT_RATIOS = [ constant CAMERA_MOTIONS (line 74) | const CAMERA_MOTIONS = [ FILE: web/src/utils/ffmpeg.ts type VideoTrimOptions (line 7) | interface VideoTrimOptions { type VideoMergeOptions (line 12) | interface VideoMergeOptions { type ProgressCallback (line 20) | interface ProgressCallback { function getFFmpeg (line 24) | async function getFFmpeg(): Promise { function trimVideo (line 53) | async function trimVideo( function mergeVideos (line 92) | async function mergeVideos( function trimAndMergeVideos (line 142) | async function trimAndMergeVideos( function isFFmpegLoaded (line 208) | async function isFFmpegLoaded(): Promise { function unloadFFmpeg (line 212) | async function unloadFFmpeg(): Promise { FILE: web/src/utils/image.ts function fixImageUrl (line 8) | function fixImageUrl(url: string): string { function getImageUrl (line 19) | function getImageUrl(item: any): string { function hasImage (line 39) | function hasImage(item: any): boolean { function getVideoUrl (line 48) | function getVideoUrl(item: any): string { function hasVideo (line 77) | function hasVideo(item: any): boolean { FILE: web/src/utils/request.ts type CustomAxiosInstance (line 5) | interface CustomAxiosInstance extends Omit void) { method mergeVideos (line 117) | async mergeVideos(clips: VideoClip[]): Promise { method mergeWithTransitions (line 250) | private async mergeWithTransitions(inputFiles: string[], clips: VideoC... method getXfadeFilter (line 301) | private getXfadeFilter(type: TransitionType, duration: number, offset:... method terminate (line 320) | async terminate() {