Preserve the local graph-first investigation stack through macro V1. Include reviewed source, tests, contracts, documentation and synthetic assets. Retain the standalone financial V21 test foundation without runtime migration. Runtime remains V20; operational JobStore remains V3. Local experimental checkpoint, not a stable release.
97 lines
4.8 KiB
Markdown
97 lines
4.8 KiB
Markdown
# Poste Web local — guide d’utilisation
|
||
|
||
> **Statut CURRENT local :** poste utilisable sur une enquête `SPECIMEN`, au-dessus
|
||
> des services C et du JobStore V3 existants. Il ne constitue pas une autorisation
|
||
> d’ouvrir une enquête réelle ni un service distant.
|
||
|
||
## Organisation
|
||
|
||
Le graphe reste la surface principale. La barre haute porte l’identité de
|
||
l’enquête, le statut local et la recherche. La rangée suivante change de
|
||
projection (`Réseau`, `Preuves`, `Chronologie`, `Infrastructure locale`) sans
|
||
créer une seconde vérité métier.
|
||
|
||
L’inspecteur droit sépare `Détails`, `Actions` et `Provenance`. Les détails
|
||
exposent d’abord le libellé et l’état, puis les identifiants et valeurs
|
||
persistées. Les actions sont celles du registre de capabilities du cœur : leur
|
||
motif, leur contact réseau et leur disponibilité ne sont pas recodés dans le
|
||
frontend.
|
||
|
||
Le tiroir inférieur sépare les tâches, les prochaines actions, les plans et les
|
||
rapports. Il peut être réduit pour rendre de l’espace au graphe. Les jobs et les
|
||
plans sont relus depuis le JobStore ; un rafraîchissement ne les relance pas. Le
|
||
brouillon du rapport (sélection, sections, titre et commentaire) est conservé
|
||
dans la session du navigateur lors d’une actualisation. Sa clé comprend le
|
||
contrat de session, l’origine locale et l’identifiant d’enquête : il n’est pas
|
||
repris automatiquement dans une autre enquête.
|
||
|
||
## Réseau alimenté et classification
|
||
|
||
La famille visuelle dépend de `object_kind`, jamais du seul sous-type : entité
|
||
en cercle, preuve en rectangle, extraction en losange et observation en
|
||
capsule. Les snapshots historiques sans `object_kind` passent par un fallback
|
||
explicite sur `EVIDENCE`, `SOURCE`, `EXTRACTION` et `OBSERVATION`.
|
||
|
||
Le placement est un état de présentation déterministe par étages preuve →
|
||
extraction → observation → entité, découpés en colonnes bornées. Il ne crée,
|
||
ne fusionne et ne retire aucun objet ou lien. Au niveau global, les libellés
|
||
sont réduits pour laisser lire les directions ; sélection, voisins, recherche,
|
||
liste et clavier donnent accès au détail. Les positions déjà affichées et
|
||
épinglées sont conservées à l’arrivée de résultats. `Réinitialiser` recalcule
|
||
et ajuste explicitement la disposition complète.
|
||
|
||
## Parcours clavier et contextuel
|
||
|
||
- flèches dans le graphe : parcourir les objets ;
|
||
- `Entrée` : sélectionner l’objet courant ;
|
||
- `Menu` ou `Maj+F10` : ouvrir les actions près de l’objet ;
|
||
- `Échap` : fermer ce menu et rendre le focus au graphe ;
|
||
- onglet `Actions` : alternative visible au clic droit ;
|
||
- `Retour` : restaurer le contexte précédent après un focus de voisinage.
|
||
|
||
Le menu est borné au viewport. Les formes distinguent entités et preuves ; les
|
||
styles de traits distinguent provenance, appui et contradiction. La couleur
|
||
n’est jamais le seul porteur de sens.
|
||
|
||
`Réseau` quitte une projection spécialisée, efface filtres et focus et revient
|
||
à la vue globale. `Retour` restaure sélection, projection, filtres, focus, zoom
|
||
et déplacement. Une origine ouverte depuis `Provenance` crée également un
|
||
retour vers l’objet de départ.
|
||
|
||
## Rapport hors ligne
|
||
|
||
Depuis `Rapports`, sélectionner explicitement les objets, les sections et le
|
||
commentaire humain, puis prévisualiser la coupe révisionnée. La génération
|
||
produit cinq téléchargements authentifiés : `report.html`, `report.json`,
|
||
`report.pdf`, `manifest.json` et `NOTICE.txt`. Le HTML reçu s’ouvre hors ligne,
|
||
sans script ni ressource distante. Le manifeste permet de vérifier taille et
|
||
SHA-256 des quatre fichiers de contenu avec :
|
||
|
||
```bash
|
||
python3 prototypes/web-graph/report_bundle.py verify /chemin/vers/<report_id>
|
||
```
|
||
|
||
Toute modification du titre, du commentaire, des sections ou de la sélection
|
||
invalide immédiatement l’aperçu. `Générer` reste désactivé jusqu’à une nouvelle
|
||
coupe C et une réponse devenue périmée pendant la saisie est ignorée.
|
||
|
||
Une date avec fuseau à la minute reste positionnable et conserve sa précision
|
||
(`2026-09-26T12:05Z`, `2026-09-26T14:05+02:00`). Le rapport matérialise le début
|
||
de cette minute pour l’instant normalisé, sans prétendre connaître les secondes.
|
||
Une date sans fuseau ou invalide reste non positionnable.
|
||
|
||
## Lancement et limites
|
||
|
||
Créer exclusivement une fixture synthétique dans un répertoire temporaire :
|
||
|
||
```bash
|
||
make -j8 tools/local-jobs
|
||
tmp_workspace=$(mktemp -d /tmp/labfy-workbench-specimen-XXXXXX)
|
||
tools/local-jobs init-j7-specimen --workspace "$tmp_workspace"
|
||
make web-workspace-j9 WORKSPACE="$tmp_workspace"
|
||
```
|
||
|
||
L’écoute reste loopback, la session est authentifiée et les mutations exigent
|
||
le jeton CSRF. Le poste n’expose pas le répertoire des preuves et n’installe
|
||
aucun outil. Les projections vides, erreurs, annulations et limites sont des
|
||
états explicites ; elles ne prouvent jamais une absence d’information.
|