Recherche : onglets visibles apres deploiement (base console explicite + purge cache SW) #38

Merged
bruno merged 4 commits from flowdeck-recherche-onglets into main 2026-10-28 16:17:02 -04:00
Owner

Defaut 6 (Flowdeck).

Audit (main 7.84.4, tag v7.84.4 = 984e92b) — resultat contre-intuitif, verifie et non suppose : la route (app/routers/search.py:51), le gabarit (app/templates/recherche.html), le JS (static/js/recherche.js) et le CSS (static/css/recherche.css) contenaient DEJA la page a onglets des PR #33/#36. Verifications negatives : aucune route fantome (seul search.py definit /recherche ; agent.py /{agent_id} est sous prefixe /api/agent, notes.py sous /notes), bloc scripts present dans base.html:869, CSP script-src 'self' n'empechant pas le script externe, gabarit pre-#33 = exactement la page decrite par Bruno (sections, resultats Flowdeck, zero onglet) — donc la page deployee observee correspond a l'ancien comportement, pas a un autre gabarit de main.

Causes reelles corrigees ici :

  1. Cache service worker : static/sw.js servait recherche.js/recherche.css en CACHE-FIRST sans aucune version (?v= absent dans recherche.html) sous un CACHE_NAME inchange depuis A20 ('flowdeck-v8'). Un navigateur ayant visite Flowdeck avant #33 gardait le recherche.js pre-#33 (514 lignes : sans onglets, sans compteurs, sans logique console, « Tout voir » naviguant ailleurs) et le CSS pre-#33 (sans .rp-tabs) — onglets inertes/non styles, page paraissant « non corrigee » malgre 7.84.3/7.84.4 (le repli networkFirst du HTML vers le cache couvre aussi le cas reseau lent). Correctif : liens versionnes ?v={{ asset_version }} (comme tous les autres assets de base.html) + CACHE_NAME flowdeck-v8 -> flowdeck-v9 (purge a l'activation du nouveau worker ; les futures evolutions deviennent de nouvelles cles de cache).
  2. Base console implicite : Flowdeck etait le seul hote sans data-base-console (son propre commentaire l'admettait). Correctif : la route expose bases.agent (draco_urls.toutes() le contient deja) et le gabarit rend data-base-console="{{ bases.agent }}" ; recherche.js garde ses replis (derivation -dev, href d'onglet de barre) si l'attribut est vide.

