fix: recover failed Gaussian project builds

This commit is contained in:
DCCONSTRUCTIONS
2026-08-26 09:34:23 +03:00
parent cb1e1494af
commit 385082c8ca
10 changed files with 224 additions and 27 deletions
+31
View File
@@ -228,6 +228,37 @@ def test_service_resumes_a_persisted_provider_job_without_reupload(tmp_path: Pat
assert provider.submit_calls == 0
def test_failed_project_retries_from_retained_source_and_releases_old_job(tmp_path: Path) -> None:
store = SimulationProjectStore(tmp_path)
project = store.create(
name="Retry scene",
scene_type="outdoor",
source_kind="folder",
files=_folder_files(),
)
_upload_all(store, project)
store.begin_build(project["project_id"])
store.update_processing(
project["project_id"],
status="processing",
provider_job_id="gsp-20260826000000-deadbeef",
provider_state="failed",
progress={"completed_steps": 1, "total_steps": 4},
bundle_sha256="d" * 64,
)
store.fail(project["project_id"], "provider failure")
provider = _ReadyProvider()
service = SimulationProjectService(store, provider_factory=lambda: provider) # type: ignore[arg-type]
queued = service.begin_build(project["project_id"])
assert provider.deleted == ["gsp-20260826000000-deadbeef"]
assert queued["status"] == "queued"
assert queued["error"] is None
assert queued["provider"]["job_id"] is None
assert queued["source"]["uploaded_byte_length"] == queued["source"]["total_byte_length"]
def test_api_exposes_same_origin_resumable_upload_contract(tmp_path: Path) -> None:
store = SimulationProjectStore(tmp_path)
service = SimulationProjectService(store, provider_factory=lambda: None)