perf(observatory): pack camera epoch source transfer

This commit is contained in:
DCCONSTRUCTIONS
2026-08-31 17:59:18 +03:00
parent 1766c0bdb2
commit 4cd94b5805
5 changed files with 1164 additions and 7 deletions
+37
View File
@@ -26,6 +26,8 @@ from pydantic import BaseModel, ConfigDict, Field
from k1link.observatory.portable_artifact_transport import (
MAX_RESULT_MANIFEST_BYTES,
PORTABLE_CAMERA_EPOCH_ARCHIVE_ID_HEADER,
PORTABLE_CAMERA_EPOCH_ARCHIVE_MEDIA_TYPE,
PortableArtifactTransportError,
PortableArtifactTransportIntegrityError,
PortableArtifactTransportUnavailableError,
@@ -381,6 +383,41 @@ def build_observatory_worker_router(
.as_dict()
)
@router.get("/recorded-jobs/{job_id}/source-camera-epoch-archive")
def source_camera_epoch_archive(
job_id: Annotated[str, ApiPath(pattern=_JOB_ID_PATTERN)],
claim_token: Annotated[
str,
Header(
alias=OBSERVATORY_WORKER_CLAIM_TOKEN_HEADER,
pattern=_CLAIM_TOKEN_PATTERN,
),
],
claim_generation: Annotated[
int,
Header(alias=OBSERVATORY_WORKER_CLAIM_GENERATION_HEADER, ge=1),
],
) -> FileResponse:
archive, path = _artifact_call(
lambda: artifact_transport.materialize_camera_epoch_archive(
job_id=job_id,
claim_token=claim_token,
claim_generation=claim_generation,
claimant_id=authentication.contour_id,
)
)
return FileResponse(
path,
media_type=PORTABLE_CAMERA_EPOCH_ARCHIVE_MEDIA_TYPE,
headers={
"ETag": f'"{archive.sha256}"',
"Cache-Control": "private, no-store",
"X-Content-Type-Options": "nosniff",
"X-Mission-Core-Content-Sha256": archive.sha256,
PORTABLE_CAMERA_EPOCH_ARCHIVE_ID_HEADER: archive.archive_id,
},
)
@router.get("/recorded-jobs/{job_id}/source-members/{member_id}")
def source_member(
job_id: Annotated[str, ApiPath(pattern=_JOB_ID_PATTERN)],