Files
pta/docs/README.md
2026-08-20 17:00:06 +02:00

115 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```text
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.js` et `week-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.js` et la partie configuration de `coverage.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é :
```text
planning.php?structure_id=2&agent_id=7&week=2026-W31&focus=validation
```
## Installation
1. Configurer `config.php`.
2. Utiliser le schéma SQL correspondant à la V5.20.
3. Placer le dossier sur le serveur PHP.
4. Ouvrir `index.php` ou `planning.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 ; elle est appliquée
automatiquement au déploiement par le service `db-migrate` du docker-compose.
## 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`.
## V7.11 — Connexion par jeton, espace DSI et journal d’activité
`role.php` n’est plus un sélecteur de rôle : chaque utilisateur se connecte avec un jeton personnel
distribué par la DSI, dont la base ne conserve qu’une empreinte SHA-256. Un quatrième rôle `DSI`
ouvre `dsi.php` : gestion des comptes d’accès (dont les administrateurs Service Enfance) et lecture
du journal d’activité, qui trace les connexions, les écritures en base et les refus d’accès. La
migration `database/migration_v7_9e_dsi_comptes_journal.sql` est obligatoire ; elle crée aussi le
compte DSI d’installation dont le jeton, public, est à régénérer immédiatement. Voir
`README_V7_11.md`.
## V7.12 — Mot de passe des comptes privilégiés
Les comptes Service Enfance et DSI ajoutent un second facteur à leur jeton : un mot de passe choisi
par leur titulaire à sa première connexion, que la DSI ne peut qu’effacer, jamais lire. Les agents et
les responsables de lieu restent à un seul facteur. Migration
`database/migration_v7_9f_mot_de_passe_admin.sql`. Voir `README_V7_12.md`.
## V7.13 — Nom et prénom modifiables
La fiche agent laisse désormais corriger le nom et le prénom, à côté des autres champs déjà
modifiables. Le matricule et la quotité de travail restent immuables. Un renommage est journalisé
avec l’identité précédente. Aucune migration. Voir `README_V7_13.md`.
## V7.14 — Groupe de navigation « Management »
Les agents et les lieux d’affectation quittent l’onglet « Administration » pour deux onglets
distincts, réunis dans un groupe « Management » de la barre de navigation, au même titre que
« Piloter » ou « Planifier ». « Administration » ne conserve que les horaires de couverture.
Migration `database/migration_v7_9g_management.sql` (droits d’accès aux deux pages). Voir
`README_V7_14.md`.
## V7.15 — Affectations bornées par le contrat
Un agent ne peut plus être planifié avant sa date de début de contrat ni après sa date de fin, quel
que soit le chemin d’écriture (saisie, déplacement, copie de semaine, semaine type). La validation
signale les affectations devenues hors contrat, et raccourcir un contrat sous des affectations
existantes est refusé. Aucune migration. Voir `README_V7_15.md`.