init
This commit is contained in:
119
web/src/api/drama.ts
Normal file
119
web/src/api/drama.ts
Normal file
@@ -0,0 +1,119 @@
|
||||
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<Drama>('/dramas', data)
|
||||
},
|
||||
|
||||
get(id: string) {
|
||||
return request.get<Drama>(`/dramas/${id}`)
|
||||
},
|
||||
|
||||
update(id: string, data: UpdateDramaRequest) {
|
||||
return request.put<Drama>(`/dramas/${id}`, data)
|
||||
},
|
||||
|
||||
delete(id: string) {
|
||||
return request.delete(`/dramas/${id}`)
|
||||
},
|
||||
|
||||
getStats() {
|
||||
return request.get<DramaStats>('/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(`/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 || {})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user