fix(polygon): unify dataset review workflow

This commit is contained in:
DCCONSTRUCTIONS
2026-07-25 19:54:22 +03:00
parent e97573e221
commit 13c35ff446
15 changed files with 568 additions and 509 deletions
+4 -3
View File
@@ -191,9 +191,10 @@ The archival surface consumes the same append-only run repository through
does not create, chmod or mutate the configured repository and rejects every
write transition. When `/api/v1/polygon/worker` returns an admitted available
worker, the Control Station adds `Полигон` as a seventh header root. One header
click opens the direct `polygon-run` workspace without a System launcher panel.
The old `?workspace=polygon-run[&run=<id>]` URL remains a compatible deep-link
for review and exact-run selection, not the primary operator navigation.
click opens the single `polygon-datasets` workspace without a System launcher
panel. The old `?workspace=polygon-run[&run=<id>]` URL remains a compatibility
redirect into the dataset workspace; there is no separate Runs item in the
operator navigation.
Browser QA loaded the accepted archive and the S1C live worker, rotated and
zoomed the 3D rover, observed live run/provider status, Gazebo sim time and
ENU/FLU pose, then completed a clean stop. Start/stop stays behind the backend
+34 -29
View File
@@ -79,9 +79,9 @@ Polygon is now a parallel product branch. As of this document:
lifecycle gate;
- UI-2 exact generation `60e7916` established `Полигон` as a dedicated header
root only while Mission Core confirms an available Simulation Worker. The
current product surface keeps that direct entry and exposes a bounded
two-item navigation: `Прогоны` and `Датасеты`; it has no launcher or link
directory;
current product surface keeps that direct entry. The operator navigation has
one implemented item, `Датасеты`; immutable run evidence remains an internal
backend contract rather than a second page;
- the browser-native Three.js scene renders a recognisable procedural Ackermann
Rover, ground grid and ENU trajectory. Orbit supports 360° azimuth, bounded
vertical inspection from overhead to horizon, zoom, pan, follow and camera
@@ -845,46 +845,50 @@ The product surface and execution capability are intentionally distinct.
capability gates only live lifecycle and command actions, which fail closed and
show an explicit offline state.
The Polygon navigation is task-oriented:
The Polygon navigation is task-oriented and currently has one operator
surface:
- `Прогоны` owns selectable recorded simulation/dataset-replay/shadow history,
aggregate outcomes, provenance and decisions;
- `Датасеты` owns admitted replay inputs, their real source structure and
operator inspection of source scans. A selected run may be overlaid on the
source, but the source does not move into the run archive.
- `Датасеты` owns admitted replay inputs, their real source structure,
operator inspection of source scans and analysis scoped to the selected
dataset fragment;
- immutable run identity, aggregate qualification, provenance and artifacts
remain available to backend evidence consumers but do not create a separate
operator page.
Dataset bytes and source artifacts remain in Data storage, but algorithm
evaluation does not live under `Данные`. Device-specific scanner diagnostics
remain under Fleet. A dataset preview is not a qualification result; the
result is a versioned run with pipeline, sensor profile, metrics, provenance
and decision.
remain under Fleet. The operator sees metrics in the context of the exact
fragment being inspected; global gates, provider pins and artifact identities
are not mixed into that workflow.
Live simulation is a different operator task. A rover scene, worker health and
start/control actions must not be mounted above an archived dataset replay.
They require a separate live surface that appears only when the Simulation
Worker capability is available. The current `Прогоны` implementation is
read-only and remains fully usable while that worker is offline.
They require a separate future live surface that appears only when the
Simulation Worker capability is available.
### UI-0 — read-only run history and dataset inspection
### UI-0 — read-only dataset evidence inspection
Target S1B proves persisted start/health/stop history. The first direct
developer-oriented view exposed lifecycle, events, provider pins and artifact
hashes on the main screen. Operator review rejected that composition and then
rejected treating the GOOSE validation split as a single recording. The
current UI-0 follows two separate operator tasks:
hashes on the main screen. Operator review rejected that composition, rejected
treating the GOOSE validation split as a single recording and rejected a
separate aggregate Runs page. The current UI-0 is one coherent dataset
workflow:
- `Прогоны` always shows a run selector, even when the archive currently has
only one item. The selected run exposes its kind (`simulation`,
`dataset-replay` or `shadow`), input identity, aggregate result and collapsed
technical evidence.
- `Датасеты → Открыть источник` shows the admitted source. GOOSE validation is
explicitly grouped into eight independent sequences; Play is bounded to one
sequence and described as accelerated review of sparse annotated scans.
- `Датасеты → Открыть датасет` shows the admitted source. GOOSE validation is
explicitly grouped into eight independent fragments; Play is bounded to one
fragment and described as accelerated review of sparse annotated scans.
- The dataset viewer exposes source frame number, nanosecond timestamp gaps,
ground truth and optional Current/Patchwork++ overlays from a selected run.
ground truth and Current/Patchwork++ overlays.
- The fixed sensor-centric coordinate frame and operator camera are preserved
within a sequence. Missing scans, ego trajectory and cross-sequence motion
within a fragment. Missing scans, ego trajectory and cross-fragment motion
are never synthesized.
- Below the viewer, metrics are calculated only across the selected fragment:
mean Ground IoU, natural-ground recall, obstacle preservation, improved and
regressed frame counts, weakest Patchwork++ frame, strongest regression and
largest capture gap. Every risk item opens its exact source frame.
- Global acceptance gates, run IDs, event journals, provider pins and artifact
lists are not part of the operator screen.
The accepted `3.3 GB` annotated validation ZIP is not a continuous recording.
Continuous ego-motion requires a separately admitted raw ROS bag and
@@ -907,7 +911,8 @@ fails closed. The review index exposes no paths or digests. A selected frame is
verified against the content-bound review manifest before its bounded point
preview is decoded. Responses never contain the configured root, raw dataset
bytes or command payloads. `?workspace=polygon-run[&run=<run-id>]` remains a
compatible deep-link into the same product workspace.
compatibility redirect into `polygon-datasets`; it does not restore a separate
Runs page.
UI-0 itself has no PX4 transport or lifecycle/command operations. It remains a
read-only evidence contract backed by the server-owned run repository and is
+9 -9
View File
@@ -65,18 +65,18 @@ The gateway is not part of device quality diagnostics.
dataset frames into the selected device evidence.
- **Наблюдение** opens a concrete live or recorded spatial scene.
- **Данные** owns source-of-record, retention, replay preparation and export.
- **Полигон → Датасеты** lists admitted evaluation inputs and owns source
inspection: source sequences, sparse annotated scans and optional overlays
from a selected qualification run.
- **Полигон → Прогоны** owns the resulting algorithm comparison, metrics,
provenance and decision. It does not present the dataset itself as a
simulation or continuous vehicle recording.
- **Полигон → Датасеты** is the single operator surface for admitted evaluation
inputs. Opening one dataset exposes its source fragments, sparse annotated
scans, visual overlays and useful analysis calculated only for the selected
fragment.
- Internal replay-run identity, provenance and immutable artifacts remain a
backend evidence contract. They are not a second operator navigation item
and are not presented as vehicle motion.
Before real dataset bytes exist, the catalog explains the blocked storage gate
and keeps `Открыть` / `Создать прогон` disabled. `Открыть` becomes available
and keeps `Открыть датасет` disabled. It becomes available
only after the worker manifest says `frame-ready` and the bounded preview passes
its own point-alignment and safety checks. `Создать прогон` remains disabled
until an executable comparison profile exists.
its own point-alignment and safety checks.
## Why public recordings look different
+4 -3
View File
@@ -124,9 +124,10 @@ http://127.0.0.1:8765/
```
After Mission Core confirms the worker, `Полигон` must appear in the header and
open the live workspace directly. The
`?workspace=polygon-run[&run=<qualification-run-id>]` URL remains a compatible
deep-link. The live panel must show `Worker готов`. Start/stop calls require an
open the implemented Polygon workspace directly. The legacy
`?workspace=polygon-run[&run=<qualification-run-id>]` URL redirects to
`polygon-datasets`; it is not a separate operator surface. The live panel must
show `Worker готов`. Start/stop calls require an
`Idempotency-Key`; the React client generates one per operator intent. Removing
the `internal-virtual-only` environment gate must leave status visible while
disabling lifecycle actions.