La pile de test de la branche ne démarrait pas : « Connexion à la base impossible ». Trois causes cumulées, toutes corrigées. 1. PTA_DB_PORT et DB_PORT étaient passés à 9306. Ces variables désignent le port joint À L'INTÉRIEUR du réseau Docker, où MariaDB écoute sur 3306, et non un port publié sur l'hôte : la connexion était refusée. Elles reviennent à 3306, et le port hôte 9306 est désormais réellement publié par le service db (sur la boucle locale), pour un client SQL externe. 2. Le service db-migrate manquait sur la branche. Le schéma d'initialisation ne contient aucune des tables et vues d'accès V7.8 : sur un volume neuf, l'application refusait de démarrer. db-migrate applique maintenant tous les database/migration_*.sql, dont celle du tableau de bord V7.9 — plus aucune étape SQL manuelle. 3. Le défaut de PTA_DB_PASS (change_me) différait de celui de MARIADB_PASSWORD (pta). Sans fichier .env — et ce répertoire n'en a pas, il est ignoré par git — l'authentification échouait. Les deux défauts sont alignés. Le bandeau du tableau de bord ne prétend plus que « tous les lieux ont des horaires attendus » quand aucun lieu n'est enregistré. Vérifié : volume détruit puis « docker compose up -d --build » seul suffit à obtenir les onze pages en 200, l'atterrissage sur le tableau de bord et les deux migrations appliquées ; un second up les ignore ; la base répond sur 127.0.0.1:9306 ; la pile principale sur 8080 est restée intacte. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PTA V6 — application PHP MVC multipage
PTA n’est plus une SPA. Chaque fonction principale correspond à une page PHP distincte :
planning.php: saisie, brouillon, validation et semaines types ;pending.php: plannings en attente de validation ;coverage.php: contrôle des créneaux sans agent ;structures.php: planning hebdomadaire par lieu ;agents.php: planning mensuel et bilan par agent ;vacations.php: aperçu et enregistrement des vacances scolaires ;administration.php: lieux, agents et règles de couverture.
index.php redirige vers le choix de rôle lors de la première visite, puis vers la page d’accueil autorisée pour le profil sélectionné.
Architecture
page PHP
→ PageController
→ Models / Services
→ View dédiée
View
→ API JSON uniquement pour les actions asynchrones utiles
Les contrôleurs métier, modèles, services PDF et endpoints API de la V5.20 sont conservés. La différence principale porte sur l’interface : plus de routeur JavaScript, plus de vues cachées et plus de chargement de tous les modules sur une seule page.
JavaScript chargé par page
- Saisie :
planning-editor.jsetweek-templates.js; - À valider :
pending-validation.js; - Couverture :
coverage.js; - Par lieu :
structure-overview.js; - Par agent :
agent-overview.js; - Vacances :
vacation-calendar.js; - Administration :
administration.jset la partie configuration decoverage.js.
assets/js/page-bootstrap.js initialise uniquement les modules déclarés par la page et applique les filtres transmis dans l’URL.
Liens directs
Une page de contrôle peut ouvrir directement le planning concerné :
planning.php?structure_id=2&agent_id=7&week=2026-W31&focus=validation
Installation
- Configurer
config.php. - Utiliser le schéma SQL correspondant à la V5.20.
- Placer le dossier sur le serveur PHP.
- Ouvrir
index.phpouplanning.php.
Aucune migration SQL supplémentaire n’est nécessaire pour passer de la V5.20 à la V6.
Version 7
Voir README_V7.md pour le nouveau socle PTA annuel, les équipes des mercredis/vacances et les contrôles métier associés.
V7.2 — Vue annuelle
La page annual.php reproduit l’esprit du tableau annuel historique : douze mois côte à côte, codes AP/PP/AE/PE, couleurs métier, vacances scolaires et accès direct à la semaine à corriger. Voir README_V7_2.md.
V7.8 — Sécurité et droits en base
Les correctifs de sécurité et le déplacement de la matrice des droits dans des
vues SQL sont décrits dans README_V7_8.md. La migration
database/migration_v7_8_securite_acces.sql est obligatoire.
V7.4 — Rôles et droits d’accès
La première arrivée ouvre role.php. Les droits Agent, Responsable de structure et Service Enfance sont vérifiés dans les pages et les contrôleurs API. Voir README_V7_4.md.