Module demo_api.report_manager
Gestionnaire de rapports pour demo_api
Functions
def generate_reports(report_type: ReportType = <typer.models.OptionInfo object>,
report_format: ReportFormat = <typer.models.OptionInfo object>,
output_dir: str = <typer.models.OptionInfo object>,
verbose: bool = <typer.models.OptionInfo object>) ‑> None-
Expand source code
def generate_reports( report_type: ReportType = typer.Option( ReportType.ALL, "--type", "-t", help="Type de rapport à générer" ), report_format: ReportFormat = typer.Option( ReportFormat.ALL, "--format", "-f", help="Format de rapport (json, markdown, html, all)", ), output_dir: str = typer.Option( "outputs", "--output-dir", "-o", help="Répertoire de sortie pour les rapports" ), verbose: bool = typer.Option(False, "--verbose", "-v", help="Mode verbeux"), ) -> None: """ 📊 Générer des rapports Exemples: .. code-block:: shell python report_manager.py python report_manager.py --type users-vms --format markdown python report_manager.py -t status -f html -o ./rapports --verbose python report_manager.py --format all --type all """ if verbose: typer.echo("🔧 Configuration:") typer.echo(f" Type de rapport: {report_type.value}") typer.echo(f" Format: {report_format.value}") typer.echo(f" Répertoire de sortie: {output_dir}") typer.echo() logger.info( "Début de génération des rapports", report_type=report_type.value, format=report_format.value, output_dir=output_dir, ) # Initialisation du client API, du gestionnaire de données et du service api = Api(config.DEMO_API_BASE_URL) data_manager = DataManager(api) report_service = ReportService(api) # Récupération centralisée des données (une seule fois) typer.echo("📡 Récupération des données...") users, vms = data_manager.fetch_all_data() if not users and not vms: typer.echo("❌ Impossible de récupérer les données nécessaires") raise typer.Exit(1) typer.echo(f" ✅ {len(users)} utilisateur(s) et {len(vms)} VM(s) récupéré(s)") typer.echo() # Génération des rapports selon le type et format demandés generated_files = [] # Déterminer les formats à générer formats_to_generate = [] if report_format == ReportFormat.ALL: formats_to_generate = [ ReportFormat.JSON, ReportFormat.MARKDOWN, ReportFormat.HTML, ] else: formats_to_generate = [report_format] # Génération des rapports utilisateurs/VMs if report_type in [ReportType.USERS_VMS, ReportType.ALL]: typer.echo("📊 Génération du rapport utilisateurs/VMs...") for fmt in formats_to_generate: report_file = None if fmt == ReportFormat.JSON: report_file = report_service.generate_users_vms_report( users, vms, "vm_users.json" ) elif fmt == ReportFormat.MARKDOWN: report_file = report_service.generate_users_vms_report_markdown( users, vms, "vm_users.md" ) elif fmt == ReportFormat.HTML: report_file = report_service.generate_users_vms_report_html( users, vms, "vm_users.html" ) if report_file: generated_files.append(report_file) if verbose: typer.echo(f" ✅ Généré ({fmt.value}): {report_file}") else: typer.echo( f"❌ Échec de la génération du rapport utilisateurs/VMs ({fmt.value})" ) # Génération des rapports de statut if report_type in [ReportType.STATUS, ReportType.ALL]: typer.echo("📈 Génération du rapport de statut des VMs...") for fmt in formats_to_generate: status_file = None if fmt == ReportFormat.JSON: status_file = report_service.generate_status_report( users, vms, "vm_status_report.json" ) elif fmt == ReportFormat.MARKDOWN: status_file = report_service.generate_status_report_markdown( users, vms, "vm_status_report.md" ) elif fmt == ReportFormat.HTML: status_file = report_service.generate_status_report_html( users, vms, "vm_status_report.html" ) if status_file: generated_files.append(status_file) if verbose: typer.echo(f" ✅ Généré ({fmt.value}): {status_file}") else: typer.echo( f"❌ Échec de la génération du rapport de statut ({fmt.value})" ) # Résumé typer.echo() if generated_files: typer.echo(f"🎉 {len(generated_files)} rapport(s) généré(s) avec succès") for file in generated_files: typer.echo(f" 📄 {file}") typer.echo() typer.echo("✨ Génération terminée!") else: typer.echo("❌ Aucun rapport n'a pu être généré") raise typer.Exit(1)📊 Générer des rapports
Exemples:
.. code-block:: shell
python report_manager.py python report_manager.py --type users-vms --format markdown python report_manager.py -t status -f html -o ./rapports --verbose python report_manager.py --format all --type all
Classes
class ReportFormat (*args, **kwds)-
Expand source code
class ReportFormat(str, Enum): """Formats de rapport disponibles""" JSON = "json" MARKDOWN = "markdown" HTML = "html" ALL = "all"Formats de rapport disponibles
Ancestors
- builtins.str
- enum.Enum
Class variables
var ALLvar HTMLvar JSONvar MARKDOWN
class ReportType (*args, **kwds)-
Expand source code
class ReportType(str, Enum): """Types de rapport disponibles""" USERS_VMS = "users-vms" STATUS = "status" ALL = "all"Types de rapport disponibles
Ancestors
- builtins.str
- enum.Enum
Class variables
var ALLvar STATUSvar USERS_VMS