Skip to content

feat(web): ✨ Retrouver la file et reprendre simplement - #178

Merged
robjo82 merged 2 commits into
mainfrom
codex/reprendre-simplement
Oct 23, 2026
Merged

robjo82 merged 2 commits into
mainfrom
codex/reprendre-simplement

Conversation

@robjo82

@robjo82 robjo82 commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Contexte

Fermer ou recharger l’onglet faisait disparaître la préparation locale. Une fenêtre remise en attente ne repartait pas depuis l’audio déjà archivé. La suite doit préserver une interface simple.

Comportement

  • La file, les groupes, l’ordre, le rognage, les champs saisis et les contextes prêts sont sauvegardés dans le navigateur. Ils reviennent dans « À lancer », sans nouvel écran ni réglage.
  • Chaque compte est isolé ; Web Locks évite de reprendre la file d’un onglet encore ouvert. Une réouverture reprend une file fermée. Les copies sont retirées après lancement ou retrait.
  • Un refus de stockage garde le parcours utilisable et affiche une seule ligne. Le rechargement attend la fin des copies locales ; aucune reprise de transcription ne démarre seule.
  • Une transcription incomplète avec audio archivé propose « Reprendre ». Le navigateur renvoie uniquement les fenêtres manquantes depuis l’archive, avec le plan et le contexte existants.
  • Le serveur réserve atomiquement les fenêtres : un double envoi ne remplace ni une partie terminée ni une partie en cours. Un redémarrage de l’instance unique rend les calculs interrompus reprenables.

Simplicité

La liste technique devient « Détails du traitement », repliée. Le choix unique « Transcrire » disparaît pour les audios. Les explications générales et les indications permanentes du dialogue sont raccourcies ; les éditeurs sans transcription sont masqués. Aucun nouveau panneau permanent.

Limites et compatibilité

Aucune migration de base, nouveau service ou modification d’ekonum-ui 3.15.0. La sauvegarde locale dépend du navigateur et de son quota ; elle ne remplace pas les originaux. Elle concerne les préparations effectuées avec cette version. Les données restent sur le navigateur et sont séparées par compte. Le dépôt automatique Odoo est décoché après restauration depuis le disque ; naviguer entre écrans dans le même onglet garde le choix actuel. Le serveur est mono-instance, conformément au Dockerfile existant.

Validation

  • 261 tests serveur et 27 tests client réussis ; compilation réussie.
  • Chrome, vrais composants en StrictMode : assemblage, saisie de participants, rechargement et fermeture/réouverture, contextes réutilisés sans nouvelle recherche, reprise de l’ordre interne avec les originaux restaurés, rognage conservé.
  • Deux onglets actifs ne dupliquent pas la file ; deuxième compte simulé isolé par les tests ; refus IndexedDB vérifié dans le navigateur sans bloquer la préparation.
  • Serveur FastAPI isolé, stockage en mémoire et fournisseur doublé, vrai worker média : « Reprendre » relit l’audio archivé par plages, encode et envoie seulement la fenêtre 1. La fenêtre 0 reste conservée, un seul appel au fournisseur, réunion terminée.
  • Affichage à 375 px sans débordement horizontal.

Préparation restaurée et interface audio simplifiée

Assurance qualité

  • Conventions respectées
  • Tests existants réussis
  • Couverture des nouveaux comportements et cas d’échec
  • Documentation UX et exploitation mise à jour
  • Titre conforme
  • Description complète

Références : suite de #177 ; sauvegarde et reprise demandées par Robin, avec priorité explicite à la simplicité de l’interface.

Livraison vérifiée

  • PR fusionnée sous b039dc8f284ea07bec1a15e8c6a079e674bfb85f ; tous les contrôles de la PR sont verts.
  • Chaîne de production réussie. Version effectivement servie : 0.0.0+b039dc8, SHA complet identique à la fusion. Santé et disponibilité : HTTP 200.
  • Recette sur le runtime livré, dans une file de test séparée des onglets de travail : préparation d’un audio synthétique, saisie des participants, rechargement ; retour dans « À lancer » avec contexte prêt, audio lisible et participants conservés.
  • Réunion de recette 365 créée sans fenêtre envoyée, audio archivé de 121 105 octets : « Reprendre » a terminé la transcription depuis l’archive, un seul appel de transcription et le repère « tournesol » restitué. Aucun dossier Odoo retenu ou publié. Réunion ensuite rangée à la corbeille récupérable.
  • La conservation d’une fenêtre déjà terminée et le renvoi de la seule autre fenêtre ont été vérifiés sur le serveur de recette isolé et par les tests API.
  • Préparation synthétique retirée de la file ; fichiers temporaires retirés du serveur ; leur URL renvoie 404. Les onglets de travail existants ont été préservés.
  • Retour disponible : image précédente conservée hors Docker dans /var/backups/transcript/rollback-c5c5123-20261023.tar.gz, 60 Mo, gzip vérifié, SHA-256 ca80531a244cdb8b77d01a1384b611bfe7526ab67c494eae54c0d22bc3513949.
  • Zéro fenêtre serveur active et zéro finalisation au contrôle avant fusion. Aucune migration de schéma.

@robjo82
robjo82 merged commit b039dc8 into main Oct 23, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant