dd-timer/docs/fonctionnalites-par-ecran.md
POL Mickaël 3e485fd09b chore: normalise fins de ligne CRLF → LF dans tout le repo
Applique .gitattributes sur tous les fichiers existants.
Élimine les différences fantômes entre WSL et Windows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 08:55:10 +02:00

336 lines
10 KiB
Markdown
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Fonctionnalités par écran — Obsidienne
---
## 1. Shell principal (App)
### Header
- Bouton hamburger (☰) pour ouvrir/fermer la sidebar
- Logo "⚔ MINUTEUR DRAGODINDE"
- Sous-titre "Dofus 3 · Gestion multi-enclos en temps réel · vX.X.X"
- Version injectée dynamiquement via Electron API
- Badge "DEV" en mode développement
### Barre d'onglets
- Onglet Dashboard (📊)
- Un onglet par enclos :
- Icône 🐉 + nom de l'enclos
- Dot animé : vert pulsant si timer en cours, gris si inactif
- Bouton supprimer (✕), visible si plus d'1 enclos
- Drag-and-drop pour réordonner les onglets
- Bouton "+ Enclos" (désactivé si max atteint)
### Bannière de mise à jour
- États : disponible → téléchargement (barre de progression %) → prête → erreur
- Bouton "Installer et redémarrer"
- Bouton fermer (✕) sur erreur
### Zoom clavier
- Ctrl + (+) : zoom avant
- Ctrl + (-) : zoom arrière
- Ctrl + 0 : reset 100%
---
## 2. Sidebar — Navigation latérale
- **Dashboard** (📊)
- **Section "Enclos"** : liste dynamique de chaque enclos
- Icône 🐉 + nom + dot coloré (vert=running, gris=idle)
- **Section "Outils"** :
- Accouplement (💑)
- Réappro (🧬)
- Inventaire (📦)
- Workflows (📋)
- **Paramètres** (⚙)
- Indicateur visuel de la vue active
- Fermeture auto au clic sur l'overlay
---
## 3. Dashboard — Vue d'ensemble
### Cartes des enclos
Pour chaque enclos :
- Nom de l'enclos
- Dot animé + statut textuel ("En cours" / "Pause" / "Inactif")
- Liste des jauges actives (badges colorés avec icônes)
- Nombre de dragodindes + terminées (ex: "5 DD · 3/5 ✅")
- Temps restant (countdown live) ou "✅ Terminé !"
- Temps écoulé (live)
- Bouton "→ Gérer cet enclos" (navigation)
### Statistiques globales
- **KPI** :
- Bébés au total
- Dragodindes actives
- Couples accouplés
- Taux de réussite (%)
- Races obtenues
- **Histogramme des races** : barres horizontales triées par quantité, colorées par race
- **Bouton "Réinitialiser"** : efface stats et accouplements
### Temps réel
- Countdowns et temps écoulés mis à jour en continu
- Dots animés sur les enclos en cours
---
## 4. Enclos — Vue timer principale
### En-tête
- **Nom de l'enclos** : input éditable (focus vide, blur sauvegarde, Escape annule, Enter valide)
- **Bouton "🗑 Vider l'enclos"** : supprime toutes les DD et reset
### Carte Jauges (max 2 actives)
- **6 boutons toggle** : Baffeur (), Caresseur (), Foudroyeur (⚡), Abreuvoir (💧), Dragofesse (❤), Mangeoire (🍖)
- État actif : bordure colorée
- Verrouillé si timer en cours
- **Exclusion mutuelle** baffeur ↔ caresseur (l'un bloque l'autre)
- **Par jauge active** :
- Icône + nom + badge Tier ("Tier X · ±Y/tick")
- Input niveau (0100 000, step 1000)
- Avant timer : modifie le niveau
- Pendant timer : recharge la jauge (style visuel distinct)
- Barre de progression (% de remplissage)
- Info : "Jauge : {niveau} · Vide en {durée}"
### Barre timer
- **Bouton** : "▶ Démarrer" / "⏸ Pause" / "▶ Reprendre"
- **Temps écoulé** (gauche) : HH:MM:SS live
- **Alarme dans** (droite) : countdown global ou "✅" ou "--:--:--"
### Bannière de fin
- "✅ Session terminée !" (visible quand toutes les cibles atteintes)
- Bouton "🔄 Nouvelle fournée" (reset timer, conserve les niveaux de jauges)
### Section Dragodindes
- Compteur "X/10"
- Bouton " Ajouter une Dragodinde" (désactivé si 10 atteint)
- Grille de cartes DD (drag-and-drop pour réordonner)
---
## 5. Carte Dragodinde (sous-composant d'Enclos)
### En-tête
- Poignée de drag (⠿)
- Nom éditable (même comportement focus/blur)
- Bouton supprimer (✕)
### Pilules de stats (5)
| Stat | Icône | Plage | Couleur |
|------|-------|-------|---------|
| Sérénité | 😊 | -5000 à +5000 | Violet |
| Endurance | ⚡ | 0 à 20 000 | Jaune |
| Maturité | 💧 | 0 à 20 000 | Cyan |
| Amour | ❤️ | 0 à 20 000 | Rouge |
| XP (niveau) | ⭐ | 1 à 200 | Orange |
- Input éditable par pilule (focus/blur)
- Mise à jour live pendant le timer
- Effet lumineux (glow) quand la stat atteint un cap
- Animation delta (+X / -X) qui pop à chaque tick de 10s
### Cible sérénité (😊)
- Input numérique (bornes selon jauge active : négatif si baffeur, positif si caresseur)
- Bouton effacer (✕)
- ETA affiché : "~Xm XXs" ou "✅" ou "/" (si jauge nécessaire non active)
- Placeholder dynamique ("-5000 à 0" ou "0 à 5000")
### Cible niveau (⭐)
- Input numérique (1200)
- Bouton effacer (✕)
- ETA affiché
### Blocs jauges actives
**Pour chaque jauge active :**
**Mangeoire (XP) — bloc spécial :**
- En-tête : icône + "XP / NIVEAU"
- ETA niveau 200 : "→ NIV. 200 : ~Xj Xh"
- Barre de progression vers 200 + pourcentage
- Valeur live (NIV. X), delta (+X xp), countdown
**Autres jauges :**
- En-tête : icône + nom (coloré)
- Valeur live, delta (pop animé), countdown
- Barre de progression vers la cible
### Badge "✓ TERMINÉ"
- Affiché quand toutes les jauges actives de cette DD ont atteint leur cible
---
## 6. Accouplement — Enregistrement de croisements
### Étape 1 : Sélection du parent 1
- Barre de recherche (🔍) avec bouton effacer
- Filtres par génération (onglets colorés : Toutes, Gen 110)
- Grille de cartes race (image, nom, badge gen)
- Message vide si aucun résultat
### Étape 2 : Sélection du parent 2
- Bouton "← Retour"
- Carte du parent 1 affichée (non cliquable)
- Label "Choisir le partenaire :"
- Grille des partenaires compatibles uniquement
- Chaque carte montre "→ {bébé}" en dessous
### Étape 3 : Résultat
- Bouton "← Retour"
- Affichage en ligne : Parent 1 + Parent 2 = Bébé (cartes avec images et badges gen)
- Input "Couples" (nombre)
- Input "Bébés obtenus" (nombre)
- Bouton "Enregistrer" → commande `register-accouplement`
---
## 7. Réapprovisionnement — Calcul de plan d'élevage
### Étape 1 : Sélection de la race cible
- Barre de recherche (🔍) avec bouton effacer
- Filtres par génération (Gen 210 uniquement)
- Grille de cartes race (gen 2+ seulement)
### Étape 2 : Plan d'élevage
- Bouton "← Retour"
- Carte cible + input quantité (mise à jour live du plan)
**Matériaux (Gen 1) :**
- Mini-cartes par race de base : image, nom, badge gen, ♂X ♀Y
**Étapes (Gen 2+) :**
Par génération, pour chaque croisement :
- En-tête "Étape X — Gen Y" (coloré)
- Affichage : Parent A + Parent B → Bébé (mini-cartes)
- Input "Reproducteurs" (nombre, par croisement)
- Bouton inversion ♂/♀ (swap la direction de reproduction)
**Actions :**
- Bouton "Sauvegarder le workflow"
---
## 8. Inventaire — Gestion du stock & simulation
### Saisie du stock
- Résumé : "X DD en stock (Y races)"
- Bouton "Réinitialiser" (remet tout à 0)
- Bouton "Calculer les bébés" (lance la simulation)
- Barre de recherche (🔍)
- Filtres par génération (Gen 110)
- Grille de cartes race :
- Image, nom, badge gen
- Input ♂ (mâles) + input ♀ (femelles)
- Mise à jour du résumé en temps réel pendant la saisie
- Persistance automatique du stock entre les changements d'écran
### Résultats de simulation
- En-tête global : "{N} bébés possibles sur {G} génération(s)"
- Bouton "Sauvegarder le workflow"
- Par génération :
- Badge gen + total bébés
- Par croisement : Parent A (♂X ♀Y) + Parent B (♂X ♀Y) → Bébé (×Z)
- Section "DD restantes (non utilisées)" : mini-cartes du stock inutilisé
### Algorithme
- Allocation proportionnelle (pas glouton) : chaque parent est réparti équitablement entre les croisements qui l'utilisent
- Cascade multi-générations (Gen 2 → Gen 10)
---
## 9. Workflows — Suivi des plans d'élevage
### Vue liste
- Titre "Plans d'élevage"
- Barre de recherche (🔍)
- Filtres par génération (uniquement les gens qui ont des workflows)
- Message vide si aucun workflow
**Par carte workflow :**
- Image de la race cible + badge gen
- Nom du workflow (tronqué)
- "Cible × Quantité — Date de création"
- Barre de progression globale (colorée) + "X/Y — Z%"
- Bouton supprimer (✕)
- Clic → vue détail
### Vue détail
- Bouton "← Retour"
- **Carte d'en-tête** :
- Image + badge gen
- Nom, cible × quantité, date
- Barre de progression globale + pourcentage
**Section Matériaux de base (si présents) :**
- Par matériau :
- Nom de la race (coloré)
- Mini barre de progression
- Input de progression (nombre)
- Label "X / Y"
**Sections par génération :**
- En-tête "Génération X" (coloré)
- Par croisement :
- Nom race (coloré)
- "ParentA × ParentB — X couples, repro ×Y"
- Input de progression (nombre)
- Label "X / Y"
- Mini barre de progression
### Temps réel
- La barre de progression globale se met à jour pendant la saisie
- Les barres individuelles se mettent à jour en direct
---
## 10. Paramètres
### Carte 🔊 Son d'alarme
- Select : Arpège, Pulsation, Fanfare, Cloche
- Bouton ▶ (test du son sélectionné, joue directement via WebAudio)
### Carte 🔔 Notifications
- **Bouton Notifs PC** : "🔔 Notifs PC activées" / "🔕 Notifs PC désactivées" (toggle)
- **Bouton Mobile** : "📱 Mobile activé" / "📱 Activer mobile" (ouvre la modal)
### Modal ntfy (notifications mobiles)
**Si non activé :**
- Texte explicatif
- Bouton "🔔 Activer les notifications mobiles" (génère un topic automatique)
**Si activé :**
- ① QR code pour télécharger l'app ntfy (Play Store / App Store)
- ② QR code pour s'abonner automatiquement aux notifications
- Bouton "🔔 Tester" (envoie une notification de test)
- Bouton "✕ Désactiver" (supprime le topic)
- Bouton "Fermer"
---
## Comportements transversaux
### Focus/blur des inputs (tous les écrans)
- Focus : vide le champ, sauvegarde la valeur précédente
- Blur sans valeur : restaure la valeur précédente
- Blur avec valeur : applique et sauvegarde
- Escape : annule et restaure
- Enter : valide (blur)
### Système de timer
- Snapshot des jauges et stats au démarrage
- Calcul par segments (recharges en cours de session)
- Gel au cap absolu de chaque stat
- Alarme unique quand toutes les cibles sont atteintes (son + notification PC + ntfy mobile)
- Temps réel : requestAnimationFrame continu
### Persistance
- Sauvegarde automatique après chaque mutation d'état
- LocalStorage (web) ou fichier JSON (Electron userData)
- Isolation des données DEV / production
### Drag-and-drop
- Onglets enclos : réordonnancement par glisser-déposer
- Cartes dragodindes : réordonnancement dans le même enclos