|
@@ -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
|
|
- 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)
|
|
- 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)
|
|
- [ ] 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)
|
|
- [ ] Export/import config JSON (jobs, destinations, instances)
|
|
|
- [ ] Script backup/restore de l'app pour YNH (SQLite + clés SSH)
|
|
- [ ] Script backup/restore de l'app pour YNH (SQLite + clés SSH)
|
|
|
- [ ] Tests automatisés (pytest)
|
|
- [ ] 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
|
|
## 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*
|