# Audit fonctionnel — Globinours 1.0.0

Audit exécuté le 30 août 2026. Les contrôles automatisés utilisent une base SQLite temporaire et ne lisent ni ne modifient la base du refuge.

## Contrôles validés

- reconstruction complète du schéma et application ordonnée des migrations ;
- `PRAGMA integrity_check` et absence de relations étrangères invalides ;
- installation initiale, authentification, hachage des mots de passe et permissions ;
- parcours animal, note médicale, adoption et relations avec l’annuaire ;
- référentiels biologiques chat et chien ;
- notifications d’échéance ;
- création d’une sauvegarde, manifeste, empreintes, extraction de la base et contrôle SQLite ;
- pharmacie : réception, valorisation, consommation, historique et refus d’un stock négatif ;
- export RGPD et registre des accès privés ;
- purge à échéance du seul registre technique, sans suppression automatique des contacts ;
- appareils de confiance et révocation ;
- parité des catalogues français et anglais et cohérence des variables traduites ;
- validation syntaxique des contrôleurs, services et vues modifiés.

## Défauts corrigés pendant l’audit

1. Le formulaire de vermifugation utilisait le champ `medication_id` et le catalogue des médicaments ; il utilise désormais `dewormer_id` et le référentiel dédié.
2. Les actions de suppression et vérification d’une sauvegarde possèdent désormais leur jeton CSRF dans le HTML, sans dépendre de l’initialisation JavaScript.
3. Une archive créée n’était pas relue comme un tout hors restauration ; la vérification autonome contrôle maintenant chaque empreinte et la base extraite.
4. Une dépense médicamenteuse pouvait rester étrangère au coût de l’animal ; la consommation d’un lot tarifé crée désormais la dépense correspondante.

## Validations terrain encore nécessaires

Ces points dépendent d’un environnement réel et ne constituent pas des erreurs connues :

- réception effective des e-mails par le serveur choisi ;
- caméra et sélecteur de fichiers sur les modèles Android/iOS réellement utilisés ;
- tâches cron ou timer systemd sous l’utilisateur PHP de production ;
- restauration complète sur une copie d’installation avec ses médias réels ;
- installation et mise à niveau du futur paquet YunoHost ;
- ergonomie de la pharmacie avec les unités réellement employées par le refuge.

## Commandes de contrôle

```bash
php tests/run.php
php scripts/check_translations.php
php scripts/maintenance.php run
```

Une sauvegarde de production doit toujours être téléchargée ou répliquée hors du serveur. Une archive présente uniquement sur la même machine ne protège pas d’une panne matérielle.