Inchange et preserve : page Flowdeck propre — normalize() Flowdeck (pages + collections, liens /pages/ et /db/) et GET /api/search intouches ; onglets Tout, ObsiGate, Flowdeck, TikTak, Kanbante, Console Spark ; focus automatique (focus() explicite + rappels) ; « Tout voir » restant sur place (bascule d'onglet) ; compteurs = totaux ; etats chargement/erreur par application ; liens profonds -dev (resolveBases) ; onglet Console Spark sur GET /api/v1/recherche, limite 20 (alignement #36, deja dans recherche.js).

Tests (chiffres reels, sandbox) : node tests/recherche.test.js = 75 assertions OK (onglets, compteurs, liens Flowdeck -dev, console /api/v1/recherche) ; node --check recherche.js et sw.js OK ; python3 -m py_compile app/routers/search.py OK ; nouveau tests/test_recherche_onglets.py (stdlib seul) = 6/6 OK (ordre des 6 onglets, 5 sections, data-base-console, liens versionnes, route expose agent, CACHE_NAME v9, chemin console v1). Non executable en sandbox : suite pytest complete (pas de fastapi/pytest ici) — a lancer en CI. Aucun test deploie ni capture affirme : la validation deployee (onglets apres redeploiement + mise a jour du SW) reste a faire par Bruno.

Regles du programme : branche + PR uniquement, sans merge, sans publication, sans bump de version, sans changement d'etat d'issue.

Defaut 6 (Flowdeck). Audit (main 7.84.4, tag v7.84.4 = 984e92b) — resultat contre-intuitif, verifie et non suppose : la route (app/routers/search.py:51), le gabarit (app/templates/recherche.html), le JS (static/js/recherche.js) et le CSS (static/css/recherche.css) contenaient DEJA la page a onglets des PR #33/#36. Verifications negatives : aucune route fantome (seul search.py definit /recherche ; agent.py /{agent_id} est sous prefixe /api/agent, notes.py sous /notes), bloc scripts present dans base.html:869, CSP script-src 'self' n'empechant pas le script externe, gabarit pre-#33 = exactement la page decrite par Bruno (sections, resultats Flowdeck, zero onglet) — donc la page deployee observee correspond a l'ancien comportement, pas a un autre gabarit de main. Causes reelles corrigees ici : 1. Cache service worker : static/sw.js servait recherche.js/recherche.css en CACHE-FIRST sans aucune version (?v= absent dans recherche.html) sous un CACHE_NAME inchange depuis A20 ('flowdeck-v8'). Un navigateur ayant visite Flowdeck avant #33 gardait le recherche.js pre-#33 (514 lignes : sans onglets, sans compteurs, sans logique console, « Tout voir » naviguant ailleurs) et le CSS pre-#33 (sans .rp-tabs) — onglets inertes/non styles, page paraissant « non corrigee » malgre 7.84.3/7.84.4 (le repli networkFirst du HTML vers le cache couvre aussi le cas reseau lent). Correctif : liens versionnes ?v={{ asset_version }} (comme tous les autres assets de base.html) + CACHE_NAME flowdeck-v8 -> flowdeck-v9 (purge a l'activation du nouveau worker ; les futures evolutions deviennent de nouvelles cles de cache). 2. Base console implicite : Flowdeck etait le seul hote sans data-base-console (son propre commentaire l'admettait). Correctif : la route expose bases.agent (draco_urls.toutes() le contient deja) et le gabarit rend data-base-console="{{ bases.agent }}" ; recherche.js garde ses replis (derivation -dev, href d'onglet de barre) si l'attribut est vide. Inchange et preserve : page Flowdeck propre — normalize() Flowdeck (pages + collections, liens /pages/<id> et /db/<id>) et GET /api/search intouches ; onglets Tout, ObsiGate, Flowdeck, TikTak, Kanbante, Console Spark ; focus automatique (focus() explicite + rappels) ; « Tout voir » restant sur place (bascule d'onglet) ; compteurs = totaux ; etats chargement/erreur par application ; liens profonds -dev (resolveBases) ; onglet Console Spark sur GET /api/v1/recherche, limite 20 (alignement #36, deja dans recherche.js). Tests (chiffres reels, sandbox) : node tests/recherche.test.js = 75 assertions OK (onglets, compteurs, liens Flowdeck -dev, console /api/v1/recherche) ; node --check recherche.js et sw.js OK ; python3 -m py_compile app/routers/search.py OK ; nouveau tests/test_recherche_onglets.py (stdlib seul) = 6/6 OK (ordre des 6 onglets, 5 sections, data-base-console, liens versionnes, route expose agent, CACHE_NAME v9, chemin console v1). Non executable en sandbox : suite pytest complete (pas de fastapi/pytest ici) — a lancer en CI. Aucun test deploie ni capture affirme : la validation deployee (onglets apres redeploiement + mise a jour du SW) reste a faire par Bruno. Regles du programme : branche + PR uniquement, sans merge, sans publication, sans bump de version, sans changement d'etat d'issue.
bruno added 4 commits 2026-10-28 16:01:44 -04:00
Recherche onglets (defaut 6) : app/templates/recherche.html
FlowDeck CI / test (push) Failing after 1s
FlowDeck CI / docker (push) Skipped
FlowDeck CI / lint (push) Failing after 1m51s
9ae054d1ba
Recherche onglets (defaut 6) : app/routers/search.py
FlowDeck CI / lint (push) Failing after 2s
FlowDeck CI / test (push) Failing after 1s
FlowDeck CI / docker (push) Skipped
c0bf0e8523
Recherche onglets (defaut 6) : static/sw.js
FlowDeck CI / test (push) Failing after 0s
FlowDeck CI / docker (push) Skipped
FlowDeck CI / lint (push) Failing after 1m52s
71c7113a8c
Recherche onglets (defaut 6) : tests/test_recherche_onglets.py
FlowDeck CI / lint (push) Failing after 1s
FlowDeck CI / test (push) Failing after 2s
FlowDeck CI / docker (push) Skipped
FlowDeck CI / lint (pull_request) Failing after 2s
FlowDeck CI / test (pull_request) Failing after 18m37s
FlowDeck CI / docker (pull_request) Skipped
ee065978b2
bruno merged commit 3b43be3761 into main 2026-10-28 16:17:02 -04:00
Sign in to join this conversation.