Nouvelle colonne `agent.droit_enveloppe_formation`, cochée par défaut, saisie à la création de l'agent et modifiable depuis sa fiche. Un agent sans ce droit : - ne voit plus le motif « Formation » dans le sélecteur de motif de l'éditeur de planning ni dans le modal de la vue individuelle ; - se voit refuser toute affectation de ce motif par le serveur, avec un message qui nomme le motif et l'agent (save_planning.php et update_agent_entry.php) ; - a une enveloppe de formation de 0 min au PTA annuel, et une ALERTE FORMATION_SANS_DROIT si des heures de formation subsistent dans son planning. À ne pas confondre avec `formation_repartition_annuelle`, qui existait déjà : celle-ci dit que la formation est déjà comptée dans la répartition annuelle — l'agent y a droit, l'enveloppe complémentaire n'est simplement pas ajoutée. Les deux règles sont désormais rassemblées dans AgentModel::trainingEnvelopeMinutes(), qui remplace les deux calculs « 840 ou 0 » jusque-là dupliqués. Le motif interdit reste affiché lorsqu'il est déjà celui de la plage en cours d'édition : le retirer de la liste changerait silencieusement le motif d'une saisie existante. C'est le contrôle de saisie, puis le serveur, qui demandent alors de corriger la plage. La migration est nommée v7_9b et non v7_10 : les fichiers sont joués dans l'ordre alphabétique, où « v7_10 » passerait avant « v7_8 ». 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.