421 lines
40 KiB
HTML
421 lines
40 KiB
HTML
<!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 000–150 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">2024–2027</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">3–5 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">Juin–Juillet 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,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"') : ''; }
|
||
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>
|