0.3.15-pre.011

This commit is contained in:
2026-09-16 09:07:31 +02:00
parent e919945d1e
commit a248be04ca
12 changed files with 807 additions and 31 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: crates/ksp-app-raw-transaction-ingest-desk/frontend/main.html -->
<!-- version: 6 -->
<!-- version: 7 -->
<!DOCTYPE html>
<html lang="fr">
@@ -23,6 +23,7 @@
</div>
<div class="d-flex align-items-center gap-2 ms-auto">
<span id="headerProfile" class="badge text-bg-light border text-dark"></span>
<span id="headerStore" class="badge text-bg-secondary">Store idle</span>
<span id="headerPhase" class="badge text-bg-secondary">inventory</span>
</div>
</div>
@@ -53,9 +54,14 @@
<h1 class="h3 mb-1">Routes live</h1>
<p class="text-body-secondary mb-0">Inventaire Config et runtime multi-route avec un Worker indépendant par route et Store partagé same-network.</p>
</div>
<button id="refreshRouteInventory" class="btn btn-outline-primary btn-sm" type="button">
<i class="fa-solid fa-rotate me-2" aria-hidden="true"></i>Refresh
</button>
<div class="d-flex gap-2 flex-wrap">
<button id="refreshRouteMonitoring" class="btn btn-outline-secondary btn-sm" type="button">
<i class="fa-solid fa-wave-square me-2" aria-hidden="true"></i>Resync monitoring
</button>
<button id="refreshRouteInventory" class="btn btn-outline-primary btn-sm" type="button">
<i class="fa-solid fa-rotate me-2" aria-hidden="true"></i>Refresh inventory
</button>
</div>
</div>
<div class="row g-3 align-items-end mb-4">
<div class="col-12 col-md-4">
@@ -81,6 +87,7 @@
<div class="alert alert-info" role="status">
<strong>Configured</strong> signifie que Config prouve la composabilité. Start revalide Config puis lance un Worker indépendant. Les routes du même réseau partagent le Store ; chaque fault reste isolé à sa route.
</div>
<div id="routeCommandFeedback" class="alert alert-info" role="status" aria-live="polite" hidden></div>
<div class="card border-primary-subtle mb-4">
<div class="card-body d-flex align-items-center justify-content-between gap-3 flex-wrap">
<div>
@@ -94,6 +101,89 @@
</div>
<div class="small text-body-secondary mb-3">Réseau affiché : <span id="routeSelectedProfile" class="app-route-code"></span></div>
<div id="routeFoundation" class="row g-3 app-route-grid" aria-live="polite"></div>
<section id="routeMonitoringDetail" class="card shadow-sm mt-4 app-monitoring-detail" aria-live="polite" hidden>
<div class="card-header d-flex align-items-center justify-content-between gap-3 flex-wrap">
<div>
<div class="fw-semibold">Supervision route</div>
<div id="monitorRouteId" class="small text-body-secondary app-route-code"></div>
</div>
<div class="d-flex gap-2 flex-wrap align-items-center">
<span id="monitorLifecycle" class="badge text-bg-secondary"></span>
<span id="monitorHealthBadge" class="badge text-bg-secondary"></span>
<span id="monitorActivityBadge" class="badge text-bg-light border text-dark"></span>
</div>
</div>
<div class="card-body">
<div class="row g-3 mb-3">
<div class="col-6 col-lg-3"><div class="small text-body-secondary">Network</div><div id="monitorNetwork" class="app-route-code fw-semibold"></div></div>
<div class="col-6 col-lg-3"><div class="small text-body-secondary">Commitment</div><div id="monitorCommitment" class="app-route-code fw-semibold"></div></div>
<div class="col-6 col-lg-3"><div class="small text-body-secondary">Sequence</div><div id="monitorSequence" class="app-route-code fw-semibold"></div></div>
<div class="col-6 col-lg-3"><div class="small text-body-secondary">Fault</div><div id="monitorFault" class="app-route-code fw-semibold"></div></div>
</div>
<div class="row g-3">
<div class="col-12 col-xl-6">
<div class="card h-100 border-light-subtle">
<div class="card-header fw-semibold">Pipeline / persistence</div>
<div class="card-body">
<dl class="row mb-0 app-monitoring-list">
<dt class="col-7">Health</dt><dd id="monitorHealth" class="col-5"></dd>
<dt class="col-7">Activity</dt><dd id="monitorActivity" class="col-5"></dd>
<dt class="col-7">Admission queue</dt><dd id="monitorAdmissionQueue" class="col-5"></dd>
<dt class="col-7">Persistence in-flight</dt><dd id="monitorPersistence" class="col-5"></dd>
<dt class="col-7">Admitted</dt><dd id="monitorAdmittedTotal" class="col-5"></dd>
<dt class="col-7">Canonicalized</dt><dd id="monitorCanonicalizedTotal" class="col-5"></dd>
<dt class="col-7">Persisted</dt><dd id="monitorPersistedTotal" class="col-5"></dd>
<dt class="col-7">RAW inserted</dt><dd id="monitorEntityInsertedTotal" class="col-5"></dd>
<dt class="col-7">RAW already present</dt><dd id="monitorEntityAlreadyPresentTotal" class="col-5"></dd>
<dt class="col-7">RAW purged skipped</dt><dd id="monitorEntitySkippedPurgedTotal" class="col-5"></dd>
<dt class="col-7">Observations inserted</dt><dd id="monitorObservationInsertedTotal" class="col-5"></dd>
<dt class="col-7">Observations already present</dt><dd id="monitorObservationAlreadyPresentTotal" class="col-5"></dd>
<dt class="col-7">Content conflicts</dt><dd id="monitorContentConflictTotal" class="col-5"></dd>
<dt class="col-7">Store failures</dt><dd id="monitorStoreFailureTotal" class="col-5"></dd>
<dt class="col-7">Source failures</dt><dd id="monitorSourceFailureTotal" class="col-5"></dd>
<dt class="col-7">Backpressure waits</dt><dd id="monitorBackpressureWaitTotal" class="col-5"></dd>
<dt class="col-7">Hydration pending</dt><dd id="monitorHydrationPending" class="col-5"></dd>
<dt class="col-7">Processing frontier</dt><dd id="monitorProcessingFrontier" class="col-5"></dd>
<dt class="col-7">Oldest pending slot</dt><dd id="monitorOldestPending" class="col-5"></dd>
</dl>
</div>
</div>
</div>
<div class="col-12 col-xl-6">
<div class="card h-100 border-light-subtle">
<div class="card-header fw-semibold">Sources / continuité / repair</div>
<div class="card-body">
<dl class="row mb-0 app-monitoring-list">
<dt class="col-7">Source state</dt><dd id="monitorSourceState" class="col-5"></dd>
<dt class="col-7">Source counts</dt><dd id="monitorSourceCounts" class="col-5"></dd>
<dt class="col-7">Reconnects</dt><dd id="monitorSourceReconnectTotal" class="col-5"></dd>
<dt class="col-7">Replay attempts</dt><dd id="monitorSourceReplayAttemptTotal" class="col-5"></dd>
<dt class="col-7">Continuity gaps source</dt><dd id="monitorSourceContinuityGapTotal" class="col-5"></dd>
<dt class="col-7">Policy observed</dt><dd id="monitorContinuityPolicyObserved" class="col-5"></dd>
<dt class="col-7">Continuity frontier</dt><dd id="monitorContinuityFrontier" class="col-5"></dd>
<dt class="col-7">Open gaps</dt><dd id="monitorContinuityHasOpenGaps" class="col-5"></dd>
<dt class="col-7">Failed losses reconciled</dt><dd id="monitorFailedSourceLossesReconciled" class="col-5"></dd>
<dt class="col-7">Future coverage</dt><dd id="monitorFutureTargetCoverage" class="col-5"></dd>
<dt class="col-7">Open / repairing</dt><dd class="col-5"><span id="monitorOpenGapCount"></span> / <span id="monitorRepairingGapCount"></span></dd>
<dt class="col-7">Repaired / unresolved</dt><dd class="col-5"><span id="monitorRepairedGapTotal"></span> / <span id="monitorUnresolvedGapTotal"></span></dd>
<dt class="col-7">Oldest open gap</dt><dd id="monitorOldestOpenGap" class="col-5"></dd>
<dt class="col-7">Replay repair</dt><dd id="monitorReplayRepairTotal" class="col-5"></dd>
<dt class="col-7">Redundant coverage repair</dt><dd id="monitorRedundantCoverageRepairTotal" class="col-5"></dd>
<dt class="col-7">HTTP scan repair</dt><dd id="monitorHttpScanRepairTotal" class="col-5"></dd>
<dt class="col-7">Block fetch repair</dt><dd id="monitorRepairBlockFetchTotal" class="col-5"></dd>
<dt class="col-7">Transaction hydration repair</dt><dd id="monitorRepairTransactionHydrationTotal" class="col-5"></dd>
</dl>
</div>
</div>
</div>
</div>
<div class="mt-3">
<div class="fw-semibold mb-2">Gaps courants / récents</div>
<div id="monitorGapList" class="list-group app-monitoring-gaps"></div>
</div>
</div>
</section>
</section>
<section data-view-panel="diagnostics" hidden>