Commit Graph

16 Commits

Author SHA1 Message Date
69ea7aa09a fix(pct/eml): bouton 'Telecharger .eml' via delegation document-level
Bug: le handler etait attache via getElementById('pct-btn-eml') au moment du <script>
mais la modal HTML est plus bas dans le DOM -> element pas encore parse -> bind silencieux KO.

Fix: utilise document.addEventListener('click', ...) avec delegation
(closest('button') + check sur t.id). Marche meme si la modal est ajoutee/retiree.
Inclus aussi pct-btn-cancel et pct-modal-bg dans la delegation pour coherence.
2026-05-07 22:40:41 +02:00
abfb1bec7f feat(pct): bouton 'Telecharger .eml' pour New Outlook / Outlook Web
Cas: poste sans Outlook desktop (New Outlook = WebView2, pas de COM ; SMTP filtre
firewall corp). Solution: PatchCenter genere un fichier .eml MIME que l'user telecharge
puis double-clique -> s'ouvre dans son client mail par defaut (New Outlook, Outlook Web,
Thunderbird, etc.) pour relecture + envoi manuel.

- Endpoint POST /patching/import/pct-prevenance/download-eml: construit un MIMEMultipart
  alternative avec From/To/Cc/Subject/Date/Message-ID + body HTML (le meme que pour SMTP)
  Retourne 'message/rfc822' avec Content-Disposition attachment
- UI Modal Prevenance PCT: nouveau bouton violet 'Telecharger .eml' a cote de Annuler
  + 'Envoyer (SMTP)'. Fetch + Blob + URL.createObjectURL + a.download pour declencher
  le download cote navigateur
2026-05-07 22:37:22 +02:00
00998e9320 feat(pct): bouton Prevenance PCT + preview avant envoi + CC responsables/referents
- Service mail_service.py: send_html_mail via SMTP standard (host/port/user/pass/from/use_tls
  depuis Settings > SMTP). Gere SSL_465 et STARTTLS_587. Mode dry_run pour preview.
- Settings: nouvelle section 'smtp' avec smtp_host/port/user/pass/from/use_tls/pct_recipient
  (a configurer pour O365 SMTP submission)
- Router planning_import.py:
  * _build_pct_email(): construit subject + HTML pro/colore (header bleu degrade SANEF,
    cards avec border-left bleu/orange, tableau serveurs, footer)
  * Subject: 'Intervention sur <app>' si app uniforme, sinon liste des serveurs
  * Plage horaire = 20 min × N serveurs (formattee Hh MM)
  * 'Moyen d'exploitation prevu : Rollback en cas de probleme' ajoute en bas
  * _fetch_pct_cc_emails(): query distinct contacts depuis responsable_domaine_contact_id
    + referent_technique_contact_id + server_additional_referents
  * Endpoint POST /patching/import/pct-prevenance/preview retourne {subject, html, to, cc,
    smtp_configured, row_count} sans envoyer
  * Endpoint POST /patching/import/pct-prevenance/send envoie reellement, audit log,
    update pct_mail_sent_at sur les rows
- Template patching_import.html:
  * Bouton 'Prevenance PCT' (violet) a cote des autres actions
  * Modal preview avec iframe sandboxe pour le rendu HTML mail
  * Affiche destinataires, CC, objet, count serveurs
  * Warning rouge si SMTP non configure (envoi desactive, preview seulement)
  * 2 boutons: Annuler / Envoyer (avec confirmation)
2026-05-07 21:44:02 +02:00
fde554ad4f style(patching/import): boutons d'action vraiment visibles (border + glow + uppercase)
Avant: btn-sm fade text-xs avec bg-color/20 — ressemblaient a des liens.

Apres: classe .btn-action avec
- padding 6px 14px (plus genereux)
- text-transform uppercase + letter-spacing
- font-weight 700
- border 1px currentColor + box-shadow glow
- hover: translateY(-1px) + glow renforce
- Variantes coloris: btn-add (vert), btn-rep (bleu), btn-cancel (gris), btn-pre (orange)
- Icones renommes pour clarte (✕ Annuler, ▶ Pre-patching)

Pas de modif fonctionnelle, juste visuel.
2026-05-07 19:56:33 +02:00
040448696b feat(patching/import): boutons d'action toujours cliquables + alerte si aucune selection
Avant: les boutons (+ Ajouter, Reporter, Annuler, Pré-patching) etaient grises (disabled)
quand aucune row n'etait selectionnee, et le clic ne provoquait rien -> confusion.

Apres:
- Boutons toujours cliquables (HTML disabled retire)
- Atténuation visuelle (opacity-50) quand selection vide pour feedback
- Au clic sans selection: alerte 'Veuillez selectionner au moins un serveur.'
- Btn Pre-patching: si selection mais aucun eligible, alerte indiquant
  d'utiliser '+ Ajouter au patching' d'abord
2026-05-07 19:51:32 +02:00
2b57ca3247 fix(patching/import): comparaison filtres case-insensitive (production == Production)
- applyFilters: comparaisons en lowercase pour intervenant et env
- rebuildSelectOptions: dedup case-insensitive (Map<lowercase, canonical>)
  garde la 1re forme rencontree comme label affiche
2026-05-07 19:41:22 +02:00
a5f3a25198 feat(patching/import): actions Reporter/Ajouter au patching + log + colonne Etat (etape A) + placeholder /patching/iexec affichant excludes effectifs (etape B a venir) 2026-05-04 14:57:49 +02:00
6eb7619efc feat(patching/import): affichage date au format FR dd/mm/yyyy (tri reste sur start_iso ISO) 2026-05-04 14:12:42 +02:00
1ef9ecf85f feat(patching/import): lien Asset s ouvre dans un nouvel onglet 2026-05-04 14:09:27 +02:00
6891736395 feat(patching/import): retire colonnes Impacts et BDD de l affichage, lien Asset pointe vers /servers?search= 2026-05-04 14:09:11 +02:00
f70f5c3704 feat(patching/import): retire colonnes Coupure/Pb disque/Lien serveur/Mode op de l affichage, link sur Asset, raccourci OS version (RedHat 8, Win 2022, ...) 2026-05-04 14:05:16 +02:00
630297f98e feat(patching/import): stockage date/heure typés (DATE+TIME) + jour_text fallback texte libre + tri colonne Date par date+heure combinés 2026-05-04 13:57:24 +02:00
8b6057aef2 feat(patching/import): filtre intervenant en dropdown, retire filtre asset texte, ajoute tri asc/desc/none au clic sur entete Asset 2026-05-04 13:17:23 +02:00
488b5a980b feat(patching/import): ajout colonnes Resp Domaine DTS, Referent technique, Mode operatoire, Impacts, BDD - support nouveau format S07+ + Date au lieu de Jour 2026-05-04 13:12:09 +02:00
13a5625710 feat(patching/import): filtres client-side asset/intervenant/env sur tableau semaine 2026-05-04 13:04:05 +02:00
557015325b feat(patching): import planning xlsx (etape 1) - tables patch_planning_imports + rows, page upload + selecteur semaine + tableau 2026-05-04 12:57:35 +02:00