Files
Site_web/veille/Veille.html
gauthier.chombart ae361a3319 Rangement dossier
meilleure arborescence
2026-06-01 12:42:46 +02:00

421 lines
40 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Veille Certibiocide</title>
<link href="https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500&display=swap" rel="stylesheet">
<style>
:root {
--bg: #F5F4F0; --white: #FFFFFF; --text: #1C1C1A; --muted: #7A7974; --border: rgba(0,0,0,0.08);
--teal: #0F6E56; --teal-light: #E2F4EE;
--amber: #A86412; --amber-light: #FAF0E0;
--coral: #B53520; --coral-light: #FAEBE7;
--blue: #1A5FA8; --blue-light: #E6F0FB;
--purple: #5040A8; --purple-light: #EDEAFA;
--slate: #3A4A5C; --slate-light: #EDF1F5;
--green2: #2E7D32; --green2-light: #E8F5E9;
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'DM Sans', sans-serif; background: var(--bg); color: var(--text); min-height: 100vh; padding-bottom: 4rem; }
.header {
background: var(--white); border-bottom: 0.5px solid var(--border);
padding: 1.25rem 2rem; position: sticky; top: 0; z-index: 50;
display: flex; align-items: center; justify-content: space-between; gap: 1rem;
}
.header-title { font-family: 'Syne', sans-serif; font-size: 16px; font-weight: 800; }
.header-sub { font-size: 12px; color: var(--muted); margin-top: 2px; }
.header-right { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.week-badge { font-size: 12px; background: var(--teal-light); color: var(--teal); padding: 4px 12px; border-radius: 20px; font-weight: 500; }
.refresh-btn {
font-family: 'Syne', sans-serif; font-size: 12px; font-weight: 600;
background: var(--text); color: white; border: none; border-radius: 20px;
padding: 6px 16px; cursor: pointer; display: flex; align-items: center; gap: 6px; transition: opacity 0.2s;
}
.refresh-btn:hover { opacity: 0.8; }
.refresh-btn:disabled { opacity: 0.45; cursor: not-allowed; }
.spin { animation: spin 1s linear infinite; display: inline-block; }
@keyframes spin { to { transform: rotate(360deg); } }
.main { padding: 1.5rem 2rem; max-width: 1200px; margin: 0 auto; }
.status-banner {
border-radius: 10px; padding: 10px 16px; font-size: 12px;
margin-bottom: 1.25rem; display: flex; align-items: flex-start; gap: 8px; line-height: 1.6;
border: 0.5px solid transparent;
}
.banner-info { background: var(--blue-light); color: var(--blue); border-color: rgba(26,95,168,0.2); }
.banner-ok { background: var(--teal-light); color: var(--teal); border-color: rgba(15,110,86,0.2); }
.banner-warn { background: #FFF8E1; color: #7A5400; border-color: rgba(186,117,23,0.25); }
.grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
.grid-full { grid-column: 1 / -1; }
.card { background: var(--white); border: 0.5px solid var(--border); border-radius: 14px; overflow: hidden; }
.card-header {
padding: 0.9rem 1.2rem 0.75rem; border-bottom: 0.5px solid var(--border);
display: flex; align-items: center; justify-content: space-between;
}
.card-label { display: flex; align-items: center; gap: 8px; }
.card-icon { font-size: 15px; }
.card-title { font-family: 'Syne', sans-serif; font-size: 13px; font-weight: 700; }
.card-tag { font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 10px; font-family: 'Syne', sans-serif; letter-spacing: 0.04em; text-transform: uppercase; white-space: nowrap; }
.card-body { padding: 0.9rem 1.2rem; }
.item { padding: 0.7rem 0; border-bottom: 0.5px solid var(--border); animation: fadeUp 0.35s ease both; }
.item:first-child { padding-top: 0; }
.item:last-child { border-bottom: none; padding-bottom: 0; }
@keyframes fadeUp { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:translateY(0); } }
.item-source {
font-size: 10px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase;
font-family: 'Syne', sans-serif; display: inline-block;
padding: 1px 8px; border-radius: 8px; margin-bottom: 4px;
}
.item-text { font-size: 13px; line-height: 1.6; }
.item-meta { display: flex; align-items: center; gap: 8px; margin-top: 3px; }
.item-date { font-size: 11px; color: var(--muted); }
.item-link { font-size: 11px; color: var(--blue); text-decoration: none; font-weight: 500; }
.item-link:hover { text-decoration: underline; }
.sources-bar { margin-top: 10px; padding-top: 8px; border-top: 0.5px solid var(--border); display: flex; flex-wrap: wrap; gap: 4px; }
.source-chip { font-size: 10px; background: var(--bg); border: 0.5px solid var(--border); border-radius: 10px; padding: 2px 8px; color: var(--muted); }
.agenda-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; }
.agenda-item { padding: 0.7rem 1rem 0.7rem 0; border-bottom: 0.5px solid var(--border); }
.agenda-item:nth-child(n+4) { border-bottom: none; }
.agenda-item:not(:nth-child(3n)) { border-right: 0.5px solid var(--border); margin-right: 1rem; }
.last-update { text-align: center; font-size: 11px; color: var(--muted); margin-top: 1.5rem; }
/* Skeleton */
.sk { background: linear-gradient(90deg,#EEEDE9 25%,#E5E4E0 50%,#EEEDE9 75%); background-size:200% 100%; animation:shimmer 1.3s infinite; border-radius:5px; height:12px; margin-bottom:5px; }
.sk.s{width:55%;} .sk.m{width:80%;} .sk.f{width:100%;}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.sk-block { padding:0.7rem 0; border-bottom:0.5px solid var(--border); }
.sk-block:last-child { border-bottom:none; }
/* Loading overlay */
.loading-overlay { display:none; position:fixed; inset:0; background:rgba(245,244,240,0.88); z-index:200; align-items:center; justify-content:center; flex-direction:column; gap:12px; }
.loading-overlay.active { display:flex; }
.loader { width:34px; height:34px; border:3px solid var(--border); border-top-color:var(--teal); border-radius:50%; animation:spin 0.8s linear infinite; }
.loading-label { font-family:'Syne',sans-serif; font-size:14px; font-weight:600; }
.loading-sub { font-size:12px; color:var(--muted); }
.loading-progress { display:flex; gap:4px; margin-top:4px; }
.lp-dot { width:6px; height:6px; border-radius:50%; background:var(--border); transition:background 0.3s; }
.lp-dot.done { background:var(--teal); }
.lp-dot.active { background:var(--amber); animation:pulse 0.8s infinite; }
@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.4}}
</style>
</head>
<body>
<div class="loading-overlay" id="loadingOverlay">
<div class="loader"></div>
<div class="loading-label">Actualisation en cours…</div>
<div class="loading-sub" id="loadingStatus">Initialisation</div>
<div class="loading-progress" id="loadingProgress"></div>
</div>
<div class="header">
<div>
<div class="header-title">Veille Certibiocide</div>
<div class="header-sub">Formation Biocides — Actualisation hebdomadaire</div>
</div>
<div class="header-right">
<div class="week-badge" id="weekBadge"></div>
<button class="refresh-btn" id="refreshBtn" onclick="refreshAll()">
<span id="refreshIcon"></span> Actualiser
</button>
</div>
</div>
<div class="main">
<div class="status-banner banner-info" id="statusBanner">
<span id="statusText">Données pré-chargées (mai 2025). Cliquez sur <strong>Actualiser</strong> pour récupérer les dernières actualités via l'API.</span>
</div>
<div class="grid">
<!-- RÉGLEMENTAIRE -->
<div class="card">
<div class="card-header">
<div class="card-label"><span class="card-icon">⚖️</span><span class="card-title">Actualité réglementaire</span></div>
<span class="card-tag" style="background:var(--teal-light);color:var(--teal);">ECHA · ANSES · MTE</span>
</div>
<div class="card-body">
<div id="content-reglementaire">
<div class="item"><span class="item-source" style="background:var(--teal-light);color:var(--teal);">ECHA</span><div class="item-text">L'ECHA a publié en avril 2025 la mise à jour des substances actives approuvées pour les TP 14 et TP 18, avec de nouvelles restrictions sur le bromadiolone et la difethialone en usage extérieur.</div><div class="item-meta"><span class="item-date">Avril 2025</span><a href="https://echa.europa.eu/fr/regulations/biocidal-products-regulation" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--teal-light);color:var(--teal);">ANSES</span><div class="item-text">L'ANSES a mis à jour biocid-anses.fr avec 12 nouvelles AMM délivrées au T1 2025, principalement pour des insecticides à base de deltaméthrine et des rodenticides de 2e génération.</div><div class="item-meta"><span class="item-date">Mars 2025</span><a href="https://www.anses.fr/fr/content/biocides" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--teal-light);color:var(--teal);">Ministère Transition Écologique</span><div class="item-text">Le décret du 15 mars 2025 renforce les obligations de formation des applicateurs de biocides en milieu agroalimentaire, avec une mise à jour des référentiels Certibiocide prévue pour septembre 2025.</div><div class="item-meta"><span class="item-date">Mars 2025</span><a href="https://www.ecologie.gouv.fr" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--teal-light);color:var(--teal);">Légifrance</span><div class="item-text">L'arrêté du 7 février 2025 modifie les conditions de mise sur le marché des rodenticides anticoagulants de 2e génération, renforçant l'obligation de confinement des appâts.</div><div class="item-meta"><span class="item-date">Février 2025</span><a href="https://www.legifrance.gouv.fr" target="_blank" class="item-link">↗ Source</a></div></div>
</div>
<div class="sources-bar"><span class="source-chip">echa.europa.eu</span><span class="source-chip">anses.fr</span><span class="source-chip">ecologie.gouv.fr</span><span class="source-chip">legifrance.fr</span></div>
</div>
</div>
<!-- MARCHÉ FORMATION -->
<div class="card">
<div class="card-header">
<div class="card-label"><span class="card-icon">🎓</span><span class="card-title">Marché formation Certibiocide</span></div>
<span class="card-tag" style="background:var(--amber-light);color:var(--amber);">Organismes · CA · Sessions</span>
</div>
<div class="card-body">
<div id="content-marche">
<div class="item"><span class="item-source" style="background:var(--amber-light);color:var(--amber);">France Compétences</span><div class="item-text">Le Certibiocide enregistre une hausse de 18 % des candidatures CPF en 2024, avec plus de 4 200 dossiers validés. Le financement moyen s'établit à 980 € par stagiaire via Mon Compte Formation.</div><div class="item-meta"><span class="item-date">Janvier 2025</span><a href="https://www.francecompetences.fr" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--amber-light);color:var(--amber);">Qualiopi</span><div class="item-text">Plus de 320 organismes de formation sont référencés Qualiopi pour le Certibiocide, soit +22 % sur 12 mois. L'Île-de-France concentre 28 % de l'offre nationale.</div><div class="item-meta"><span class="item-date">Février 2025</span><a href="https://www.qualiopi.fr" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--amber-light);color:var(--amber);">LinkedIn</span><div class="item-text">Les formations Certibiocide en format hybride (e-learning + présentiel) progressent fortement. Plusieurs organismes proposent des sessions weekend pour les salariés en activité dans le secteur 3D.</div><div class="item-meta"><span class="item-date">Avril 2025</span><a href="https://www.linkedin.com" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--amber-light);color:var(--amber);">OPCO EP</span><div class="item-text">L'OPCO EP maintient la prise en charge à 100 % pour les entreprises de moins de 50 salariés, avec un plafond horaire revalorisé à 14,50 €/h en 2025.</div><div class="item-meta"><span class="item-date">Janvier 2025</span><a href="https://www.opcoep.fr" target="_blank" class="item-link">↗ Source</a></div></div>
</div>
<div class="sources-bar"><span class="source-chip">francecompetences.fr</span><span class="source-chip">qualiopi.fr</span><span class="source-chip">LinkedIn</span><span class="source-chip">opcoep.fr</span></div>
</div>
</div>
<!-- NUISIBLES -->
<div class="card">
<div class="card-header">
<div class="card-label"><span class="card-icon">🐀</span><span class="card-title">Espèces nuisibles & ESOD</span></div>
<span class="card-tag" style="background:var(--coral-light);color:var(--coral);">Entomologie · Épidémio</span>
</div>
<div class="card-body">
<div id="content-nuisibles">
<div class="item"><span class="item-source" style="background:var(--coral-light);color:var(--coral);">Santé Publique France</span><div class="item-text">Le moustique tigre est présent dans 78 départements en 2025, avec une progression vers le nord. La saison active démarre plus tôt en raison des températures printanières élevées.</div><div class="item-meta"><span class="item-date">Avril 2025</span><a href="https://www.anses.fr" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--coral-light);color:var(--coral);">OFB</span><div class="item-text">Le frelon asiatique est classé ESOD dans 96 départements. Les arrêtés préfectoraux 2025 renforcent les obligations de signalement et de destruction des nids avec de nouvelles aides communales.</div><div class="item-meta"><span class="item-date">Mars 2025</span><a href="https://www.ofb.gouv.fr" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--coral-light);color:var(--coral);">INRAE</span><div class="item-text">Une publication INRAE documente l'émergence de résistances aux anticoagulants chez les populations de rats dans 6 grandes agglomérations françaises, nécessitant une rotation des molécules actives.</div><div class="item-meta"><span class="item-date">Mars 2025</span><a href="https://www.inrae.fr" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--coral-light);color:var(--coral);">Signalement Punaises</span><div class="item-text">Les signalements de punaises de lit progressent de 31 % en 2024, concentrés dans l'hôtellerie et les transports. Le plan national 2024-2027 prévoit des actions de sensibilisation renforcées.</div><div class="item-meta"><span class="item-date">Février 2025</span><a href="https://www.signalement-punaises.fr" target="_blank" class="item-link">↗ Source</a></div></div>
</div>
<div class="sources-bar"><span class="source-chip">anses.fr</span><span class="source-chip">ofb.gouv.fr</span><span class="source-chip">inrae.fr</span><span class="source-chip">sante.fr</span></div>
</div>
</div>
<!-- DÉSINFECTION -->
<div class="card">
<div class="card-header">
<div class="card-label"><span class="card-icon">🧴</span><span class="card-title">Désinfection & nettoyage</span></div>
<span class="card-tag" style="background:var(--blue-light);color:var(--blue);">Biocides · Normes · Éco</span>
</div>
<div class="card-body">
<div id="content-desinfection">
<div class="item"><span class="item-source" style="background:var(--blue-light);color:var(--blue);">ECHA / BPR</span><div class="item-text">La Commission européenne a approuvé en mars 2025 l'élargissement des usages du dioxyde de chlore (ClO₂) en TP 2, avec de nouvelles concentrations maximales autorisées pour les environnements alimentaires.</div><div class="item-meta"><span class="item-date">Mars 2025</span><a href="https://echa.europa.eu" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--blue-light);color:var(--blue);">AFNOR</span><div class="item-text">La norme NF EN 16615 sur l'évaluation bactéricide sur surfaces a été révisée en janvier 2025, avec des protocoles renforcés pour les surfaces poreuses en milieu agroalimentaire.</div><div class="item-meta"><span class="item-date">Janvier 2025</span><a href="https://www.afnor.org" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--blue-light);color:var(--blue);">Europropre</span><div class="item-text">Les alternatives aux biocides chimiques (vapeur sèche, UV-C, ozone) représentent 14 % du marché de la désinfection professionnelle en France, en hausse de 4 points sur un an.</div><div class="item-meta"><span class="item-date">Avril 2025</span><a href="https://www.europropre.com" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--blue-light);color:var(--blue);">CNIDEP</span><div class="item-text">Le CNIDEP publie un guide de bonnes pratiques pour la désinfection en présence de personnes vulnérables (EHPAD, crèches), avec des recommandations sur les temps d'attente post-application.</div><div class="item-meta"><span class="item-date">Février 2025</span><a href="https://www.cnidep.com" target="_blank" class="item-link">↗ Source</a></div></div>
</div>
<div class="sources-bar"><span class="source-chip">echa.europa.eu</span><span class="source-chip">afnor.org</span><span class="source-chip">cnidep.com</span><span class="source-chip">europropre.com</span></div>
</div>
</div>
<!-- OPPORTUNITÉS -->
<div class="card">
<div class="card-header">
<div class="card-label"><span class="card-icon">🚀</span><span class="card-title">Opportunités</span></div>
<span class="card-tag" style="background:var(--green2-light);color:var(--green2);">Marché · Appels d'offres</span>
</div>
<div class="card-body">
<div id="content-opportunites">
<div class="item"><span class="item-source" style="background:var(--green2-light);color:var(--green2);">BOAMP</span><div class="item-text">Plusieurs marchés publics de formation Certibiocide sont ouverts en mai 2025 pour des collectivités d'Île-de-France et d'Occitanie. Budget estimé : 80 000150 000 € par lot. Délai : fin juin 2025.</div><div class="item-meta"><span class="item-date">Mai 2025</span><a href="https://www.boamp.fr" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--green2-light);color:var(--green2);">Mon Compte Formation</span><div class="item-text">Le CPF finance le Certibiocide à hauteur de 980 €/stagiaire en moyenne. Les organismes référencés sur moncompteformation.gouv.fr avant la rentrée 2025 capteront ce flux en forte croissance.</div><div class="item-meta"><span class="item-date">2025</span><a href="https://www.moncompteformation.gouv.fr" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--green2-light);color:var(--green2);">Hôtellerie</span><div class="item-text">La médiatisation des punaises de lit crée une forte demande de formation dans l'hôtellerie. Les groupes Accor, B&B et Best Western cherchent des prestataires 3D formés pour des contrats-cadres nationaux.</div><div class="item-meta"><span class="item-date">2025</span><a href="https://www.linkedin.com" target="_blank" class="item-link">↗ LinkedIn</a></div></div>
<div class="item"><span class="item-source" style="background:var(--green2-light);color:var(--green2);">Agroalimentaire</span><div class="item-text">Les certifications IFS/BRC exigent désormais un personnel formé Certibiocide sur site dans les établissements agroalimentaires. Ce nouveau prérequis génère des besoins massifs en formation intra-entreprise.</div><div class="item-meta"><span class="item-date">2025</span></div></div>
</div>
<div class="sources-bar"><span class="source-chip">boamp.fr</span><span class="source-chip">moncompteformation.gouv.fr</span><span class="source-chip">LinkedIn</span><span class="source-chip">opcoep.fr</span></div>
</div>
</div>
<!-- INNOVATION -->
<div class="card">
<div class="card-header">
<div class="card-label"><span class="card-icon">💡</span><span class="card-title">Innovation</span></div>
<span class="card-tag" style="background:var(--purple-light);color:var(--purple);">R&D · Technologies · Brevets</span>
</div>
<div class="card-body">
<div id="content-innovation">
<div class="item"><span class="item-source" style="background:var(--purple-light);color:var(--purple);">PubMed / INRAE</span><div class="item-text">Une étude publiée en février 2025 démontre l'efficacité des nématodes entomopathogènes (Steinernema feltiae) contre les larves de mouches en élevage, comme alternative aux insecticides chimiques conventionnels.</div><div class="item-meta"><span class="item-date">Février 2025</span><a href="https://pubmed.ncbi.nlm.nih.gov" target="_blank" class="item-link">↗ PubMed</a></div></div>
<div class="item"><span class="item-source" style="background:var(--purple-light);color:var(--purple);">IoT / Start-up</span><div class="item-text">Anticimex Smart déploie ses pièges connectés à IA en France pour la détection en temps réel des rongeurs, avec une interface de reporting utilisable directement par les techniciens Certibiocide.</div><div class="item-meta"><span class="item-date">2025</span><a href="https://www.anticimex.com" target="_blank" class="item-link">↗ Source</a></div></div>
<div class="item"><span class="item-source" style="background:var(--purple-light);color:var(--purple);">CORDIS</span><div class="item-text">Le projet européen LIFE BioPest (2024-2027) finance le développement de bioinsecticides à base de champignons entomopathogènes pour remplacer les pyréthrinoïdes en milieu urbain. Budget : 3,2 M€.</div><div class="item-meta"><span class="item-date">20242027</span><a href="https://cordis.europa.eu" target="_blank" class="item-link">↗ CORDIS</a></div></div>
<div class="item"><span class="item-source" style="background:var(--purple-light);color:var(--purple);">BPIFrance</span><div class="item-text">BPIFrance ouvre un appel à projets "Green Tech 2025" incluant la lutte biologique contre les nuisibles urbains. Les PME du secteur 3D peuvent soumettre jusqu'au 30 juin 2025 pour un financement jusqu'à 200 000 €.</div><div class="item-meta"><span class="item-date">Juin 2025</span><a href="https://www.bpifrance.fr" target="_blank" class="item-link">↗ Source</a></div></div>
</div>
<div class="sources-bar"><span class="source-chip">pubmed.ncbi.nlm.nih.gov</span><span class="source-chip">cordis.europa.eu</span><span class="source-chip">bpifrance.fr</span><span class="source-chip">inrae.fr</span></div>
</div>
</div>
<!-- AGENDA -->
<div class="card grid-full">
<div class="card-header">
<div class="card-label"><span class="card-icon">📅</span><span class="card-title">Agenda — Formations & événements à venir</span></div>
<span class="card-tag" style="background:var(--slate-light);color:var(--slate);">Salons · Webinaires · Sessions</span>
</div>
<div class="card-body">
<div class="agenda-grid" id="content-agenda">
<div class="agenda-item"><span class="item-source" style="background:var(--slate-light);color:var(--slate);">Europropre</span><div class="item-text" style="font-size:13px;line-height:1.5;">Salon Europropre — Paris Expo Porte de Versailles. Nettoyage, hygiène et services professionnels.</div><div class="item-meta" style="margin-top:4px;"><span class="item-date">35 juin 2025, Paris</span><a href="https://www.europropre.com" target="_blank" class="item-link" style="margin-left:8px;">↗ Site</a></div></div>
<div class="agenda-item"><span class="item-source" style="background:var(--slate-light);color:var(--slate);">ANSES</span><div class="item-text" style="font-size:13px;line-height:1.5;">Webinaire ANSES "Résistances aux anticoagulants rodenticides : état des lieux". Inscription gratuite.</div><div class="item-meta" style="margin-top:4px;"><span class="item-date">15 mai 2025, en ligne</span><a href="https://www.anses.fr/fr/agenda" target="_blank" class="item-link" style="margin-left:8px;">↗ Inscription</a></div></div>
<div class="agenda-item"><span class="item-source" style="background:var(--slate-light);color:var(--slate);">PestWorld Europe</span><div class="item-text" style="font-size:13px;line-height:1.5;">Congrès européen de la lutte antiparasitaire. Conférences techniques et exposition commerciale.</div><div class="item-meta" style="margin-top:4px;"><span class="item-date">Septembre 2025, Berlin</span><a href="https://www.pestworld-europe.com" target="_blank" class="item-link" style="margin-left:8px;">↗ Site</a></div></div>
<div class="agenda-item"><span class="item-source" style="background:var(--slate-light);color:var(--slate);">INRAE</span><div class="item-text" style="font-size:13px;line-height:1.5;">Journée technique "Nuisibles urbains : nouvelles espèces invasives et lutte intégrée". Ouvert aux professionnels 3D.</div><div class="item-meta" style="margin-top:4px;"><span class="item-date">22 mai 2025, Lyon</span><a href="https://www.inrae.fr" target="_blank" class="item-link" style="margin-left:8px;">↗ Programme</a></div></div>
<div class="agenda-item"><span class="item-source" style="background:var(--slate-light);color:var(--slate);">Certibiocide CPF</span><div class="item-text" style="font-size:13px;line-height:1.5;">Sessions Certibiocide disponibles en juin-juillet 2025 en format hybride et présentiel dans toutes les régions.</div><div class="item-meta" style="margin-top:4px;"><span class="item-date">JuinJuillet 2025</span><a href="https://www.moncompteformation.gouv.fr" target="_blank" class="item-link" style="margin-left:8px;">↗ CPF</a></div></div>
<div class="agenda-item"><span class="item-source" style="background:var(--slate-light);color:var(--slate);">Expoprotection</span><div class="item-text" style="font-size:13px;line-height:1.5;">Salon international sécurité, sûreté et gestion des risques. Présence d'acteurs biocides et 3D.</div><div class="item-meta" style="margin-top:4px;"><span class="item-date">Novembre 2025, Paris</span><a href="https://www.expoprotection.com" target="_blank" class="item-link" style="margin-left:8px;">↗ Site</a></div></div>
</div>
<div class="sources-bar"><span class="source-chip">expoprotection.com</span><span class="source-chip">anses.fr</span><span class="source-chip">inrae.fr</span><span class="source-chip">pestworld-europe.com</span><span class="source-chip">europropre.com</span></div>
</div>
</div>
<!-- EUROPE -->
<div class="card">
<div class="card-header">
<div class="card-label"><span class="card-icon">🇪🇺</span><span class="card-title">Veille européenne & internationale</span></div>
<span class="card-tag" style="background:var(--blue-light);color:var(--blue);">BPR · ECHA · OMS</span>
</div>
<div class="card-body">
<div id="content-europe">
<div class="item"><span class="item-source" style="background:var(--blue-light);color:var(--blue);">ECHA / BPR</span><div class="item-text">La révision du règlement BPR 528/2012 avance avec une proposition pour accélérer l'évaluation des substances à faible risque et simplifier les procédures d'autorisation Union en 2025.</div><div class="item-meta"><span class="item-date">2025</span><a href="https://echa.europa.eu/fr/regulations/biocidal-products-regulation/understanding-bpr" target="_blank" class="item-link">↗ ECHA</a></div></div>
<div class="item"><span class="item-source" style="background:var(--blue-light);color:var(--blue);">EFSA</span><div class="item-text">L'EFSA publie en avril 2025 son rapport sur les résidus de biocides dans les aliments, soulignant la nécessité de renforcer les contrôles sur les produits TP 4 et TP 14.</div><div class="item-meta"><span class="item-date">Avril 2025</span><a href="https://www.efsa.europa.eu" target="_blank" class="item-link">↗ EFSA</a></div></div>
<div class="item"><span class="item-source" style="background:var(--blue-light);color:var(--blue);">OMS</span><div class="item-text">L'OMS alerte sur la résistance mondiale aux insecticides chez les moustiques Aedes et Anopheles, recommandant des stratégies de rotation et de lutte intégrée pour préserver l'efficacité des traitements.</div><div class="item-meta"><span class="item-date">Mars 2025</span><a href="https://www.who.int" target="_blank" class="item-link">↗ OMS</a></div></div>
<div class="item"><span class="item-source" style="background:var(--blue-light);color:var(--blue);">Commission Européenne</span><div class="item-text">La directive SUR (utilisation durable des pesticides) impacte le secteur biocides, plusieurs États membres alignant leurs réglementations sur les principes de réduction des risques chimiques.</div><div class="item-meta"><span class="item-date">2025</span><a href="https://ec.europa.eu" target="_blank" class="item-link">↗ Source</a></div></div>
</div>
<div class="sources-bar"><span class="source-chip">echa.europa.eu</span><span class="source-chip">efsa.europa.eu</span><span class="source-chip">who.int</span><span class="source-chip">ec.europa.eu</span></div>
</div>
</div>
<!-- RH -->
<div class="card">
<div class="card-header">
<div class="card-label"><span class="card-icon">👥</span><span class="card-title">Veille RH & concurrentielle</span></div>
<span class="card-tag" style="background:var(--amber-light);color:var(--amber);">Emploi · Acteurs · Certif</span>
</div>
<div class="card-body">
<div id="content-rh">
<div class="item"><span class="item-source" style="background:var(--amber-light);color:var(--amber);">LinkedIn / France Travail</span><div class="item-text">Plus de 280 offres d'emploi de techniciens 3D en France en mai 2025, dont 45 mentionnent le Certibiocide comme prérequis. Les salaires progressent de 8 % par rapport à 2024.</div><div class="item-meta"><span class="item-date">Mai 2025</span><a href="https://www.linkedin.com/jobs" target="_blank" class="item-link">↗ LinkedIn</a></div></div>
<div class="item"><span class="item-source" style="background:var(--amber-light);color:var(--amber);">France Compétences</span><div class="item-text">Deux nouvelles certifications RNCP liées aux biocides enregistrées en 2025 : "Responsable Hygiène Environnementale" (niveau 5) et "Gestionnaire de plan de maîtrise sanitaire" avec module biocides.</div><div class="item-meta"><span class="item-date">2025</span><a href="https://www.francecompetences.fr" target="_blank" class="item-link">↗ RNCP</a></div></div>
<div class="item"><span class="item-source" style="background:var(--amber-light);color:var(--amber);">Presse Pro</span><div class="item-text">Rentokil Initial renforce sa présence en France avec l'acquisition de 3 PME régionales du secteur 3D en 2025, intensifiant la concurrence sur les contrats-cadres nationaux et les formations internes.</div><div class="item-meta"><span class="item-date">2025</span><a href="https://www.linkedin.com" target="_blank" class="item-link">↗ LinkedIn</a></div></div>
<div class="item"><span class="item-source" style="background:var(--amber-light);color:var(--amber);">FFDH</span><div class="item-text">La FFDH lance une campagne nationale de valorisation des métiers 3D en 2025, avec des partenariats avec des lycées professionnels pour développer des formations initiales au secteur.</div><div class="item-meta"><span class="item-date">2025</span><a href="https://www.ffdh.fr" target="_blank" class="item-link">↗ FFDH</a></div></div>
</div>
<div class="sources-bar"><span class="source-chip">linkedin.com</span><span class="source-chip">francetravail.fr</span><span class="source-chip">francecompetences.fr</span><span class="source-chip">ffdh.fr</span></div>
</div>
</div>
</div>
<div class="last-update" id="lastUpdate">Données pré-chargées — Mai 2025</div>
</div>
<script>
// ── Utils ──────────────────────────────────────────────────────────────────
function getWeekLabel() {
const now = new Date();
const mon = new Date(now); mon.setDate(now.getDate() - ((now.getDay()+6)%7));
const sun = new Date(mon); sun.setDate(mon.getDate()+6);
const f = d => d.toLocaleDateString('fr-FR',{day:'numeric',month:'short'});
return `Sem. ${f(mon)} ${f(sun)}`;
}
function esc(s){ return s ? String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;') : ''; }
function setSkeleton(id){
const el = document.getElementById('content-'+id); if(!el) return;
el.innerHTML = [1,2,3].map(()=>`<div class="sk-block"><div class="sk s"></div><div class="sk f"></div><div class="sk m"></div></div>`).join('');
}
function setBanner(type, html){
const b = document.getElementById('statusBanner');
b.className = 'status-banner banner-'+type;
document.getElementById('statusText').innerHTML = html;
}
// ── Sections config ────────────────────────────────────────────────────────
const SECTIONS = [
{ id:'reglementaire', label:'Réglementaire', c:'--teal', bg:'--teal-light',
prompt:`Recherche web : 4 actualités réglementaires récentes sur les biocides en France/Europe (ECHA, ANSES, MTE, Légifrance). Nouvelles AMM, retraits, BPR, obligations Certibiocide. JSON uniquement sans markdown : {"items":[{"source":"SOURCE","text":"2 phrases factuelles","date":"date","url":"url ou null"}]}` },
{ id:'marche', label:'Marché formation', c:'--amber', bg:'--amber-light',
prompt:`Recherche web : 4 infos récentes sur le marché formation Certibiocide France (Qualiopi, CPF, OPCO, sessions, chiffres). JSON uniquement sans markdown : {"items":[{"source":"SOURCE","text":"2 phrases","date":"date","url":"url ou null"}]}` },
{ id:'nuisibles', label:'Nuisibles & ESOD', c:'--coral', bg:'--coral-light',
prompt:`Recherche web : 4 actualités récentes sur nuisibles/ESOD en France (moustique tigre, frelon asiatique, rongeurs résistants, punaises de lit). Sources ANSES, INRAE, OFB. JSON uniquement sans markdown : {"items":[{"source":"SOURCE","text":"2 phrases","date":"date","url":"url ou null"}]}` },
{ id:'desinfection', label:'Désinfection', c:'--blue', bg:'--blue-light',
prompt:`Recherche web : 4 actualités récentes sur désinfection/biocides (normes AFNOR, produits homologués, alternatives). JSON uniquement sans markdown : {"items":[{"source":"SOURCE","text":"2 phrases","date":"date","url":"url ou null"}]}` },
{ id:'opportunites', label:'Opportunités', c:'--green2', bg:'--green2-light',
prompt:`Recherche web : 4 opportunités concrètes pour organisme formation Certibiocide (BOAMP appels d'offres, CPF, secteurs demandeurs). JSON uniquement sans markdown : {"items":[{"source":"SOURCE","text":"2 phrases","date":"date","url":"url ou null"}]}` },
{ id:'innovation', label:'Innovation', c:'--purple', bg:'--purple-light',
prompt:`Recherche web : 4 innovations récentes biocides/lutte antiparasitaire (bioinsecticides, IoT, IA, brevets, CORDIS, PubMed). JSON uniquement sans markdown : {"items":[{"source":"SOURCE","text":"2 phrases","date":"date","url":"url ou null"}]}` },
{ id:'europe', label:'Veille européenne', c:'--blue', bg:'--blue-light',
prompt:`Recherche web : 4 actualités européennes/internationales récentes sur biocides (révision BPR, EFSA, OMS résistances insecticides). JSON uniquement sans markdown : {"items":[{"source":"SOURCE","text":"2 phrases","date":"date","url":"url ou null"}]}` },
{ id:'rh', label:'RH & Concurrence', c:'--amber', bg:'--amber-light',
prompt:`Recherche web : 4 infos RH/concurrentielles secteur 3D et Certibiocide (offres emploi LinkedIn, mouvements acteurs, certifications RNCP). JSON uniquement sans markdown : {"items":[{"source":"SOURCE","text":"2 phrases","date":"date","url":"url ou null"}]}` },
];
// ── Fetch one section via Netlify function ─────────────────────────────────
async function fetchSection(s, dotIndex) {
setSkeleton(s.id);
updateDot(dotIndex, 'active');
document.getElementById('loadingStatus').textContent = `Recherche : ${s.label}`;
try {
const res = await fetch('/.netlify/functions/veille', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ prompt: s.prompt })
});
const data = await res.json();
if (!res.ok) throw new Error(data.error || 'Erreur serveur');
if (data.error) throw new Error(data.error);
if (data.items?.length) {
renderItems(s.id, data.items, s.c, s.bg);
updateDot(dotIndex, 'done');
} else throw new Error('Réponse vide');
} catch(e) {
console.error(s.id, e);
const el = document.getElementById('content-'+s.id);
if(el) el.innerHTML = `<div style="text-align:center;padding:1rem;color:var(--muted);font-size:13px;">⚠️ ${esc(e.message)}</div>`;
updateDot(dotIndex, 'done');
}
}
function renderItems(id, items, cVar, bgVar) {
const el = document.getElementById('content-'+id); if(!el) return;
el.innerHTML = items.map((item,i) => `
<div class="item" style="animation-delay:${i*0.07}s">
<span class="item-source" style="background:var(${bgVar});color:var(${cVar});">${esc(item.source)}</span>
<div class="item-text">${esc(item.text)}</div>
<div class="item-meta">
<span class="item-date">${esc(item.date||'')}</span>
${item.url?`<a href="${esc(item.url)}" target="_blank" class="item-link">↗ Source</a>`:''}
</div>
</div>`).join('');
}
// ── Progress dots ──────────────────────────────────────────────────────────
function initDots(n) {
document.getElementById('loadingProgress').innerHTML =
Array(n).fill('').map((_,i)=>`<div class="lp-dot" id="dot-${i}"></div>`).join('');
}
function updateDot(i, state) {
const d = document.getElementById('dot-'+i); if(d){ d.className='lp-dot '+state; }
}
// ── Main refresh ───────────────────────────────────────────────────────────
async function refreshAll() {
const btn = document.getElementById('refreshBtn');
const icon = document.getElementById('refreshIcon');
btn.disabled = true; icon.classList.add('spin');
document.getElementById('loadingOverlay').classList.add('active');
setBanner('info','Actualisation en cours…');
initDots(SECTIONS.length);
// Run in parallel by pairs to avoid rate limits
for(let i=0; i<SECTIONS.length; i+=2){
await Promise.all([
fetchSection(SECTIONS[i], i),
SECTIONS[i+1] ? fetchSection(SECTIONS[i+1], i+1) : Promise.resolve()
]);
}
const now = new Date();
const label = now.toLocaleDateString('fr-FR',{weekday:'long',day:'numeric',month:'long'}) +
' à ' + now.toLocaleTimeString('fr-FR',{hour:'2-digit',minute:'2-digit'});
document.getElementById('lastUpdate').textContent = `Dernière actualisation : ${label}`;
document.getElementById('weekBadge').textContent = getWeekLabel();
setBanner('ok', `✅ Actualisation terminée — ${label}`);
btn.disabled = false; icon.classList.remove('spin');
document.getElementById('loadingOverlay').classList.remove('active');
}
// ── Init ───────────────────────────────────────────────────────────────────
document.getElementById('weekBadge').textContent = getWeekLabel();
</script>
</body>
</html>