TimeManagerCLI.py

49,00 

Gérer le temps de travail des équipes de production de Champagne via une interface en ligne de commande.

UGS : timemanagercli.py Catégories : , Étiquette :

🔷 INFORMATIONS GÉNÉRALES

Champ Détail

Nom du script TimeManagerCLI.py

Version 1.0.0

Date de création 11/03/2026

Auteur / Demandeur IA Générée (Gemini)

Objectif principal Gérer le temps de travail des équipes de production de Champagne via une interface en ligne de commande.

🎯 DESCRIPTION FONCTIONNELLE

📌 Que fait ce script ?

Ce script permet de suivre précisément les étapes de production du champagne (vendange, tirage, dégorgement, etc.) en enregistrant les sessions de travail des membres d’une équipe. Il calcule automatiquement les durées et génère des rapports d’activité filtrables.

📌 Problème résolu

Il remplace les fiches de temps papier ou les tableurs complexes par un outil interactif simple, permettant de consolider les heures travaillées par cuvée, par lot et par phase de production pour une meilleure traçabilité.

⚙️ SPÉCIFICATIONS TECHNIQUES

🐍 Environnement

Élément Valeur

Version Python 3.7+ (utilise les dataclasses)

OS cible Tous (Windows / Linux / MacOS)

Mode d’exécution CLI (Interface en ligne de commande)

📦 Dépendances / Librairies

# Librairies standard (built-in)

json : Stockage des données.

os : Vérification de l’existence du fichier de données.

dataclasses : Structure des objets Team et WorkSession.

datetime : Gestion des horodatages et calculs de durée.

typing : Typage statique des données.

# Librairies externes

Aucune (le script est auto-suffisant).

📥 ENTRÉES (INPUTS)

# Nom Type Obligatoire Description Exemple

1 choice str ✅ Oui Choix du menu principal « 4 »

2 team_id int ✅ Oui Identifiant numérique de l’équipe 1

3 phase_choice int ✅ Oui Index de la phase de production 2

4 cuvee / lot str ❌ Non Références de production « Brut Réserve »

📂 Fichiers / Sources de données en entrée

Type Chemin / Format Description

JSON gestion_temps_champagne.json Base de données locale contenant les équipes et sessions.

📤 SORTIES (OUTPUTS)

# Nom Type Description Exemple

1 Report stdout Affichage textuel des statistiques d’heures « Total: 12h30 »

2 Sessions list Liste des sessions ouvertes affichées à l’écran –

📂 Fichiers / Données en sortie

Type Chemin / Format Description

JSON gestion_temps_champagne.json Persistance des données après chaque modification.

🧱 STRUCTURE DU SCRIPT

Plaintext

TimeManagerCLI.py

├── 📌 IMPORTS (json, datetime, dataclasses…)

├── 📌 CONSTANTES (PHASES_PRODUCTION, DATA_FILE)

├── 📌 FONCTIONS UTILITAIRES (now_iso, format_duration…)

├── 📌 CLASSES DE DONNÉES (Team, WorkSession)

├── 📌 CLASSE PRINCIPALE (TimeManagerCLI)

│ ├── load() / save() → Persistance JSON

│ ├── start_session() → Logique de début de tâche

│ ├── close_session() → Logique de fin de tâche

│ └── report_hours() → Moteur d’agrégation

└── 📌 MAIN (Point d’entrée app.run())

🔄 LOGIQUE / ALGORITHME

Initialisation : Chargement du fichier JSON. Si inexistant, initialise des dictionnaires vides.

Boucle Principale : Affichage du menu et attente d’une saisie utilisateur.

Ouverture de session : Enregistre start_at avec l’heure actuelle. La session reste « ouverte » (end_at est None).

Clôture : L’utilisateur choisit une session ouverte. Le script injecte end_at.

Rapport :

Parcourt toutes les sessions.

Filtre par date (si fourni) et par équipe.

Additionne les durées calculées par duration_hours().

🚨 GESTION DES ERREURS

Cas d’erreur Type d’exception Comportement attendu

ID non numérique ValueError Capturé par ask_int, retourne None, message « ID invalide ».

Date mal formatée ValueError Message « Format de date invalide », retour au menu.

Fichier JSON corrompu json.JSONDecodeError Le script plante (non géré explicitement en try/except).

✅ CONTRAINTES & RÈGLES MÉTIER

Règle 1 : Une session ne peut être comptabilisée dans le rapport que si elle est clôturée.

Règle 2 : La durée d’une session ne peut pas être négative (sécurité max(delta, 0.0)).

Règle 3 : Si un membre n’existe pas dans l’équipe lors du démarrage, le script propose son ajout automatique.

Règle 4 : Les phases de production sont limitées à la liste prédéfinie (Vendange à Expédition).

🧪 TESTS ATTENDUS

# Cas de test Entrée Résultat attendu Statut

1 Création équipe Nom: « Cave A » Équipe créée avec ID 1 ⬜ À tester

2 Calcul durée Start: 08:00, End: 10:30 Rapport affiche « 2h30 » ⬜ À tester

3 Filtre date Fin: 2026-03-10 Exclut les sessions du 2026-03-11 ⬜ À tester

📝 EXEMPLE D’UTILISATION

▶️ Lancement en ligne de commande

Bash

python TimeManagerCLI.py

📋 Exemple de sortie attendue (Rapport)

Plaintext

=== RAPPORT HEURES ===

Total: 45h15

Par équipe :

– Équipe Fermentation: 30h00

– Équipe Cave: 15h15

Par membre :

– Jean: 20h00

– Alice: 25h15

Avis

Il n’y a pas encore d’avis.

Soyez le premier à laisser votre avis sur “TimeManagerCLI.py”

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *