Pular para o conteúdo principal

Site public

Le site public (page d'accueil, pages « À propos », actualités, réclamation) est servi par la même application que le SIG, sur bemba.ucp-pch.org. Cette page décrit ce que l'administrateur doit savoir : d'où viennent les chiffres, comment fonctionne la newsletter, comment créer les pages légales et ce que les endpoints publics exposent.

Chiffres vivants​

La section « Notre impact » de l'accueil lit GET /api/public/statistiques (anonyme) :

ChampCalcul
menagesEnregistresTous les ménages du registre, tous projets confondus, archivés compris
menagesBeneficiairesMénages ayant au moins un enrôlement actif
plaintesRecues, plaintesResolues, tauxResolutionPlaintes, résolues = statuts resolue, resolu, fermee
dateCalculHorodatage du calcul

La réponse est mise en cache 15 minutes dans le pool cache.app (Redis en production). Après un changement de code ou de données à répercuter immédiatement :

docker exec pch_backend su -s /bin/sh www-data -c 'cd /app && php bin/console cache:pool:clear cache.app'
Deux règles à ne pas défaire
  1. Compter tous les projets. En production, l'ensemble du registre appartient au PRSSB, projet archivé ; un filtre sur les projets actifs afficherait des zéros.
  2. Aucun agrégat sur les paiements. Ni montant ni nombre de paiements ni calendrier : un chiffre rafraîchi révélerait les dates de transfert. Décision du 28 septembre 2026.

Newsletter​

Inscription en double opt-in, table newsletter_abonnes (migration Version20260925_NewsletterAbonnes).

ÉtapeMécanisme
POST /api/public/newsletterEnregistre l'adresse en en_attente (ou la réactive) et dépose un message Messenger ; la réponse est identique quelle que soit l'adresse
Worker messenger:consume asyncEnvoie l'e-mail de confirmation (fr, pt, en, cr) via le SMTP du SIG ; nouvelles tentatives en cas d'échec
GET/POST /api/public/newsletter/confirmer/{token}Passe l'abonné en confirme
GET/POST /api/public/newsletter/desinscrire/{token}Passe l'abonné en desinscrit
GET /api/newsletter/abonnes (permission admin.settings)Liste des confirmés et effectifs ; ?format=csv pour l'outil d'envoi

Un renvoi de confirmation n'est possible qu'après 10 minutes. Les liens utilisent l'URL du frontend avec le /#/ du HashRouter.

SMTP

L'envoi passe par le worker, donc la requête du visiteur n'attend jamais le serveur SMTP. Vérifier que le worker tourne dans le conteneur (ps aux | grep messenger:consume) et que le port 587 sortant est ouvert. Sur preprod, un premier test avait échoué sur ce point.

Pages légales​

Deux contenus CMS de type page, slugs politica-de-privacidade et termos-de-utilizacao, en pt/fr/en. Ils sont créés et publiés par une commande idempotente :

docker exec pch_backend su -s /bin/sh www-data -c 'cd /app && php bin/console app:site-public:pages-legales'
# --forcer : remplace le texte d'une page existante par la version de référence

Le texte se modifie ensuite dans le back-office CMS. Le pied de page de l'accueil pointe sur ces slugs. Le texte initial doit être validé par l'UCP.

CMS public : ce qui est exposé​

  • GET /api/cms/public/articles, /pages, /categories, /{slug} : contenus publiés seulement. L'auteur est réduit à son nom et prénom ; ni e-mail ni identifiant, ni relecteur.
  • GET /api/cms/images/{path} : image à la une, anonyme uniquement pour un contenu publié ; 404 sinon.
  • Un lecteur en créole reçoit la version portugaise (le CMS n'a pas de colonne créole).

Réclamation publique​

Le formulaire /#/reclamation transmet toujours la réclamation à KoboToolbox (décision de septembre 2026 : ne pas créer directement une plainte dans le SIG). Voir PublicReclamationController.

Ce qui n'est pas encore fait​

Calendrier de paiement (abandonné pour raison de sécurité), carte de couverture, données ouvertes, colonnes créole du CMS, numéro WhatsApp et ligne verte en dur dans le code, photos réelles. Le benchmark et la cible sont dans docs/SITE_PUBLIC_BENCHMARK.md du dépôt.