add per-state DICOM zip downloads

This commit is contained in:
2026-05-03 00:17:30 +08:00
parent 18541db9d4
commit 479a39d880
2 changed files with 38 additions and 7 deletions

View File

@@ -467,18 +467,27 @@ def make_preview(input_dir, angle_degrees):
}
def serialize_outputs(output_paths, preview_paths, zip_path=None):
def zip_metadata(zip_path):
zip_path = Path(zip_path).resolve()
return {
"path": str(zip_path),
"name": zip_path.name,
"size": zip_path.stat().st_size,
}
def serialize_outputs(output_paths, preview_paths, zip_path=None, state_zips=None):
return {
"outputs": {key: str(Path(value).resolve()) for key, value in output_paths.items()},
"previews": {
"comparison": str(Path(preview_paths["comparison"]).resolve()),
"screenshots": str(Path(preview_paths["screenshots"]).resolve()),
},
"zip": {
"path": str(Path(zip_path).resolve()),
"name": Path(zip_path).name,
"size": Path(zip_path).stat().st_size,
} if zip_path else None,
"zip": zip_metadata(zip_path) if zip_path else None,
"stateZips": {
key: zip_metadata(value)
for key, value in (state_zips or {}).items()
},
}
@@ -591,12 +600,24 @@ class Handler(BaseHTTPRequestHandler):
transition_width,
progress,
)
set_job(job_id, message="正在打包各状态 DICOM ZIP...")
state_zips = {}
for state_key in [
"original",
"hard_boundary",
"gaussian_smooth",
"soft_transition",
]:
state_zips[state_key] = zip_folder(
output_paths[state_key],
job_root / f"{state_key}_{job_id}.zip",
)
set_job(job_id, message="正在打包四状态输出 ZIP...")
zip_path = zip_folder(
output_dir,
job_root / f"head_ct_morph_{job_id}.zip",
)
return serialize_outputs(output_paths, preview_paths, zip_path)
return serialize_outputs(output_paths, preview_paths, zip_path, state_zips)
self.send_json(start_job("deformation", worker), status=202)
return