la_boucle_locale

La boucle locale — boucle.loretteville.ca

Programme d’achat local de Loretteville.ca. Ce dépôt est la seule source du site, du workflow n8n, de la structure de la base (data tables de n8n), des tests, du procédurier et de l’EFVP.

Nouveautés de la version 2.4 (1er novembre 2026)

Comment les modifications sont publiées

  1. Claude (ou vous) travaille sur une branche et ouvre une pull request. Les tests roulent automatiquement (onglet Checks).
  2. Vous relisez le résumé et cliquez Merge. Rien n’est publié avant.
  3. GitHub Actions (.github/workflows/deployer.yml) publie alors automatiquement :
    • site/ sur boucle.loretteville.ca, par GitHub Pages, directement depuis ce dépôt ;
    • le workflow dans votre n8n chez Hostinger, par l’API de n8n.
  4. Les data tables ne sont jamais modifiées automatiquement. Si une version change leur structure, la pull request l’indique et sheet/MIGRATIONS.md décrit les colonnes à ajouter à la main dans n8n avant de fusionner.

Réglage unique du déploiement automatique

Dans ce dépôt : Settings → Pages → Source : GitHub Actions (domaine boucle.loretteville.ca), puis Settings → Secrets and variables → Actions → New repository secret :

Secret Valeur
N8N_URL https://n8n.srv747998.hstgr.cloud
N8N_API_KEY Dans n8n : Settings → n8n API → Create an API key. GitHub n’a aucun accès à votre serveur : il envoie seulement le nouveau workflow à cette API de n8n, avec cette clé. Elle donne le contrôle des workflows : ne la mettez nulle part ailleurs, et remplacez-la si vous la croyez compromise. (L’API doit être active : variable N8N_PUBLIC_API_DISABLED absente ou false.)
N8N_WORKFLOW_ID Identifiant du workflow, dans son adresse : …/workflow/<identifiant> (après le premier import manuel).

Le premier import du workflow se fait à la main (étape 3 ci-dessous) ; les mises à jour suivantes sont automatiques. Pour redéployer sans changement : onglet Actions → Déployer → Run workflow.

Modifications faites directement dans n8n

La synchronisation va du dépôt vers n8n. Pour qu’une modification faite à la main dans n8n ne soit jamais écrasée :

Ensuite, demandez à Claude de reporter les modifications de cette branche dans les sources ; fusionnez sa pull request et fermez l’issue. Pour au contraire annuler les modifications faites dans n8n : Actions → Déployer → Run workflow en cochant forcer.

Mettre La boucle en maintenance

Modifiez site/etat.json (sur GitHub : crayon ✏️ → Commit changes, sur une branche puis fusion, ou directement sur main) :

{ "maintenance": { "debut": "2026-11-12 21:00", "fin": "2026-11-12 23:00", "avis_jours": 7, "message": "Mise à jour du système." } }

Heures du Québec. Un bandeau avertit les clients et les commerçants pendant avis_jours ; pendant la période, un écran de maintenance remplace les pages et aucun appel n’est fait à n8n ; tout revient seul à l’heure de fin. Pour annuler : vider debut.

Contenu

Mise en place

Suivez docs/MISE_EN_PLACE.md, étape par étape (DNS, préparation des données, Google Cloud, n8n, ses data tables et sa clé d’API, GitHub et ses secrets, textes à compléter, fusion, tests, sécurité, lancement).

Sécurité et confidentialité (ajouts de cette version)

Envois automatiques et approbations

| Courriel | Destinataire | Part… | |—|—|—| | Bienvenue, confirmation, codes, mot de passe | client ou commerce qui l’a demandé | immédiatement (action de la personne) | | Promotion (et nouvelles) approuvée / refusée | commerce | après votre décision (avec le texte final, et une note s’il a été corrigé) | | Trousse de publications du mois | vous | le 1er, automatiquement (rien n’est publié sans vous) | | Coordonnées du commerce (invitation à le contacter) | client | après votre approbation | | Rappels de promotions (J-14, J-4) | commerces sans soumission | seulement si vous approuvez (sinon rien après 2 jours) | | Commentaires du vendredi | commerces | seulement si vous approuvez (sinon rien après 2 jours) | | Gagnant du concours | gagnant | seulement si vous approuvez (sinon rien après 7 jours) | | Rapport du lundi, alertes de trafic, erreurs | vous | automatiquement |

Si personne n’approuve plus rien, le système cesse de solliciter les commerces et les clients.

Concours mensuel (« Mes chances ce mois-ci »)

1 participation par membre confirmé ; +1 par commerce visité par jour (avec ou sans promotion) ; +1 par commentaire approuvé ; +1 par Tournée locale (3 commerces le même jour) ; +2 Explorateur (5 commerces différents dans le mois) ; +1 Habitué (une visite chacun des 3 derniers mois). Les seuils sont dans CONCOURS (n8n/code/_commun.js). Tirage pondéré le 1er à 00 h 30, consigné dans la table Concours ; vous approuvez avant que le gagnant soit avisé. Les participations sans achat reçues par courriel ou par la poste s’inscrivent à la main dans la table Participations (2 par texte). Une personne qui ne veut pas participer : Concours = Non dans Clients.

Règles programmées

Pour que les courriels n’arrivent pas dans les pourriels

  1. Envoyer depuis votre domaine : c’est fait (info@loretteville.ca, SMTP de Hostinger). Vérifiez que SPF, DKIM et DMARC sont configurés pour loretteville.ca (hPanel → Courriels).
  2. Séparer les envois : garder les courriels transactionnels (codes, bienvenue, approbations) à part de l’infolettre.
  3. Courriels déjà ajustés dans le workflow :
    • un nom d’expéditeur toujours identique ;
    • l’expéditeur et l’adresse de réponse sont info@loretteville.ca, avec votre signature ;
    • le code de vérification est placé dans l’objet ;
    • aucun emoji ni lien raccourci ;
    • une limite de 3 envois par heure par adresse.
  4. Infolettre : elle doit contenir une adresse postale et un lien de désabonnement (LCAP).

Licences