feat: add RELLIS dataset compatibility smoke
This commit is contained in:
@@ -426,6 +426,9 @@ app.include_router(
|
||||
dataset_preview_provider=lambda: (
|
||||
REPOSITORY_ROOT / ".runtime" / "dataset-gateway" / "preview.json"
|
||||
),
|
||||
dataset_rellis_preview_provider=lambda: (
|
||||
REPOSITORY_ROOT / ".runtime" / "dataset-gateway" / "rellis-preview.json"
|
||||
),
|
||||
dataset_ground_preview_provider=lambda: (
|
||||
REPOSITORY_ROOT / ".runtime" / "dataset-gateway" / "ground-comparison.json"
|
||||
),
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user