Skip to content

feat: add HTML audit report export - #3

Merged
Swapshadow merged 1 commit into
mainfrom
codex/add-html-report-generation-feature
May 30, 2026
Merged

Swapshadow merged 1 commit into
mainfrom
codex/add-html-report-generation-feature

Conversation

@Swapshadow

Copy link
Copy Markdown
Owner

Motivation

  • Fournir un nouveau format de rapport principal en HTML, consultable hors-ligne et complémentaire aux exports PDF/Excel/JSON pour les audits.
  • Générer automatiquement le HTML à la fin d’un audit et le rendre téléchargeable/consultable depuis le Reporting Center.
  • Assurer un rendu premium (charte noir/rouge) tout en protégeant contre les injections via un échappement systématique des valeurs insérées.

Description

  • Ajout du générateur de rapport generate_html_report(audit: dict) -> str dans backend/app/reports/html_report.py avec helpers sûrs (safe_get, esc, render_table, severity_badge, progress_bar, section) et style/CSS intégrés au HTML pour un rendu offline premium.
  • Intégration backend dans backend/app/main.py pour exécuter la génération HTML après PDF/Excel/JSON, stocker le nom dans audit["html_filename"], ajouter les erreurs "HTML: ..." et exposer html_filename/html_url dans les réponses d’audit.
  • Nouvelle route GET /api/reports/{audit_id}/html qui renvoie un FileResponse(media_type="text/html") et qui tente de régénérer le HTML à la demande si le fichier est manquant, puis met à jour le stockage.
  • Persistance et migration légère : ajout de la colonne SQLAlchemy html_filename et implémentation de _ensure_audit_html_column() (ALTER TABLE si nécessaire) dans backend/app/database.py, et sauvegarde du champ via backend/app/services/storage.py.
  • Mise à jour frontend du Reporting Center et de l’interface de résultats dans backend/app/static/index.html et backend/app/static/app.js pour ajouter le bouton « HTML » et les champs html_filename, html_exists, html_url dans l’API de listing.

Testing

  • python -m py_compile backend/app/main.py backend/app/database.py backend/app/services/storage.py backend/app/reports/html_report.py a été exécuté avec succès pour valider la syntaxe Python des fichiers modifiés.
  • Génération de rapport HTML testée localement avec audits factices (contrôles d’échappement HTML, présence du message de troncature pour listes longues, nommage open_easm_beta_<domaine>_<YYYYMMDD_HHMMSS>.html) et assertions automatiques, et ces tests ont réussi.
  • Vérification statique du JS via node --check backend/app/static/app.js a réussi.
  • Inspection runtime de l’application (import de app.main pour lister les routes) n’a pas pu être exécutée dans cet environnement d’intégration car la dépendance fastapi n’est pas installée ici, ce qui empêche d’effectuer un test d’exécution complet des routes dans le conteneur de validation.

Codex Task

@Swapshadow
Swapshadow marked this pull request as ready for review May 30, 2026 09:56
@Swapshadow
Swapshadow merged commit ed089ca into main May 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant