De la période aux règles, des émissions aux campagnes et à leurs spots, puis la grille horaire, le conducteur et le bilan : tout ce que fait la démo, étape par étape.

La Grille Autopromo place automatiquement les messages d'autopromotion d'une radio sur une période donnée, en respectant les horaires des émissions qu'ils annoncent et des règles de rotation. On décrit ce que l'on veut (émissions, campagnes, spots, règles), l'outil propose une grille, et l'on retouche à la main si besoin.
| Terme | Sens dans l'outil |
|---|---|
| Émission | Un programme de la radio, récurrent (tous les jours à 9h, du lundi au vendredi à 17h…) ou ponctuel (jeudi 15/10 de 20h à 22h). Ses horaires créent des interdictions pour sa propre promo. |
| Campagne | Un ensemble d'autopromos pour une émission (ex. VIP1 pour « Le Club VIP »), ou une promo d'antenne sans émission (appli, jeu, podcasts). Elle a des dates, un nombre de passages par jour visé et un ou plusieurs spots. |
| Spot | Une version du message dans la campagne (S1, S2, S3…). Chaque spot a une accroche (« Ce week-end », « Demain 14h »…) et un moment de diffusion qui dit quand l'accroche a un sens. |
| Passage | Une diffusion d'un spot à un créneau précis de la grille. |
| Créneau | Une place d'autopromo dans la grille : deux par heure de 06h à 08h, une par heure de 09h à 23h, une par heure la nuit si on l'active. |
Chaque colonne de la grille est une journée d'antenne : de 06h à 23h, puis, si la nuit est programmée, de 00h à 05h du lendemain (affichées sous 23h). Le calcul parcourt toujours la journée dans cet ordre, en commençant par 06h00.
| Heures | Créneaux par heure | Position théorique |
|---|---|---|
| 06h – 08h | 2 (marqués « ×2 ») | hh00 et hh30 |
| 09h – 23h | 1 | hh00 |
| 00h – 05h | 1, seulement si « Programmer aussi la nuit » est coché | hh00 |
Ces positions théoriques servent à mesurer les écarts entre deux passages (une séparation de 2h30 sépare 06h00 de 08h30, par exemple). Une semaine de 7 jours offre ainsi 147 créneaux de jour.
Tout le reste (séparation souple, rotation des heures d'un jour sur l'autre, part de chaque campagne et de chaque spot) est recherché au mieux, et chaque écart est compté dans le bilan.

| Zone | Contenu |
|---|---|
| En-tête | Le nom de l'outil, le bandeau vert « Démo partagée » (sur le site), le lien « Guide d'utilisation » (ce guide, en ligne et en PDF) et le rappel de la capacité horaire. |
| 1 · Période | Les dates et heures de début et de fin de la programmation. |
| 2 · Règles par défaut | Marge après émission, séparations, rotation des heures, traitement des créneaux non conformes, nuit. |
| 3 · Émissions | La liste des émissions et de leurs interdictions. |
| 4 · Campagnes | Les campagnes, leurs spots, leur état (active ou non) et leur résultat. |
| Barre d'outils | Réinitialiser la démo, vider la grille, tout recalculer, programmer les créneaux vides. |
| Onglets | Grille (la grille horaire), Spots par campagne (où passe chaque spot), Conducteur (liste chronologique à copier). |
| Bilan | Le résultat par campagne et le total des écarts aux règles. |
Blocs repliables. Les blocs Période, Règles par défaut et Émissions se replient d'un clic sur leur titre (chevron). Repliés, ils affichent une ligne de résumé. Cet état est propre à chaque navigateur.
La colonne de gauche reste à côté de la grille. Sur grand écran, elle reste accrochée en haut quand on descend dans la grille et défile seule : on parcourt et on sélectionne les campagnes sans perdre la grille de vue. Replier Période, Règles et Émissions fait remonter les campagnes en haut de la colonne.

La période fixe les jours affichés et calculés (une colonne par jour) et, à l'heure près, la fenêtre où l'on programme.

Les créneaux avant le début ou à partir de la fin apparaissent rayés avec la mention « hors période » : ils ne sont jamais programmés, ni par le calcul ni à la main. C'est utile quand la période commence ou s'arrête en milieu de journée — rien ne passe après l'heure de fin.

Changer la période refait toute la grille : les retouches manuelles sont perdues (voir § 08).
Les règles disent ce que la grille doit respecter. Elles s'appliquent à toutes les campagnes ; la marge, elle, est copiée dans chaque nouvelle émission puis réglable émission par émission.

Pendant une émission et pendant la marge qui suit sa fin, la promo de cette émission ne passe pas (les autres campagnes, elles, peuvent passer). Choix : Aucune (seulement pendant l'émission), 1 h, 2 h, 3 h ou 4 h. Par défaut : 2 h.
| Émission | Marge | Créneaux interdits à sa promo |
|---|---|---|
| tous les jours 09h–10h | 2 h | 09h, 10h, 11h (« de 09h à 11h inclus ») |
| jeudi 20h–22h | 2 h | 20h, 21h, 22h, 23h |
| samedi 14h–17h | 1 h | 14h, 15h, 16h, 17h |
Deux réglages, de 0h10 à 12h00 par pas de 10 minutes :
Entre les deux valeurs, un passage peut être accepté (selon l'option « Quand aucune campagne ne respecte toutes les règles ») ; il est alors compté comme écart. Si l'on règle la souple sous la stricte, la stricte descend avec elle, et inversement : la souple n'est jamais inférieure à la stricte.
Même principe, pour qu'un même message ne revienne pas trop vite : stricte 4h00 et souple 5h00 par défaut. Une campagne qui n'a qu'un seul spot n'est pas concernée : seule la séparation de campagne s'applique à elle.
Coché, une campagne évite de passer à la même heure que la veille (06h00 et 06h30 comptent comme la même heure). La case stricte en fait une règle absolue ; sinon elle est souple (évitée, et comptée comme écart si elle est enfreinte).
Ajoute les créneaux de 00h à 05h (après 23h, dans la même colonne). Ils ne servent qu'en complément : le calcul répartit d'abord les passages en journée.
Toute modification de règle recalcule la grille entière (sauf la marge par défaut, qui ne concerne que les futures émissions).
Une émission sert à une chose : savoir quand sa promo est interdite et quand ses spots ont un sens (« demain », « ce soir »…).


Un message bloque l'enregistrement s'il manque le nom, les jours (récurrente), la date (ponctuelle), ou si début et fin sont identiques.
Une émission prend la couleur de la campagne qui la promeut, partout : pastille dans la liste, zones et libellés dans la grille. Une émission que plus aucune campagne ne promeut apparaît en gris.
On peut aussi créer une émission depuis le panneau d'une campagne (bouton « + Nouvelle émission »), sans quitter la création de la campagne — voir § 06.
Une campagne relie une émission (ou aucune, pour une promo d'antenne) à des dates, un rythme et des spots.

Cliquez + Campagne. Un panneau s'ouvre à droite (fermeture : ×, Échap ou clic en dehors ; rien n'est enregistré).

Court (12 caractères au plus) et unique : il s'affiche dans chaque case de la grille (ex. VIP2).
Choisissez l'émission dans la liste, ou Aucune : promo d'antenne pour une campagne sans émission (appli, jeu, podcasts) — elle n'a alors aucune interdiction horaire, et seuls les spots « Générique » ont un sens. L'encadré rose rappelle les interdictions qui en découlent. En changeant d'émission, la date de fin se cale automatiquement sur sa dernière diffusion dans la période.
Si l'émission n'existe pas encore, cliquez + Nouvelle émission : le formulaire d'émission s'ouvre dans le panneau. À l'enregistrement, l'émission est créée, sélectionnée, et la fin de campagne calée sur sa diffusion.

De 1 à 12. C'est un objectif et un poids : les créneaux disponibles sont partagés entre les campagnes au prorata de ce nombre, dans le respect des règles. La ligne d'estimation donne le total visé et signale les jours où l'objectif est réduit, parce que l'émission et sa marge (et les séparations) ne laissent pas assez d'heures : par exemple un dimanche où l'émission est à 14h et où seul le spot « cet après-midi » a un sens le matin.
Une nouvelle campagne commence avec un seul spot ; on en ajoute au fur et à mesure avec + Ajouter un spot (6 au plus), et le bouton − en retire un. Pour chaque spot :
| Champ | Rôle |
|---|---|
| Accroche | Ce que dit le message : « Ce week-end », « Demain 14h », « Cet après-midi »… (obligatoire). |
| Moment de diffusion | Quand l'accroche est vraie (tableau ci-dessous). |
| Part | Poids du spot dans la campagne. En automatique, calculée et affichée en lecture seule ; en manuel, de 1 à 100, ramené à 100 %. |
| Du / Au | Facultatif : limite la diffusion du spot à ces dates, à l'heure près si besoin. « Du » : date et heure de début (00h par défaut, incluse). « Au » : date et heure de fin (« fin jour » par défaut = toute la journée ; une heure choisie est exclue). Ex. « Derniers jours » du dimanche 18/10 à 12h au mardi 20/10 à 20h : premier passage possible à 12h le dimanche, dernier à 19h le mardi. |
| Moment de diffusion | Le spot passe… | Exemple (émission samedi et dimanche 14h) |
|---|---|---|
| Générique | à tout moment autorisé | « Le Week-end Sport » |
| Jour nommé (« jeudi ») | de 6 jours avant jusqu'à la veille de la prochaine diffusion | « Ce week-end » : du lundi au samedi soir |
| « Demain » | la veille de la prochaine diffusion | « Demain 14h » : vendredi, et samedi après l'émission |
| « Aujourd'hui / ce soir » | le jour même, avant l'émission | « Cet après-midi » : samedi et dimanche matin, jamais après 14h |
Le moment est calculé automatiquement par rapport à la prochaine diffusion de l'émission : une fois l'émission passée, « aujourd'hui » ne peut plus sortir ce jour-là. Pour une promo d'antenne, il n'y a pas d'émission : seuls les spots génériques passent.
Case cochée par défaut. L'outil calcule, jour par jour, combien de passages la campagne peut vraiment faire et quels spots sont possibles, puis en déduit la part de chaque spot :

Le tableau montre tout de suite un manque : si un jour n'a qu'un spot possible et un objectif réduit, c'est peut-être le signe qu'il faut un spot de plus (un second « cet après-midi », par exemple). Décochez la case pour saisir les parts à la main.

L'enregistrement est refusé, avec un message en rouge, si le nom manque ou existe déjà, si les dates manquent, si la fin n'est pas après le début, si un spot n'a pas d'accroche, ou si la fin d'un spot (date et heure) n'est pas après son début.
Comprendre le calcul aide à régler les campagnes et les règles. Il se fait jour par jour, créneau par créneau, à partir de 06h00.
Une fois les heures d'une journée fixées, les spots de chaque campagne sont répartis sur ces heures en cherchant la meilleure combinaison :
| Action | Effet sur la grille |
|---|---|
| Modifier la période, une règle, une émission | Grille entièrement recalculée (retouches perdues) |
| Bouton Tout recalculer · Enregistrer et tout recalculer | Grille entièrement recalculée |
| Bouton Programmer les créneaux vides · Enregistrer et programmer les créneaux vides | Seuls les trous sont remplis ; les passages en place restent, sauf ceux devenus invalides (campagne modifiée, dates…), qui sont retirés et comptés dans le message |
| Désactiver une campagne | Ses passages sont retirés ; rien d'autre ne bouge |
| Changer la marge par défaut, sélectionner une campagne, changer le mode de couleur, replier un bloc | Aucun recalcul |

| Programmer les créneaux vides | Remplit les trous sans toucher aux passages en place. Le message indique combien de créneaux ont été programmés et combien restent vides. |
| Tout recalculer | Refait toute la grille ; les retouches manuelles sont perdues. |
| Vider la grille | Retire tous les passages (confirmation demandée). |
| Réinitialiser la démo (pour tous) | Remet les données d'exemple d'origine — pour tous les visiteurs sur le site (confirmation demandée). |

Cliquez une campagne dans la liste : ses passages passent en couleur franche, ainsi que son émission (teinte forte, barre épaisse, nom en gras), et tout le reste passe en retrait — y compris les créneaux non programmés, qui deviennent rouge pâle pour ne pas se confondre avec une campagne rouge. La barre de sélection rappelle la campagne choisie ; Tout afficher (ou un second clic sur la campagne) revient à la vue neutre.



Par défaut, tous les spots d'une campagne ont la couleur de la campagne. Le bouton « Couleur par spot » colore plutôt par numéro de spot (S1, S2, S3…), pour vérifier la rotation des messages ; la légende indique alors les spots de la campagne sélectionnée.

| Signal | Sens | Que faire |
|---|---|---|
| ! | Créneau non programmé : aucune campagne ne le prenait dans le respect des règles. | Cliquer pour choisir une campagne (§ 09), ou assouplir une règle. |
| APPLI1 S2 | Passage qui enfreint une règle souple (ou stricte, s'il a été posé à la main). Survol : la règle concernée. | Le remplacer, le déplacer, ou accepter l'écart. |
| Case grisée | Hors des dates de la campagne sélectionnée. | — |
| Case pointillée | Aucun spot de la campagne sélectionnée n'a de sens à ce moment. | Ajouter un spot générique si besoin. |

Un menu s'ouvre sous la case :

Fermeture : ×, Échap, clic ailleurs. Un message confirme chaque action et signale une éventuelle règle enfreinte.

Le menu classe toutes les campagnes :
Cliquer une campagne la place ; Laisser non programmé ferme le menu sans rien changer.
Les retouches manuelles sont conservées par « Programmer les créneaux vides », mais perdues par « Tout recalculer » et par toute modification de période, de règle ou d'émission.
Désactiver une campagne la retire de la grille et du conducteur sans perdre ses réglages ; on la réactive d'un clic.



Ouvrez le volet « Autres campagnes » sous la liste, puis bouton Activer. Les passages retirés à la désactivation ont été mémorisés : chacun revient à sa place si son créneau est encore libre et toujours valable (dates, interdictions, spot). Les créneaux pris entre-temps par une autre campagne restent à celle-ci. Le message indique combien de passages sont revenus et combien de créneaux ont été pris entre-temps.
Pour compléter ensuite : Programmer les créneaux vides (la campagne prend des créneaux libres) ou Tout recalculer (elle retrouve toute sa place, retouches perdues).
Pour une campagne, où passe chaque spot, jour par jour — et la possibilité d'échanger les spots par glisser-déposer.

Le glisser-déposer se fait à la souris. Sur écran tactile, utilisez le menu (clic sur l'heure).
La liste chronologique des passages, prête à coller dans un tableur ou dans l'automate de diffusion.

| Colonne | Contenu |
|---|---|
| Date | Date calendaire réelle (un passage de nuit porte la date du lendemain), au format 2026-10-14. |
| Heure | Position théorique 06:00, 06:30… |
| Campagne · Spot · Accroche | VIP1 · S2 · « Demain 9h ». |
| Émission | L'émission promue (vide pour une promo d'antenne). |
Le texte copié est séparé par tabulations, avec une ligne d'en-tête. Si le navigateur refuse la copie automatique, le texte apparaît sélectionné dans une zone : faites Ctrl+C. Les campagnes désactivées n'apparaissent pas dans le conducteur.

| Colonne | Contenu |
|---|---|
| Passages | Passages placés et passages visés. L'objectif tient compte des jours réduits (§ 06) : un jour d'émission qui ne permet que 2 passages vise 2, pas 4. Pastille orange si un jour reste sous son objectif. |
| Rotation | Nombre d'écarts aux règles de la campagne, et nombre d'heures différentes occupées sur la période. |
| Répartition des spots | Nombre de passages de chaque spot. |
| Jours incomplets | Les jours sous l'objectif, avec « obtenu / visé ». |
En tête du bilan, le total des écarts aux règles, par règle : séparation campagne sous la valeur souple, séparation spot sous la valeur souple, même heure que la veille, et « sous un minimum strict » (seulement possible par placement manuel).

On règle, on regarde le bilan et les cases rouges, on ajuste. Quelques repères :
| On observe… | Piste de réglage |
|---|---|
| Beaucoup de créneaux rouges le matin (06h–08h) | Il faut au moins 4 à 5 campagnes actives pour remplir les deux créneaux par heure avec 2h–2h30 de séparation. Ajouter une promo d'antenne, ou baisser la séparation stricte de campagne. |
| Créneaux rouges isolés | Les choisir à la main (menu du créneau), ou passer en « Programmer quand même ». |
| Beaucoup d'écarts « même heure que la veille » | Trop peu de campagnes pour tourner : en ajouter, ou laisser cette règle souple. |
| Une campagne sous son objectif tous les jours | Augmenter ses passages visés (son poids), ou réduire ceux des autres. |
| Un spot qui ne sort presque jamais | Vérifier son moment de diffusion et ses dates ; en parts automatiques, regarder le tableau jour par jour du panneau campagne. |
| Un jour réduit pour une campagne (orange dans le plan) | Normal si l'émission occupe la journée ; sinon ajouter un spot valable ce jour-là, ou assouplir la séparation par spot. |
Sur cadence.rendez-vous.la, la démo est commune à tous les visiteurs : si vous changez une règle, la personne qui ouvre la démo après vous voit votre règle.
| Partagé avec tous | Propre à chaque navigateur |
|---|---|
| Période, règles, émissions, campagnes (actives ou non), grille avec ses retouches. | Campagne sélectionnée, onglet ouvert, blocs repliés, mode de couleur, jour du conducteur. |
N'importe quel visiteur peut modifier la démo : c'est voulu (pas de compte). La copie de travail sur claude.ai (artifact) fonctionne, elle, en local : ses modifications restent dans le navigateur.
Exemple : promouvoir une soirée spéciale du jeudi 15/10 de 20h à 22h, avec trois messages « jeudi », « demain » et « ce soir », dans une semaine déjà programmée.
LIVE2.LIVE2 : vérifier ses passages en couleur franche et la zone de la soirée (barre pleine 20h–21h, pointillée 22h–23h).LIVE2 puis Programmer les créneaux vides.La démo tourne sur le serveur dédié Ikoula (Debian), derrière nginx, sans SSO (volontaire).
| Élément | Emplacement |
|---|---|
| Page | /srv/cadence/web/index.html |
| Service d'état partagé | /srv/cadence/api/serveur.py (Python, bibliothèque standard), unité systemd cadence-api, écoute 127.0.0.1:8797 |
| Données | /srv/cadence/donnees/etat.json et historique/ (200 dernières versions) |
| Vhost nginx | /etc/nginx/sites-available/cadence : page statique + /api/ vers le service ; noindex |
| Certificat | Let's Encrypt (webroot), renouvelé par le minuteur certbot |
| Source de référence | C:\Users\vMix\dedie-ikoula\cadence\ (page, script d'enveloppe, service, vhost, CADENCE.md) |
grille-autopromo.html dans le dossier source.python construire-index.py grille-autopromo.html index.htmlindex.html.nouveau), comparer l'empreinte md5sum, puis renommer. Aucun redémarrage.Si le format des données change, augmenter le numéro de version de la page : un visiteur dont l'état est d'un ancien format repart des données d'exemple.
Lister les versions : https://cadence.rendez-vous.la/api/historique. Puis, sur le serveur (utilisateur olivier) :
cd /srv/cadence/donnees && python3 -c "import json;a=json.load(open('etat.json'));b=json.load(open('historique/FICHIER.json'));b['version']=a['version']+1;json.dump(b,open('etat.json','w'),ensure_ascii=False)"
Le numéro de version est relevé pour que les navigateurs ouverts reprennent cette version au lieu de la réécraser.
systemctl status cadence-api ; journal : journalctl -u cadence-api./srv/cadence n'est pas dans le miroir de sauvegarde : la source de référence est le dossier dedie-ikoula\cadence.| Période | mercredi 14/10/2026 06h → mardi 20/10/2026 24h (7 jours) |
| Marge par défaut | 2 h |
| Séparation campagne | stricte 2h00, souple 2h30 |
| Séparation spot | stricte 4h00, souple 5h00 |
| Même heure que la veille | activée, souple |
| Créneau sans campagne conforme | laissé non programmé |
| Nuit | non programmée |
| Parts des spots | automatiques |
| Couleur | par campagne ; aucune campagne sélectionnée |
| Émission | Horaires | Marge |
|---|---|---|
| Le Club VIP | tous les jours 09h–10h | 2 h |
| Le Grand Direct | du lundi au vendredi 17h–19h | 2 h |
| Soirée spéciale Live | jeudi 15/10 20h–22h | 2 h |
| Week-end Sport | samedi et dimanche 14h–17h | 1 h (personnalisée) |
| Campagne | Promeut | Dates | Visés | Spots |
|---|---|---|---|---|
| VIP1 | Le Club VIP | 14/10 06h → 20/10 09h | 4/j | Générique · Demain 9h · Ce matin 9h |
| LIVE1 | Soirée spéciale Live | 14/10 06h → 15/10 20h | 5/j | Jeudi 20h · Demain soir · Ce soir 20h |
| DIRECT1 | Le Grand Direct | 14/10 06h → 20/10 17h | 3/j | Générique A · Générique B |
| SPORT1 | Week-end Sport | 14/10 06h → 18/10 14h | 3/j | Ce week-end · Demain 14h · Cet après-midi |
| APPLI1 | promo d'antenne | toute la période | 3/j | Téléchargez l'appli · Le direct dans l'appli |
| JEU1 | promo d'antenne | toute la période | 3/j | Le grand jeu · Comment jouer · Derniers jours (dès le 18/10) |
| PODCAST1 | promo d'antenne | toute la période | 2/j | Nouveaux podcasts · À réécouter |
| Créneau non programmé | Case rouge « ! » : aucune campagne conforme, à choisir à la main. |
| Écart | Passage qui enfreint une règle souple (ou stricte, s'il est manuel) ; entouré d'orange, compté au bilan. |
| Journée d'antenne | De 06h à 05h le lendemain ; une colonne de la grille. |
| Marge | Heures après la fin d'une émission où sa promo reste interdite. |
| Objectif réaliste | Passages visés, plafonnés à ce que la journée permet (émission, marge, séparations). |
| Part | Poids d'un spot dans sa campagne, automatique ou manuel. |
| Promo d'antenne | Campagne sans émission (appli, jeu, podcasts) : aucune interdiction horaire. |
| Séparation stricte / souple | Écart minimum jamais franchi / écart visé ; entre les deux, l'écart est compté. |