Chantier 5 — Alertes en onglets + composant partagé + onglet Console Spark dans la barre (Kanbante)
Suites de validation : Projets/fusion-trois-apps#69 (alertes) et #71 (barre console) — leurs états sont INCHANGÉS par cette PR. Aucun merge, aucune publication, aucun bump de version. Composant canonique : Projets/dracodev-commons#3 (ui/alertes/, branche alertes-onglets-5) — les fichiers alertes/barre ci-dessous en sont des vendoring byte-identiques (vérifié par md5). La PR agent-commun #12 n'est pas touchée. Pages /recherche NON touchées (autre chantier) ; dépôt agent-commun NON touché.
tests/draco-alertes.test.js (vendangé, require adapté), tests/test_draco_alertes.py (+1 test chantier 5)
Ce que fait la PR
Barre : 5e onglet « Console Spark » (data-app="agent"), APRÈS Kanbante et en dernier — ordre : ObsiGate, Flowdeck, TikTak, Kanbante, Console Spark. Lien : {{ agent_url }}/ (variable déjà utilisée par le gabarit pour le panneau, contexte app/main.py). L'entrée « Console Spark » du menu de la marque est CONSERVÉE (le JS vendangé exclut l'onglet agent de la construction du menu, sinon doublon). draco-barre.js/draco-barre.css vendangés depuis commons (dont la règle mobile data-current="agent").
Vue Alertes en onglets (module vendangé) : Tout, ObsiGate, Flowdeck, TikTak, Kanbante, Console Spark, Historique, compteurs par onglet. Tout et onglets par application = SEULEMENT les actives ; Historique = SEULEMENT les fermées. Filtre texte (titre + contexte) après le périmètre de l'onglet, sans mélange actifs/historique. Onglet dans l'URL (#alertes=<onglet>, partageable, retour arrière). Navigation clavier (tablist, flèches, Début/Fin, Échap).
Présentation identique partout : application, titre, date, état, lien profond (-dev respecté) ; date décroissante ; « sans date » si absente/illisible ; états « Active » / « Lue » / libellé Kanbante / état réel console. Divergences corrigées : type brut Kanbante (« moved ») supprimé de la méta, structure ObsiGate unifiée, dates illisibles → « sans date », erreurs de section remontées aussi dans Historique (détail : voir commons#3 et ui/alertes/README.md).
Onglet Console Spark des alertes — état honnête
Aucun endpoint d'alertes console publié sur agent-commun main au moment de cette PR (autre chantier en cours) : l'onglet affiche « Aucune alerte console — source indisponible » + lien vers la console, sans inventer d'alerte. Branchement prévu sans URL devinée : window.DRACO_ALERTES_CONSOLE_URL (ou DRACO_BAR_CONFIG.consoleAlertsUrl) vers l'endpoint de l'autre chantier (missions pause budget / accès requis, approbations en attente, états réels).
Agrégation / dépendance CORS
Agrégation à la demande, état d'erreur PAR SECTION (section en échec ≠ page cassée). En attendant le correctif CORS des allowlists (autre chantier), une section inter-origines peut afficher cet état d'erreur — transitoire, jamais présenté comme normal. Aucun changement CORS/CSP dans cette PR (périmètre de l'autre chantier).
Aucune source d'alerte native modifiée (FD/TK/KB/OG inchangées) ; aucune page de recherche modifiée ; aucune pastille sur l'onglet agent (aucun compteur console fiable tant que la source n'est pas publiée).
Suites pytest complètes : non exécutables dans cette sandbox (FastAPI absent) → à lancer par la CI ; les assertions pytest ajoutées ont été vérifiées par simulation sur les fichiers livrés + py_compile OK.
À valider par Bruno après merge/publication
Onglets Alertes (actifs vs Historique, compteurs, filtre, URL partageable + retour arrière, clavier), présentation identique aux autres hôtes, onglet Console Spark en dernier dans ce header (lien -dev sur hôte -dev), onglet Console Spark des alertes en état vide honnête tant que la source console n'est pas publiée.
# Chantier 5 — Alertes en onglets + composant partagé + onglet Console Spark dans la barre (Kanbante)
Suites de validation : Projets/fusion-trois-apps#69 (alertes) et #71 (barre console) — leurs états sont INCHANGÉS par cette PR. Aucun merge, aucune publication, aucun bump de version. Composant canonique : Projets/dracodev-commons#3 (`ui/alertes/`, branche `alertes-onglets-5`) — les fichiers alertes/barre ci-dessous en sont des vendoring byte-identiques (vérifié par md5). La PR agent-commun #12 n'est pas touchée. Pages `/recherche` NON touchées (autre chantier) ; dépôt agent-commun NON touché.
## Fichiers
- `app/templates/_draco_bar.html` (onglet agent)
- `static/js/draco-barre.js`, `static/css/draco-barre.css` (vendangés commons)
- `static/js/draco-alertes.js`, `static/css/draco-alertes.css` (vendangés `ui/alertes/`)
- `tests/draco-alertes.test.js` (vendangé, require adapté), `tests/test_draco_alertes.py` (+1 test chantier 5)
## Ce que fait la PR
- **Barre** : 5e onglet « Console Spark » (`data-app="agent"`), APRÈS Kanbante et en dernier — ordre : ObsiGate, Flowdeck, TikTak, Kanbante, Console Spark. Lien : `{{ agent_url }}/` (variable déjà utilisée par le gabarit pour le panneau, contexte `app/main.py`). L'entrée « Console Spark » du menu de la marque est CONSERVÉE (le JS vendangé exclut l'onglet agent de la construction du menu, sinon doublon). `draco-barre.js`/`draco-barre.css` vendangés depuis commons (dont la règle mobile `data-current="agent"`).
- **Vue Alertes en onglets** (module vendangé) : Tout, ObsiGate, Flowdeck, TikTak, Kanbante, Console Spark, Historique, compteurs par onglet. Tout et onglets par application = SEULEMENT les actives ; Historique = SEULEMENT les fermées. Filtre texte (titre + contexte) après le périmètre de l'onglet, sans mélange actifs/historique. Onglet dans l'URL (`#alertes=<onglet>`, partageable, retour arrière). Navigation clavier (tablist, flèches, Début/Fin, Échap).
- **Présentation identique partout** : application, titre, date, état, lien profond (-dev respecté) ; date décroissante ; « sans date » si absente/illisible ; états « Active » / « Lue » / libellé Kanbante / état réel console. Divergences corrigées : type brut Kanbante (« moved ») supprimé de la méta, structure ObsiGate unifiée, dates illisibles → « sans date », erreurs de section remontées aussi dans Historique (détail : voir commons#3 et `ui/alertes/README.md`).
## Onglet Console Spark des alertes — état honnête
Aucun endpoint d'alertes console publié sur agent-commun `main` au moment de cette PR (autre chantier en cours) : l'onglet affiche « Aucune alerte console — source indisponible » + lien vers la console, sans inventer d'alerte. Branchement prévu sans URL devinée : `window.DRACO_ALERTES_CONSOLE_URL` (ou `DRACO_BAR_CONFIG.consoleAlertsUrl`) vers l'endpoint de l'autre chantier (missions pause budget / accès requis, approbations en attente, états réels).
## Agrégation / dépendance CORS
Agrégation à la demande, état d'erreur PAR SECTION (section en échec ≠ page cassée). En attendant le correctif CORS des allowlists (autre chantier), une section inter-origines peut afficher cet état d'erreur — transitoire, jamais présenté comme normal. Aucun changement CORS/CSP dans cette PR (périmètre de l'autre chantier).
## Tests (chiffres réels, sandbox)
- Node `tests/draco-alertes.test.js` : 14 passés, 0 échoué (idem TikTak).
- pytest : voir « Deltas explicites » (CI).
## Deltas explicites
- Aucune source d'alerte native modifiée (FD/TK/KB/OG inchangées) ; aucune page de recherche modifiée ; aucune pastille sur l'onglet agent (aucun compteur console fiable tant que la source n'est pas publiée).
- Suites pytest complètes : non exécutables dans cette sandbox (FastAPI absent) → à lancer par la CI ; les assertions pytest ajoutées ont été vérifiées par simulation sur les fichiers livrés + `py_compile` OK.
## À valider par Bruno après merge/publication
Onglets Alertes (actifs vs Historique, compteurs, filtre, URL partageable + retour arrière, clavier), présentation identique aux autres hôtes, onglet Console Spark en dernier dans ce header (lien -dev sur hôte -dev), onglet Console Spark des alertes en état vide honnête tant que la source console n'est pas publiée.
Remplacée par la PR #40 (rebase sur main post-#37/#38). Contenu identique à cette PR ; seul conflit (tests/test_draco_alertes.py) résolu en conservant les assertions CORS dev de #37 ET le test chantier 5. Fermeture sans merge, au profit de #40.
Remplacée par la PR #40 (rebase sur main post-#37/#38). Contenu identique à cette PR ; seul conflit (tests/test_draco_alertes.py) résolu en conservant les assertions CORS dev de #37 ET le test chantier 5. Fermeture sans merge, au profit de #40.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Chantier 5 — Alertes en onglets + composant partagé + onglet Console Spark dans la barre (Kanbante)
Suites de validation : Projets/fusion-trois-apps#69 (alertes) et #71 (barre console) — leurs états sont INCHANGÉS par cette PR. Aucun merge, aucune publication, aucun bump de version. Composant canonique : Projets/dracodev-commons#3 (
ui/alertes/, branchealertes-onglets-5) — les fichiers alertes/barre ci-dessous en sont des vendoring byte-identiques (vérifié par md5). La PR agent-commun #12 n'est pas touchée. Pages/rechercheNON touchées (autre chantier) ; dépôt agent-commun NON touché.Fichiers
app/templates/_draco_bar.html(onglet agent)static/js/draco-barre.js,static/css/draco-barre.css(vendangés commons)static/js/draco-alertes.js,static/css/draco-alertes.css(vendangésui/alertes/)tests/draco-alertes.test.js(vendangé, require adapté),tests/test_draco_alertes.py(+1 test chantier 5)Ce que fait la PR
data-app="agent"), APRÈS Kanbante et en dernier — ordre : ObsiGate, Flowdeck, TikTak, Kanbante, Console Spark. Lien :{{ agent_url }}/(variable déjà utilisée par le gabarit pour le panneau, contexteapp/main.py). L'entrée « Console Spark » du menu de la marque est CONSERVÉE (le JS vendangé exclut l'onglet agent de la construction du menu, sinon doublon).draco-barre.js/draco-barre.cssvendangés depuis commons (dont la règle mobiledata-current="agent").#alertes=<onglet>, partageable, retour arrière). Navigation clavier (tablist, flèches, Début/Fin, Échap).ui/alertes/README.md).Onglet Console Spark des alertes — état honnête
Aucun endpoint d'alertes console publié sur agent-commun
mainau moment de cette PR (autre chantier en cours) : l'onglet affiche « Aucune alerte console — source indisponible » + lien vers la console, sans inventer d'alerte. Branchement prévu sans URL devinée :window.DRACO_ALERTES_CONSOLE_URL(ouDRACO_BAR_CONFIG.consoleAlertsUrl) vers l'endpoint de l'autre chantier (missions pause budget / accès requis, approbations en attente, états réels).Agrégation / dépendance CORS
Agrégation à la demande, état d'erreur PAR SECTION (section en échec ≠ page cassée). En attendant le correctif CORS des allowlists (autre chantier), une section inter-origines peut afficher cet état d'erreur — transitoire, jamais présenté comme normal. Aucun changement CORS/CSP dans cette PR (périmètre de l'autre chantier).
Tests (chiffres réels, sandbox)
tests/draco-alertes.test.js: 14 passés, 0 échoué (idem TikTak).Deltas explicites
py_compileOK.À valider par Bruno après merge/publication
Onglets Alertes (actifs vs Historique, compteurs, filtre, URL partageable + retour arrière, clavier), présentation identique aux autres hôtes, onglet Console Spark en dernier dans ce header (lien -dev sur hôte -dev), onglet Console Spark des alertes en état vide honnête tant que la source console n'est pas publiée.
Remplacée par la PR #40 (rebase sur main post-#37/#38). Contenu identique à cette PR ; seul conflit (tests/test_draco_alertes.py) résolu en conservant les assertions CORS dev de #37 ET le test chantier 5. Fermeture sans merge, au profit de #40.
Pull request closed