feat: add RELLIS dataset compatibility smoke

This commit is contained in:
DCCONSTRUCTIONS
2026-07-25 20:45:30 +03:00
parent 13c35ff446
commit 054feec0d2
19 changed files with 1633 additions and 277 deletions
+21 -5
View File
@@ -4,7 +4,7 @@ import os
import re
from collections.abc import Callable
from pathlib import Path
from typing import Any, Final
from typing import Annotated, Any, Final
from fastapi import APIRouter, HTTPException, Query, Response
@@ -21,6 +21,7 @@ from k1link.compute import (
lidar_pack_detail,
)
from k1link.datasets import (
RELLIS_SOURCE_ID,
DatasetAdmissionError,
configured_dataset_admission_manifest,
configured_dataset_ground_preview,
@@ -62,6 +63,7 @@ def build_lidar_router(
field_review_root_provider: RootProvider = configured_lidar_field_review_root,
dataset_admission_provider: DatasetArtifactProvider = configured_dataset_admission_manifest,
dataset_preview_provider: DatasetArtifactProvider = configured_dataset_preview,
dataset_rellis_preview_provider: DatasetArtifactProvider = lambda: None,
dataset_ground_preview_provider: DatasetArtifactProvider = configured_dataset_ground_preview,
) -> APIRouter:
router = APIRouter(prefix="/api/v1/lidar", tags=["lidar"])
@@ -70,18 +72,32 @@ def build_lidar_router(
def get_dataset_gateway() -> dict[str, object]:
return dataset_gateway_catalog(
admission_manifest_path=dataset_admission_provider(),
rellis_preview_path=dataset_rellis_preview_provider(),
)
@router.get("/dataset-gateway/preview")
def get_dataset_gateway_preview() -> dict[str, Any]:
path = dataset_preview_provider()
def get_dataset_gateway_preview(
source_id: Annotated[
str,
Query(min_length=1, max_length=160),
] = "goose-3d/v2025-08-22",
) -> dict[str, Any]:
if source_id == "goose-3d/v2025-08-22":
path = dataset_preview_provider()
elif source_id == RELLIS_SOURCE_ID:
path = dataset_rellis_preview_provider()
else:
raise HTTPException(status_code=404, detail="Dataset source не найден.")
if path is None or not path.is_file():
raise HTTPException(
status_code=404,
detail="Первый размеченный native scan ещё не импортирован.",
detail="Размеченный native scan источника ещё не импортирован.",
)
try:
return read_dataset_native_scan_preview(path)
preview = read_dataset_native_scan_preview(path)
if preview["source_id"] != source_id:
raise DatasetAdmissionError("dataset preview source mismatch")
return preview
except DatasetAdmissionError as exc:
raise HTTPException(
status_code=500,