feat: add force option to project generation for reprocessing completed segments
This commit is contained in:
@@ -536,7 +536,7 @@ async def _bootstrap_character_voices(segments, user, backend, backend_type: str
|
||||
logger.error(f"Failed to bootstrap voice for design_id={design.id}: {e}", exc_info=True)
|
||||
|
||||
|
||||
async def generate_project(project_id: int, user: User, db: Session, chapter_index: Optional[int] = None, cancel_event: Optional[asyncio.Event] = None) -> None:
|
||||
async def generate_project(project_id: int, user: User, db: Session, chapter_index: Optional[int] = None, cancel_event: Optional[asyncio.Event] = None, force: bool = False) -> None:
|
||||
project = db.query(AudiobookProject).filter(AudiobookProject.id == project_id).first()
|
||||
if not project:
|
||||
return
|
||||
@@ -551,6 +551,11 @@ async def generate_project(project_id: int, user: User, db: Session, chapter_ind
|
||||
crud.update_audiobook_project_status(db, project_id, "generating")
|
||||
|
||||
segments = crud.list_audiobook_segments(db, project_id, chapter_index=chapter_index)
|
||||
if force:
|
||||
for s in segments:
|
||||
if s.status == "done":
|
||||
crud.update_audiobook_segment_status(db, s.id, "pending")
|
||||
segments = crud.list_audiobook_segments(db, project_id, chapter_index=chapter_index)
|
||||
pending_segments = [s for s in segments if s.status in ("pending", "error")]
|
||||
if not pending_segments:
|
||||
if chapter_index is None:
|
||||
|
||||
Reference in New Issue
Block a user