feat(planning): consolidate recorded-route localization and spatial scene

Preserve the completed teach-and-repeat laboratory stage: reference preparation, cascaded acquisition, local tracking and recovery, recording lifecycle, replay qualification, and persistent Rerun scene controls. Document the open grid-picking regression and Rerun upgrade contract. No autonomous driving or loop-closure optimization is claimed.
This commit is contained in:
DCCONSTRUCTIONS
2026-09-21 08:47:19 +03:00
parent be58d589e2
commit e515ab1b8c
189 changed files with 19074 additions and 758 deletions
+23
View File
@@ -230,6 +230,13 @@ from k1link.web.runtime_readiness import (
build_runtime_readiness,
)
from k1link.web.session_api import build_session_router
from k1link.web.session_overview_api import build_session_overview_router
from k1link.sessions.overview import SessionOverviewService
from k1link.missions.sources import PlanningSources
from k1link.missions.drafts import MissionDrafts
from k1link.missions.registration_runs import RegistrationRuns
from k1link.web.mission_registration_api import build_mission_registration_router
from k1link.web.mission_planner_api import build_mission_planner_router
from k1link.web.simulation_projects_api import build_simulation_projects_router
from k1link.web.simulation_world_provider_api import build_simulation_world_provider_router
from k1link.web.system_telemetry_api import build_system_telemetry_router
@@ -463,6 +470,14 @@ session_recording_materializer = SessionRecordingMaterializer(
exporters=plugin_environment.recording_exporters,
artifact_gateway=session_artifact_gateway,
)
session_overview_service = SessionOverviewService(session_store, plugin_environment.overview_exporters)
mission_drafts = MissionDrafts(session_store.data_dir / 'missions', PlanningSources(
session_store, plugin_environment.planning_exporters, plugin_environment.submap_extractors,
plugin_environment.scene_submap_extractors))
mission_registration_runs = RegistrationRuns(mission_drafts)
from k1link.missions.live_tests import PlanningLiveTests
from k1link.web.planning_live_api import build_planning_live_router
planning_live_tests = PlanningLiveTests(mission_drafts, plugin_environment.live_planning_sources, mission_registration_runs.lock)
session_recorded_media_inspector = RecordedMediaInspector(
session_store.data_dir / "recorded-media-preparations"
)
@@ -956,6 +971,9 @@ async def app_lifespan(application: FastAPI) -> AsyncIterator[None]:
with suppress(asyncio.CancelledError):
await publication_reconciler
await asyncio.to_thread(session_recording_preparation_manager.close)
await asyncio.to_thread(session_overview_service.close)
await asyncio.to_thread(planning_live_tests.close)
await asyncio.to_thread(mission_registration_runs.close)
await asyncio.to_thread(lidar_local_surface_read_service.close)
plugin_environment.close()
@@ -1128,6 +1146,11 @@ if session_artifact_gateway is not None and _ffmpeg is not None:
for legacy_router in plugin_environment.legacy_routers:
app.include_router(legacy_router)
app.include_router(build_session_overview_router(session_overview_service))
app.include_router(build_mission_planner_router(mission_drafts))
app.include_router(build_planning_live_router(planning_live_tests))
app.include_router(build_mission_registration_router(mission_registration_runs, planning_live_tests))
app.include_router(
build_session_router(
session_store,