import type { CreateDramaRequest, Drama, DramaListQuery, DramaStats, UpdateDramaRequest } from '../types/drama' import request from '../utils/request' export const dramaAPI = { list(params?: DramaListQuery) { return request.get<{ items: Drama[] pagination: { page: number page_size: number total: number total_pages: number } }>('/dramas', { params }) }, create(data: CreateDramaRequest) { return request.post('/dramas', data) }, get(id: string) { return request.get(`/dramas/${id}`) }, update(id: string, data: UpdateDramaRequest) { return request.put(`/dramas/${id}`, data) }, delete(id: string) { return request.delete(`/dramas/${id}`) }, getStats() { return request.get('/dramas/stats') }, saveOutline(id: string, data: { title: string; summary: string; genre?: string; tags?: string[] }) { return request.put(`/dramas/${id}/outline`, data) }, getCharacters(dramaId: string) { return request.get(`/dramas/${dramaId}/characters`) }, saveCharacters(id: string, data: any[], episodeId?: string) { return request.put(`/dramas/${id}/characters`, { characters: data, episode_id: episodeId ? parseInt(episodeId) : undefined }) }, saveEpisodes(id: string, data: any[]) { return request.put(`/dramas/${id}/episodes`, { episodes: data }) }, saveProgress(id: string, data: { current_step: string; step_data?: any }) { return request.put(`/dramas/${id}/progress`, data) }, generateStoryboard(episodeId: string) { return request.post(`/episodes/${episodeId}/storyboards`) }, getBackgrounds(episodeId: string) { return request.get(`/images/episode/${episodeId}/backgrounds`) }, extractBackgrounds(episodeId: string) { return request.post<{ task_id: string; status: string; message: string }>(`/images/episode/${episodeId}/backgrounds/extract`) }, batchGenerateBackgrounds(episodeId: string) { return request.post(`/images/episode/${episodeId}/batch`) }, generateSingleBackground(backgroundId: number, dramaId: string, prompt: string) { return request.post('/images', { background_id: backgroundId, drama_id: dramaId, prompt: prompt }) }, getStoryboards(episodeId: string) { return request.get(`/episodes/${episodeId}/storyboards`) }, updateStoryboard(storyboardId: string, data: any) { return request.put(`/storyboards/${storyboardId}`, data) }, updateScene(sceneId: string, data: { background_id?: string; characters?: string[]; location?: string; time?: string; action?: string; dialogue?: string; description?: string; duration?: number; }) { return request.put(`/scenes/${sceneId}`, data) }, generateSceneImage(data: { scene_id: string; prompt?: string; model?: string }) { return request.post('/scenes/generate-image', data) }, // 完成集数制作(触发视频合成) finalizeEpisode(episodeId: string, timelineData?: any) { return request.post(`/episodes/${episodeId}/finalize`, timelineData || {}) } }