Ver Fonte

docs: CDC v4.5 — Phase 3bis (refactoring), Phase 4 (UI) complètes, Phase 5

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cédric Hansen há 1 mês atrás
pai
commit
0d25cfcc72
1 ficheiros alterados com 40 adições e 29 exclusões
  1. 40 29
      doc/CDC_backupmanager_ynh.md

+ 40 - 29
doc/CDC_backupmanager_ynh.md

@@ -412,9 +412,33 @@ rsync -az -e "ssh -i $key -p $port" archive.tar archive.info.json user@host:/hom
 - Pull : récupère archive_name via get_job_runs() pour toujours avoir la dernière version
 - Runs bloqués "en cours" nettoyés toutes les heures par APScheduler (> 6h → error)
 
-### Phase 4 — Finitions
+### Phase 3 bis — Refactoring & corrections ✅ (2026-05-10)
+- [x] Découpage app.py (1142 lignes) → 5 blueprints Flask + helpers.py
+  - `blueprints/jobs.py` — Blueprint("jobs") : dashboard, CRUD, restauration, archives
+  - `blueprints/destinations.py` — Blueprint("dest")
+  - `blueprints/network.py` — Blueprint("network") : fédération, push/pull
+  - `blueprints/settings.py` — Blueprint("cfg")
+  - `blueprints/api.py` — Blueprint("api", url_prefix="/api/v1") + auth before_request
+- [x] Fix : `sudo cat` non autorisé dans sudoers → remplacé par `sudo rsync → open → sudo rm`
+- [x] Fix : .info.json non rapatrié (500 sur `os.unlink` root-owned) → `finally` avec `sudo rm -rf`
+- [x] Tous les templates mis à jour (`url_for('blueprint.fonction')`)
+
+**Notes techniques :**
+- Threads background : `app = current_app._get_current_object()` avant le thread, `with app.app_context()` dans le thread
+- API auth scoped au blueprint via `@bp.before_request` (pas de filtre global)
+
+### Phase 4 — Refonte UI ✅ (2026-05-10)
+- [x] Navigateur d'archives `/archives` — tableau filtrable (nom/type/statut), actions Restaurer · Pousser · Télécharger · Supprimer ; listing via `sudo_listdir`
+- [x] Barre d'activité sticky — bandeau sous le header, polling `/api/v1/running` toutes les 5 s, disparaît si idle ; rechargement auto au terme d'un job
+- [x] Endpoint `GET /api/v1/running` — retourne les runs locaux en status=running
+- [x] Boutons unifiés — 4 classes CSS (`btn-primary/secondary/ghost/danger`) en cartouche `rounded-full` avec couleurs distinctes ; balise `<style type="text/tailwindcss">` (CDN)
+- [x] Navigation simplifiée — 3 liens : Dashboard · Archives · Paramètres
+- [x] Dashboard home — colonne "Transfert" (destination rsync ou Local), "Prochaine exéc." supprimée ; section "Serveurs fédérés" en dessous avec jobs distants + Lancer + Rapatrier
+- [x] Paramètres multi-onglets — Destinations (1er) · Instances · Configuration ; bouton contextuel selon onglet actif
+- [x] Icône application — favicon + logo navbar + `doc/LOGO.png` pour le webadmin YunoHost
+
+### Phase 5 — Finitions
 - [ ] Rétention GFS (daily N / weekly N / monthly N)
-- [ ] Navigateur d'archives (liste paginée + taille + restore + push + delete) — voir §14
 - [ ] Export/import config JSON (jobs, destinations, instances)
 - [ ] Script backup/restore de l'app pour YNH (SQLite + clés SSH)
 - [ ] Tests automatisés (pytest)
@@ -423,33 +447,20 @@ rsync -az -e "ssh -i $key -p $port" archive.tar archive.info.json user@host:/hom
 
 ## 14. Feuille de route UI
 
-Propositions classées par priorité (décidé 2026-05-10).
-
-### A — Navigateur d'archives *(priorité haute)*
-Page `/archives` manquante : le dashboard n'affiche que le dernier run par job, aucune vue exhaustive des archives sur disque.
-- Tableau paginé : nom, type, date, taille, statut dernier run
-- Filtres : par job, par type, par statut
-- Actions par ligne : Restaurer · Pousser vers instance · Télécharger · Supprimer
-- Colonne taille totale par job en pied de tableau
-
-### B — Indicateur de progression pour runs en cours *(priorité moyenne)*
-Le badge `⟳ en cours` pulse mais rien de plus.
-- Polling AJAX léger sur `/api/v1/jobs/<id>/runs` toutes les 5 s
-- Rafraîchissement du statut + taille sans rechargement de page
-- Lien cliquable vers le log en temps réel depuis le dashboard
-
-### C — Navigation revue *(priorité faible)*
-5 liens plats dans la navbar → regrouper :
-- "Réseau" + "Instances" → menu déroulant **Fédération**
-- Ajouter "Archives" comme entrée de premier niveau
-- Indicateur rouge sur "Dashboard" si au moins une erreur récente
-
-### D — Activité récente sur la page d'accueil *(priorité faible)*
-Sous le tableau des jobs, section "Activité récente" :
-- 10 derniers runs toutes sources confondues
-- Colonnes : date · job · statut · taille · durée
-- Chaque ligne cliquable → historique du job
+*Réalisé le 2026-05-10 — toutes les propositions initiales implémentées (avec adaptations).*
+
+### A — Navigateur d'archives ✅
+Page `/archives` avec tableau filtrable (nom, type, statut), listing via `sudo_listdir`, actions par ligne : Restaurer · Pousser (dropdown instances) · Télécharger · Supprimer.
+
+### B — Barre d'activité globale ✅
+Bandeau sticky sous le header, toujours visible pendant la navigation. Polling `/api/v1/running` toutes les 5 s. Affiche chaque activité : type · nom · durée. Rechargement automatique de la page au terme d'un job pour mettre à jour les statuts.
+
+### C — Navigation revue ✅
+Navbar réduite à 3 liens : **Dashboard** · **Archives** · **Paramètres**. Les instances distantes sont dans `Paramètres > Instances`. Le dashboard home intègre directement les serveurs fédérés.
+
+### D — Serveurs fédérés sur la page d'accueil ✅
+Section "Serveurs fédérés" sous le tableau des jobs locaux : statut, liste des jobs distants avec statut/taille, boutons Lancer et Rapatrier. Bouton "Synchroniser tout" en en-tête.
 
 ---
 
-*backupmanager_ynh — CDC v4.3 — Avancement mis à jour le 2026-05-10 | Phase 1 ✅ | Phase 2 ✅ | Phase 3 ✅ | Phase 4 en cours*
+*backupmanager_ynh — CDC v4.5 — Avancement mis à jour le 2026-05-10 | Phase 1 ✅ | Phase 2 ✅ | Phase 3 ✅ | Phase 3bis ✅ | Phase 4 ✅ | Phase 5 en cours*