Actualiser readme.md
Mise à jour des nouvelles fonctionnalités
This commit is contained in:
parent
0613fb91c3
commit
cb17bc6c14
1 changed files with 124 additions and 13 deletions
137
readme.md
137
readme.md
|
|
@ -29,27 +29,51 @@ L’identité de l’association est personnalisable, logo compris. Ce logo est
|
||||||
|
|
||||||
Le pied de page identifie clairement le projet, son année de développement, sa version et son développeur, [OverSu](https://oversu.fr), avec un accès direct au [code source](https://nnsprod.com/git/oversu/Globinours).
|
Le pied de page identifie clairement le projet, son année de développement, sa version et son développeur, [OverSu](https://oversu.fr), avec un accès direct au [code source](https://nnsprod.com/git/oversu/Globinours).
|
||||||
|
|
||||||
|
Le récit complet est conservé dans l’[Histoire de TWIX et Globinours](HISTORIQUE.md). Les changements techniques et fonctionnels sont consignés dans le [CHANGELOG](CHANGELOG.md). La feuille de route synthétique reste disponible plus bas et sa version illustrée dans l’application via **Évolutions**.
|
||||||
|
|
||||||
|
## 🐈 De TWIX à Globinours
|
||||||
|
|
||||||
|
Le projet est né au sein de l’association **Les Coussinets**, face à un constat très concret : les logiciels de refuge existants répondaient mal au travail quotidien. Les informations restaient dispersées, certaines opérations exigeaient trop de manipulations et des besoins vétérinaires ou administratifs essentiels manquaient.
|
||||||
|
|
||||||
|
L’ambition initiale n’était pas de construire un produit commercial, mais un compagnon de travail **pensé par un refuge, pour un refuge**. Le premier nom du logiciel fut **TWIX**, en hommage au premier chat sauvé par l’association.
|
||||||
|
|
||||||
|
Les premières versions reposaient déjà sur une architecture volontairement légère : PHP, SQLite, Bootstrap puis Tabler, une organisation modulaire et DomPDF pour les premiers documents. SQLite s’est imposé pour quatre raisons : aucune infrastructure de base de données complexe, sauvegardes simples, déplacement facile de l’installation et adaptation aux petites structures.
|
||||||
|
|
||||||
|
La fiche animale est devenue le premier véritable cœur fonctionnel, avant que le suivi vétérinaire — traitements, vaccins, protocoles, quarantaines, soins, poids et graphiques — puis la production documentaire ne prennent une place centrale. L’ergonomie est ensuite devenue un chantier permanent : réduire les clics, accélérer la saisie et préserver la lisibilité sur des écrans utilisés plusieurs centaines de fois par semaine.
|
||||||
|
|
||||||
|
Lorsque le projet a commencé à pouvoir servir d’autres associations, son code et son identité ont été progressivement ouverts et réorganisés. **TWIX est alors devenu Globinours**, surnom affectueux du même chat. La nouvelle identité graphique conserve cette histoire à travers une silhouette féline inspirée de Twix, des formes simples et des couleurs chaleureuses.
|
||||||
|
|
||||||
|
L’architecture a continué à s’alléger : DomPDF et les dépendances Composer ont finalement été remplacés par l’impression HTML/CSS du navigateur pour les fiches générées, tandis que LibreOffice reste utilisé pour convertir les modèles ODT lorsque cela est nécessaire.
|
||||||
|
|
||||||
## ✨ Ce que propose Globinours
|
## ✨ Ce que propose Globinours
|
||||||
|
|
||||||
### Gestion complète des animaux
|
### Gestion complète des animaux
|
||||||
|
|
||||||
|
- gestion multi-espèces : chats, chiens, NAC, animaux de ferme, faune sauvage et espèces personnalisées ;
|
||||||
|
- référentiel administrable avec catégorie, libellé, icône, couleur, ordre et désactivation sans perte des dossiers existants ;
|
||||||
|
- choix de l’espèce à la création, filtre dédié et badge visuel dans le listing ; les fonctions strictement félines, comme le FIV/FeLV et les portées, restent réservées aux chats ;
|
||||||
- identité, statut, localisation, âge, sexe, robe, race et identification ;
|
- identité, statut, localisation, âge, sexe, robe, race et identification ;
|
||||||
- historique automatique des changements de statut, salle, box et adresse, avec état avant/après et utilisateur responsable ;
|
- historique automatique des changements de statut, salle, box et adresse, avec état avant/après et utilisateur responsable ;
|
||||||
- profil de vie en trois états — oui, non ou inconnu — pour les chiens, chats, enfants et la propreté, avec lecture compacte et tris dédiés dans le listing ;
|
- profil de vie en trois états — oui, non ou inconnu — pour les chiens, chats, enfants et la propreté, avec lecture compacte et tris dédiés dans le listing ;
|
||||||
- entrée structurée avec date, mode, motif, déposant lié à l’annuaire, commune d’origine et circonstances, synchronisée avec le registre administratif ;
|
- entrée structurée avec date, mode, motif, déposant lié à l’annuaire, commune d’origine et circonstances, synchronisée avec le registre administratif ; les décès et entrées en EHPAD du propriétaire sont distingués ;
|
||||||
- listing opérationnel limité par défaut aux animaux vivants actuellement pris en charge, avec accès filtré aux dossiers adoptés, décédés ou enfuis ;
|
- listing opérationnel limité par défaut aux animaux vivants actuellement pris en charge, avec accès filtré aux dossiers adoptés, décédés ou enfuis ;
|
||||||
- suivi FIV/FeLV, stérilisation, poids, vaccins, traitements et notes médicales ;
|
- choix mémorisé par utilisateur entre un tableau détaillé et une mosaïque photographique responsive pouvant afficher sept animaux par ligne ;
|
||||||
|
- suivi FIV/FeLV, stérilisation, poids, vaccins, traitements, ordonnances, analyses biologiques et notes médicales ;
|
||||||
- traçabilité vaccinale du fabricant, du lot et de son expiration, du vétérinaire et de la personne ayant réellement administré le vaccin ;
|
- traçabilité vaccinale du fabricant, du lot et de son expiration, du vétérinaire et de la personne ayant réellement administré le vaccin ;
|
||||||
- historique chronologique attribué aux utilisateurs ;
|
- historique chronologique attribué aux utilisateurs ;
|
||||||
|
- ouverture systématique des fiches sur l’onglet Identité, sauf lorsqu’une action redirige explicitement vers un onglet concerné ;
|
||||||
- exports CSV unitaires ou regroupés en ZIP pour assurer la portabilité des données ;
|
- exports CSV unitaires ou regroupés en ZIP pour assurer la portabilité des données ;
|
||||||
- dossier de décès avec cause, contexte, vétérinaire, crématorium et prise en charge ;
|
- dossier de décès avec cause, contexte, vétérinaire, crématorium et prise en charge ;
|
||||||
- registre des sorties synchronisé avec les modifications du dossier de décès ;
|
- registre des sorties synchronisé avec les modifications du dossier de décès ;
|
||||||
- parcours chronologique des réservations, placements en famille d’accueil, adoptions définitives, retours et annulations, sans mode d’essai ;
|
- parcours chronologique des réservations, placements en famille d’accueil, adoptions définitives, retours et annulations, sans mode d’essai ;
|
||||||
- photos publiques, privées et médicales ;
|
- photos publiques, privées et médicales ;
|
||||||
|
- mini-site public facultatif alimenté par les animaux disponibles à l’adoption, avec trois thèmes légers, page libre, dons et contact ;
|
||||||
|
- aperçu agrandi des photos directement au survol du listing ;
|
||||||
- orientation, redimensionnement et compression automatiques des nouvelles images, avec suppression de leurs métadonnées ;
|
- orientation, redimensionnement et compression automatiques des nouvelles images, avec suppression de leurs métadonnées ;
|
||||||
- archivage, corbeille et restauration ;
|
- archivage, corbeille et restauration ;
|
||||||
- fiche A4 imprimable ou enregistrable en PDF ;
|
- fiche A4 imprimable ou enregistrable en PDF ;
|
||||||
- cartographie des lieux de récupération et d’accueil.
|
- cartographie des lieux de récupération et d’accueil ;
|
||||||
|
- parcours des chats libres avec site ou colonie, commune, localisation interne, référent, capture, remise en liberté et état de suivi ;
|
||||||
|
|
||||||
### Portées et groupes inséparables
|
### Portées et groupes inséparables
|
||||||
|
|
||||||
|
|
@ -66,6 +90,7 @@ Le pied de page identifie clairement le projet, son année de développement, sa
|
||||||
- salles de soins et de quarantaine avec box modulables ;
|
- salles de soins et de quarantaine avec box modulables ;
|
||||||
- plusieurs animaux par box ;
|
- plusieurs animaux par box ;
|
||||||
- traitements attendus affichés pendant la tournée ;
|
- traitements attendus affichés pendant la tournée ;
|
||||||
|
- référentiel de médicaments trié alphabétiquement et création à la volée lors du démarrage d’un traitement ;
|
||||||
- validation individuelle ou collective ;
|
- validation individuelle ou collective ;
|
||||||
- suivi de l’alimentation, de l’eau, des selles, des urines et de l’état général ;
|
- suivi de l’alimentation, de l’eau, des selles, des urines et de l’état général ;
|
||||||
- commentaire et photo en cas d’anomalie ;
|
- commentaire et photo en cas d’anomalie ;
|
||||||
|
|
@ -81,8 +106,10 @@ Le pied de page identifie clairement le projet, son année de développement, sa
|
||||||
### Documents et administratif
|
### Documents et administratif
|
||||||
|
|
||||||
- registre annuel des entrées et sorties ;
|
- registre annuel des entrées et sorties ;
|
||||||
|
- bilans statistiques filtrables et imprimables par commune d’origine pour accompagner les demandes de subvention ;
|
||||||
- modèles ODT accessibles depuis l’espace administratif ;
|
- modèles ODT accessibles depuis l’espace administratif ;
|
||||||
- contrats d’adoption et documents d’abandon préremplis ;
|
- contrats d’adoption et documents d’abandon préremplis ;
|
||||||
|
- certificat de visite pré-adoption disponible en ODT et en PDF imprimable depuis l’administration ;
|
||||||
- documents pour bénévoles et familles d’accueil ;
|
- documents pour bénévoles et familles d’accueil ;
|
||||||
- conversion PDF avec LibreOffice ;
|
- conversion PDF avec LibreOffice ;
|
||||||
- documents HTML A4 imprimables depuis le navigateur.
|
- documents HTML A4 imprimables depuis le navigateur.
|
||||||
|
|
@ -124,6 +151,7 @@ refuge/
|
||||||
│ └── documents/ # Modèles ODT du logiciel
|
│ └── documents/ # Modèles ODT du logiciel
|
||||||
├── storage/
|
├── storage/
|
||||||
│ ├── backups/ # Sauvegardes ZIP
|
│ ├── backups/ # Sauvegardes ZIP
|
||||||
|
├── CHANGELOG.md # Historique versionné des changements
|
||||||
└── README.md
|
└── README.md
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -238,10 +266,27 @@ php -d upload_max_filesize=250M -d post_max_size=260M -d max_execution_time=600
|
||||||
|
|
||||||
Ouvrir `http://127.0.0.1:8000/setup` et créer le premier compte administrateur. Les migrations SQL sont appliquées automatiquement au démarrage.
|
Ouvrir `http://127.0.0.1:8000/setup` et créer le premier compte administrateur. Les migrations SQL sont appliquées automatiquement au démarrage.
|
||||||
|
|
||||||
|
Pour une démonstration temporaire à distance, le routeur `public/router.php` permet d’utiliser le serveur PHP intégré, puis un tunnel HTTPS éphémère. Cette méthode est réservée aux tests et doit être arrêtée après la présentation.
|
||||||
|
|
||||||
## 🌐 Déploiement
|
## 🌐 Déploiement
|
||||||
|
|
||||||
La racine du serveur web doit pointer vers `public/`, jamais vers la racine complète du projet. `data/` et `storage/` ne doivent pas être servis par HTTP.
|
La racine du serveur web doit pointer vers `public/`, jamais vers la racine complète du projet. `data/` et `storage/` ne doivent pas être servis par HTTP.
|
||||||
|
|
||||||
|
Ainsi, si le projet se trouve dans `/var/www/globinours`, la racine documentaire du domaine doit être `/var/www/globinours/public`. L’adresse publique reste alors `https://lescoussinets.org/` — il ne faut pas ajouter `/public/` dans l’URL. Le fichier `public/.htaccess` fourni redirige les routes applicatives vers `index.php` sur Apache ou LiteSpeed, sous réserve que les règles `.htaccess` soient autorisées.
|
||||||
|
|
||||||
|
Configuration Nginx équivalente dans le bloc du domaine :
|
||||||
|
|
||||||
|
```nginx
|
||||||
|
root /var/www/globinours/public;
|
||||||
|
index index.php;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php?$query_string;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Le bloc PHP-FPM habituel de l’hébergeur doit ensuite exécuter les fichiers `.php`. Sur un panneau d’hébergement, ce réglage porte généralement le nom **Document root**, **Racine du document** ou **Dossier public**.
|
||||||
|
|
||||||
Avant la mise en production :
|
Avant la mise en production :
|
||||||
|
|
||||||
- activer HTTPS ;
|
- activer HTTPS ;
|
||||||
|
|
@ -271,31 +316,60 @@ Le projet ne dispose pas encore d’une suite automatisée complète. Les parcou
|
||||||
|
|
||||||
| Étape | État | Contenu |
|
| Étape | État | Contenu |
|
||||||
|---|:---:|---|
|
|---|:---:|---|
|
||||||
|
| Origines de TWIX | ✅ Historique | Besoin terrain des Coussinets, socle PHP/SQLite, premières fiches animales, médical et documents PDF |
|
||||||
|
| Passage à Globinours | ✅ Historique | Ouverture à d’autres associations, réorganisation du code, nouvelle identité et hommage durable à Twix |
|
||||||
| Fondations | ✅ Livré | Animaux, portées, médical, annuaire, documents, adoptions et tournées tablette |
|
| Fondations | ✅ Livré | Animaux, portées, médical, annuaire, documents, adoptions et tournées tablette |
|
||||||
| Continuité | ✅ Livré | Utilisateurs, audit, sauvegarde/restauration, archivage, corbeille et décès |
|
| Continuité | ✅ Livré | Utilisateurs, audit, sauvegarde/restauration, archives recherchables et triables, consultation des fiches archivées, corbeille et décès |
|
||||||
| Dashboard opérationnel | ✅ Livré | Synthèse des urgences, soins, échéances, quarantaines, poids, tournées du jour et qualité des fiches |
|
| Dashboard opérationnel | ✅ Livré | Synthèse des urgences, soins, échéances, quarantaines, poids, tournées du jour et qualité des fiches |
|
||||||
| Statistiques du refuge | ✅ Livré | Comparaison N−1, activité, médical, profils, couleurs, races, âges, origines, séjours et photographie actuelle |
|
| Statistiques du refuge | ✅ Livré | Comparaison N−1, activité, médical, profils, couleurs, races, âges, origines, séjours et photographie actuelle |
|
||||||
|
| Bilans communaux | ✅ Livré | Filtre annuel ou global par commune d’origine, villes cliquables, indicateurs recalculés et impression pour les subventions |
|
||||||
| Rôles et permissions | ✅ Livré | Accès par groupe et par module, séparation voir/modifier, navigation adaptée et contrôle serveur |
|
| Rôles et permissions | ✅ Livré | Accès par groupe et par module, séparation voir/modifier, navigation adaptée et contrôle serveur |
|
||||||
| Historique des emplacements | ✅ Livré | Chronologie avant/après des statuts, salles, box et adresses, attribution utilisateur et export CSV |
|
| Lieux de vie | ✅ Livré | Chronologie avant/après des statuts, salles, box, familles et adresses, attribution utilisateur et export CSV |
|
||||||
| Médias plus légers | ✅ Livré | Compression, orientation, redimensionnement et nettoyage des métadonnées à l’import |
|
| Médias plus légers | ✅ Livré | Compression, orientation, redimensionnement et nettoyage des métadonnées à l’import |
|
||||||
| Bilans annuels et subventions | ✅ Livré | Statistiques, bilan, demandes, checklist intelligente, validité des pièces, alertes et coffre documentaire privé |
|
| Bilans annuels et subventions | ✅ Livré | Statistiques, bilan, demandes, checklist intelligente, validité des pièces, alertes et coffre documentaire privé |
|
||||||
| Portabilité | ✅ Livré | Exports CSV par domaine et archive ZIP complète, sans secrets ni mots de passe |
|
| Portabilité | ✅ Livré | Exports CSV par domaine et archive ZIP complète, sans secrets ni mots de passe |
|
||||||
| Nettoyage et durcissement | ✅ Livré | Migrations strictes, erreurs non divulguées, routes DEV verrouillées, HTML et intégrité SQLite contrôlés |
|
| Nettoyage et durcissement | ✅ Livré | Migrations strictes, erreurs non divulguées, routes DEV verrouillées, HTML et intégrité SQLite contrôlés |
|
||||||
| Profil de vie | ✅ Livré | Compatibilité chats, chiens et enfants, propreté en trois états et indicateurs compacts dans le listing |
|
| Profil de vie | ✅ Livré | Compatibilité chats, chiens et enfants, propreté en trois états et indicateurs compacts dans le listing |
|
||||||
| Entrées structurées | ✅ Livré | Mode et motif d’entrée, déposant, commune de provenance, circonstances, registre synchronisé et statistiques dédiées |
|
| Entrées structurées | ✅ Livré | Mode et motif d’entrée, déposant, commune de provenance, circonstances, registre synchronisé et statistiques dédiées |
|
||||||
|
| Situations du propriétaire | ✅ Livré | Décès, santé ou hospitalisation et entrée durable en EHPAD/établissement distingués dans les fiches, exports et statistiques |
|
||||||
| Traçabilité vaccinale | ✅ Livré | Fabricant, lot, expiration, intervenant réel, vétérinaire et distinction avec l’utilisateur ayant saisi l’acte |
|
| Traçabilité vaccinale | ✅ Livré | Fabricant, lot, expiration, intervenant réel, vétérinaire et distinction avec l’utilisateur ayant saisi l’acte |
|
||||||
| Identification structurée | ✅ Livré | Type, numéro, date de pose et statut d’enregistrement I-CAD, sans déduire les données historiques inconnues |
|
| Référentiel des médicaments | ✅ Livré | Sélection alphabétique et création à la volée du nom, de la molécule et de la forme depuis un nouveau traitement |
|
||||||
|
| Chats libres | ✅ Livré | Statut actif distinct du refuge, site ou colonie, référent d’annuaire, capture, remise en liberté, suivi et statistiques dédiées |
|
||||||
|
| Navigation des fiches | ✅ Livré | Identité ouverte par défaut et conservation des liens ciblés vers le médical, les photos, les portées et les autres onglets |
|
||||||
|
| Certificat pré-adoption | ✅ Livré | Modèle administratif vierge en ODT et aperçu PDF, à remettre au moins sept jours avant la cession |
|
||||||
|
| Identification structurée | ✅ Livré | Type, numéro, date de pose, statut d’enregistrement et synchronisation manuelle I-CAD compatible avec les formulaires actuels et historiques |
|
||||||
| Stérilisation structurée | ✅ Livré | État inconnu/non/oui, date, vétérinaire, cabinet et synchronisation depuis les notes médicales |
|
| Stérilisation structurée | ✅ Livré | État inconnu/non/oui, date, vétérinaire, cabinet et synchronisation depuis les notes médicales |
|
||||||
| Parcours de placement | ✅ Livré | Réservations, familles d’accueil, adoptions définitives, retours, annulations, contacts, motifs et registre synchronisé, sans essai d’adoption |
|
| Parcours d’accueil | ✅ Livré | Réservations, familles d’accueil, adoptions définitives, retours, annulations, contacts, motifs et registre synchronisé, sans essai d’adoption |
|
||||||
| Disponibilité à l’adoption | ✅ Livré | État à définir/non disponible/disponible, date d’ouverture, motif et filtre opérationnel du listing |
|
| Disponibilité à l’adoption | ✅ Livré | État à définir/non disponible/disponible, date d’ouverture, motif et filtre opérationnel du listing |
|
||||||
| Migration depuis ASM3 | ✅ Livré | Assistant administratif : analyse, simulation, sauvegarde et import des animaux, contacts, mouvements, médical, poids et portées |
|
| Migration depuis ASM3 | ✅ Livré | Assistant administratif : exports MySQL ou PostgreSQL, analyse, simulation, sauvegarde transactionnelle et import des animaux, contacts, mouvements, médical, poids et portées, en fusion ou remplacement |
|
||||||
|
| Photothèque ASM3 | ✅ Livré | Rattachement DBFS, import idempotent, optimisation, visibilité publique et choix automatique des photos principales |
|
||||||
|
| Vues du listing | ✅ Livré | Tableau de gestion ou mosaïque photographique responsive, choix conservé par utilisateur et aperçu agrandi au survol |
|
||||||
|
| Filiation et familles d’accueil | ✅ Livré | Création d’une portée depuis des fiches existantes, rattachement ultérieur de chatons et sélection d’une FA de l’annuaire lors d’un changement d’emplacement |
|
||||||
|
| Réinitialisation et démonstration | ✅ Livré | Remise à zéro sécurisée ou chargement d’un jeu fictif depuis les paramètres, avec sauvegarde automatique et conservation des comptes et réglages |
|
||||||
|
| Gestion multi-espèces | ✅ Livré | Référentiel extensible, catégories, icônes et couleurs, filtre du listing, imports compatibles et fonctions félines affichées uniquement pour les chats |
|
||||||
|
| Mémoire des décès | ✅ Livré | Total historique complet, causes globales et séparation explicite entre décès datés et décès sans date certaine |
|
||||||
|
| Décès connus à l’année | ✅ Livré | Précision annuelle sans fausse date, âge au décès, décès après adoption et médailles mémorielles conservés dans les imports historiques |
|
||||||
|
| Statistiques historiques réconciliées | ✅ Livré | Entrées, sorties, adoptions, naissances, vaccinations et médical consolidés depuis les fiches métier, avec événements non datés séparés de la chronologie |
|
||||||
|
| Vermifuges | ✅ Livré | Catalogue distinct des médicaments (9 produits initiaux), historique structuré, échéances selon l’âge, rythme trimestriel adulte, administration groupée des portées et aperçu médical |
|
||||||
|
| Ordonnances et analyses | ✅ Livré | Documents privés, photo sur tablette, liaison aux traitements, résultats structurés, courbes par paramètre et références configurables par analyseur et espèce |
|
||||||
|
| Mini-site public | ✅ Livré | Accueil, catalogue multi-espèces, fiches d’adoption, page libre, dons, contact et trois thèmes CSS légers, avec publication explicite animal par animal |
|
||||||
|
| Tarifs et coûts | ✅ Livré | Grilles de structures, coût net figé, résumé dédié dans la fiche animale et statistiques financières |
|
||||||
|
| Navigation des paramètres | ✅ Livré | Une liste unique garantit les mêmes rubriques, icônes et ordre dans la roue et dans la navigation interne |
|
||||||
|
| Internationalisation | 🚧 En cours | Parcours métier et techniques bilingues, décès, archives, portées et inséparables compris ; derniers fragments communs en audit |
|
||||||
|
| Annuaire structuré | ✅ Livré | Personnes et structures : familles d’accueil, vétérinaires, cabinets, fourrières, crématoriums, adoptants, bénévoles et partenaires |
|
||||||
| Qualité de production | 🔎 À étudier | Tests automatisés étendus, déploiement reproductible et comparaison avec Animal Shelter Manager |
|
| Qualité de production | 🔎 À étudier | Tests automatisés étendus, déploiement reproductible et comparaison avec Animal Shelter Manager |
|
||||||
|
|
||||||
La roadmap illustrée et l’historique des grandes évolutions sont également consultables directement dans l’application depuis le lien **Évolutions** du pied de page.
|
La roadmap illustrée et l’historique des grandes évolutions sont également consultables directement dans l’application depuis le lien **Évolutions** du pied de page. Le détail exhaustif destiné au suivi Git se trouve dans [CHANGELOG.md](CHANGELOG.md).
|
||||||
|
|
||||||
|
### Remise à zéro et base de démonstration
|
||||||
|
|
||||||
|
La page **Paramètres → Données et démo** est réservée aux administrateurs. Elle propose deux opérations protégées par une phrase de confirmation : vider toutes les données métier, ou les remplacer par un jeu entièrement fictif couvrant animaux, annuaire, portée, groupe inséparable, famille d’accueil, médical, poids, vaccins et décès. Une sauvegarde ZIP complète est créée avant chaque opération.
|
||||||
|
|
||||||
|
Les utilisateurs, rôles et permissions, paramètres de l’association, identité visuelle, modèles documentaires et sauvegardes existantes sont conservés. Les médias animaliers et justificatifs de subvention liés aux anciennes données sont retirés après validation de la transaction. Le jeu fictif est destiné aux démonstrations et ne doit jamais être confondu avec des données réelles.
|
||||||
|
|
||||||
### Analyser une sauvegarde ASM3
|
### Analyser une sauvegarde ASM3
|
||||||
|
|
||||||
L’analyseur ne modifie ni le dump source ni la base Globinours. Il accepte les exports SQL ASM3 composés d’instructions `INSERT`, y compris lorsque leurs contenus occupent plusieurs lignes.
|
L’analyseur ne modifie ni le dump source ni la base Globinours. Il accepte les exports MySQL composés d’instructions `INSERT`, y compris lorsque leurs contenus occupent plusieurs lignes, ainsi que les sauvegardes PostgreSQL `.pgsql` utilisant les blocs `COPY ... FROM stdin`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
php scripts/asm3-analyze.php chemin/vers/dump.sql
|
php scripts/asm3-analyze.php chemin/vers/dump.sql
|
||||||
|
|
@ -311,16 +385,33 @@ php scripts/asm3-contacts.php chemin/vers/dump.sql --apply
|
||||||
php scripts/asm3-movements.php chemin/vers/dump.sql --apply
|
php scripts/asm3-movements.php chemin/vers/dump.sql --apply
|
||||||
php scripts/asm3-clinical.php chemin/vers/dump.sql --apply
|
php scripts/asm3-clinical.php chemin/vers/dump.sql --apply
|
||||||
php scripts/asm3-litters.php chemin/vers/dump.sql --apply
|
php scripts/asm3-litters.php chemin/vers/dump.sql --apply
|
||||||
|
# Reprendre les raisons d’entrée et les communes conservées en texte libre :
|
||||||
|
php scripts/recover-asm3-intake.php chemin/vers/dump.sql
|
||||||
|
php scripts/recover-asm3-intake.php chemin/vers/dump.sql --apply
|
||||||
```
|
```
|
||||||
|
|
||||||
Le premier rapport inventorie les tables et les domaines migrables. Le plan JSON convertit ensuite chaque fiche animale vers les champs Globinours et la classe en `create`, `match` ou `review` en comparant identification, code interne, nom et naissance avec la base actuelle.
|
Le premier rapport inventorie les tables et les domaines migrables. Le plan JSON convertit ensuite chaque fiche animale vers les champs Globinours et la classe en `create`, `match` ou `review`. Une identification identique ou le couple nom + naissance permettent un rapprochement sûr. Le code refuge n’est jamais utilisé seul entre deux sauvegardes historiques : ASM3 peut l’avoir réattribué après une remise à zéro et Globinours suffixe alors le code importé sans confondre deux animaux.
|
||||||
|
|
||||||
|
La reprise des entrées lit le champ ASM3 `REASONFORENTRY`, conserve son texte dans les circonstances et ne structure une commune que lorsqu’elle a été relue comme lieu réel de prise en charge. Une sauvegarde précède l’écriture et un CSV distingue les communes certaines des dossiers ambigus.
|
||||||
|
|
||||||
Sans `--apply`, les commandes restent en simulation. En mode réel, elles exigent une confirmation textuelle, créent une sauvegarde, utilisent des transactions et mémorisent les correspondances ASM3 afin qu’une reprise ne duplique rien. Les rapprochements et cas ambigus ne sont jamais fusionnés automatiquement.
|
Sans `--apply`, les commandes restent en simulation. En mode réel, elles exigent une confirmation textuelle, créent une sauvegarde, utilisent des transactions et mémorisent les correspondances ASM3 afin qu’une reprise ne duplique rien. Les rapprochements et cas ambigus ne sont jamais fusionnés automatiquement.
|
||||||
|
|
||||||
L’ensemble est également disponible sans terminal dans **Paramètres → Migration ASM3**. L’administrateur dépose le dump, consulte les volumes et ambiguïtés, puis confirme l’import complet. Les animaux, contacts, rôles, adoptions, placements en FA, retours, vaccinations, historiques médicaux, poids et portées sont pris en charge. Si un dump SQL ne contient que l’index des médias et pas leurs données binaires, l’assistant l’indique explicitement au lieu de créer des fichiers vides.
|
L’ensemble est également disponible sans terminal dans **Paramètres → Migration ASM3**. L’administrateur dépose un fichier `.sql` ou `.pgsql`, consulte les volumes et ambiguïtés, puis confirme l’import complet. Les animaux, contacts, rôles, adoptions, placements en FA, retours, vaccinations, historiques médicaux, poids et portées sont pris en charge. Les correspondances sûres sont reliées à la sauvegarde ancienne afin que leurs anciens événements rejoignent la bonne fiche actuelle. Si un dump ne contient que l’index des médias et pas leurs données binaires, l’assistant l’indique explicitement au lieu de créer des fichiers vides.
|
||||||
|
|
||||||
|
Lorsque les fichiers physiques ASM3 sont fournis séparément, l’importeur de photos recroise les tables `media` et `dbfs` avec les correspondances animales déjà mémorisées. Il commence par une simulation, vérifie chaque image, crée une sauvegarde complète, optimise les fichiers et les importe dans une transaction. Les photos sont publiques et la marque `WebsitePhoto` d’ASM3 désigne la photo principale ; les médias Globinours déjà présents sont conservés. Les liens techniques enregistrés rendent une relance idempotente.
|
||||||
|
|
||||||
Deux stratégies sont proposées dans l’interface : **Fusionner** conserve les données Globinours et ignore les rapprochements ambigus ; **Remplacer les données métier** vide les animaux, l’annuaire et leur historique opérationnel avant l’import. Ce second mode conserve les utilisateurs, rôles, paramètres de l’association et dossiers de subvention. Il exige la phrase `REMPLACER PAR ASM3`. Une sauvegarde est créée avant l’opération et nettoyage plus import sont réunis dans une transaction unique : une erreur annule l’ensemble.
|
Deux stratégies sont proposées dans l’interface : **Fusionner** conserve les données Globinours et ignore les rapprochements ambigus ; **Remplacer les données métier** vide les animaux, l’annuaire et leur historique opérationnel avant l’import. Ce second mode conserve les utilisateurs, rôles, paramètres de l’association et dossiers de subvention. Il exige la phrase `REMPLACER PAR ASM3`. Une sauvegarde est créée avant l’opération et nettoyage plus import sont réunis dans une transaction unique : une erreur annule l’ensemble.
|
||||||
|
|
||||||
|
La sauvegarde préalable ferme explicitement les curseurs SQLite de l’analyse avant la création de l’instantané, afin d’éviter tout verrou interne pendant `VACUUM INTO`. Les limites PHP réellement actives sont affichées sur la page de dépôt et les erreurs de téléversement sont traduites précisément en français.
|
||||||
|
|
||||||
|
Les animaux historiques importés par ASM3 restent accessibles dans **Animaux → Archives**. Cette vue reprend la recherche, les filtres et les tris du listing courant, notamment pour isoler les animaux décédés. Une fiche archivée peut être consultée avec son historique, son médical et ses documents, puis restaurée si nécessaire ; elle demeure exclue du suivi courant et des statistiques opérationnelles.
|
||||||
|
|
||||||
|
### Récupération d'archives fragmentaires
|
||||||
|
|
||||||
|
Un outillage complémentaire permet de reconstruire un historique à partir de sources hétérogènes lorsque la base d'origine est incomplète : exports I-CAD, contrats d'adoption numérisés et registre mémoriel des décès. Les scripts d'analyse produisent des CSV de rapprochement et séparent systématiquement les correspondances sûres, les anomalies et les dossiers à vérifier. L'import final fonctionne d'abord en simulation, crée une sauvegarde ZIP en mode réel, puis écrit animaux, contacts, entrées, sorties, adoptions, décès et fratries dans une transaction unique avec contrôle des clés étrangères.
|
||||||
|
|
||||||
|
Les décès dont la date exacte n'a pas pu être retrouvée restent enregistrés avec une précision `inconnue`, leur âge connu et les informations mémorielles disponibles. Ils sont visibles dans le dossier de l'animal sans être artificiellement attribués à une année dans les statistiques. Chaque élément importé conserve enfin un lien technique vers sa source afin de permettre un audit ou une reprise sans doublon.
|
||||||
|
|
||||||
La synthèse anonymisée des formulaires communaux est disponible dans [docs/ANALYSE_SUBVENTIONS.md](docs/ANALYSE_SUBVENTIONS.md).
|
La synthèse anonymisée des formulaires communaux est disponible dans [docs/ANALYSE_SUBVENTIONS.md](docs/ANALYSE_SUBVENTIONS.md).
|
||||||
|
|
||||||
### Bilans et demandes de subvention
|
### Bilans et demandes de subvention
|
||||||
|
|
@ -342,12 +433,22 @@ Cet outil prépare le noyau commun des dossiers, sans prétendre remplacer les f
|
||||||
|
|
||||||
## 📊 Statistiques internes
|
## 📊 Statistiques internes
|
||||||
|
|
||||||
Le dashboard est la page d’accueil de Globinours et indique ce qui demande une action aujourd’hui. La page **Statistiques** le complète en analysant l’activité dans le temps. Une année peut être comparée à N−1 et étudiée par mouvements, adoptions, décès, naissances, activité médicale, sexe, âge à l’entrée, couleur, race, espèce, origine et durée de séjour. Une photographie séparée décrit les animaux actuellement pris en charge afin de ne pas la confondre avec les données historiques.
|
Le dashboard est la page d’accueil de Globinours et indique ce qui demande une action aujourd’hui. La page **Statistiques** le complète en analysant l’activité dans le temps. Une année peut être comparée à N−1 et étudiée par animaux distincts pris en charge, mouvements, adoptions, décès, naissances, activité médicale, sexe, âge à l’entrée, couleur, race, espèce, origine et durée de séjour. Le choix **Toutes les années** consolide l’historique complet et remplace le comparatif N−1 par une courbe ainsi qu’un tableau annuel. Les dossiers historiques sans année d’entrée connue figurent dans le total général, mais jamais dans une année arbitraire. Une photographie séparée décrit les animaux actuellement pris en charge afin de ne pas la confondre avec les données historiques.
|
||||||
|
|
||||||
Le dashboard signale également les fiches actives auxquelles il manque une date de naissance, un sexe, une couleur, une race, une origine, une identification, la confirmation I-CAD, l’état de stérilisation ou la disponibilité à l’adoption. Chaque compteur ouvre le listing déjà filtré. Les animaux explicitement non stérilisés sont présentés séparément comme information de suivi.
|
Le dashboard signale également les fiches actives auxquelles il manque une date de naissance, un sexe, une couleur, une race, une origine, une identification, la confirmation I-CAD, l’état de stérilisation ou la disponibilité à l’adoption. Chaque compteur ouvre le listing déjà filtré. Les animaux explicitement non stérilisés sont présentés séparément comme information de suivi.
|
||||||
|
|
||||||
|
Les dépenses vétérinaires peuvent être analysées par commune d’origine, cabinet et catégorie d’acte. Globinours affiche le coût total, le nombre d’animaux du périmètre, ceux ayant réellement généré une dépense, la moyenne sur l’ensemble des animaux, la moyenne sur les seuls animaux avec frais et leur médiane. Cette lecture produit des chiffres directement exploitables pour argumenter une demande de subvention communale sans laisser un cas médical exceptionnel fausser toute l’analyse.
|
||||||
|
|
||||||
|
Pour une année, le périmètre financier comprend les animaux pris en charge pendant cette année ou ayant généré une dépense pendant celle-ci. Le bilan global utilise toutes les fiches non supprimées. La commune est déduite du lieu de récupération, jamais du cabinet vétérinaire ni de la famille d’accueil.
|
||||||
|
|
||||||
Les formulaires officiels des communes ne sont pas générés par Globinours : ils évoluent trop souvent pour garantir un résultat fiable. Le logiciel réunit plutôt les chiffres, le bilan et les justificatifs nécessaires à leur saisie.
|
Les formulaires officiels des communes ne sont pas générés par Globinours : ils évoluent trop souvent pour garantir un résultat fiable. Le logiciel réunit plutôt les chiffres, le bilan et les justificatifs nécessaires à leur saisie.
|
||||||
|
|
||||||
|
## 🌐 Mini-site public
|
||||||
|
|
||||||
|
Le mini-site s’active dans **Paramètres → Site public**. Deux modes sont disponibles sans réécriture Apache ou Nginx : le mode intégré conserve Globinours à la racine et publie sous `/site` ; le mode domaine public affiche le site directement sous `/`, avec une entrée par espèce, `/dons` et `/contact`, tandis que `/gestion` conduit à la connexion ou au dashboard. `/site` reste un alias compatible. Son contenu reprend le logo et l’identité associative déjà configurés. Le pied de page publie l’adresse complète, le RNA et le SIRET lorsqu’ils sont renseignés. La page Contact positionne cette adresse sur une carte Leaflet dont la bibliothèque est embarquée localement ; seules les tuiles cartographiques OpenStreetMap sont chargées à distance. Trois thèmes très légers — chaleureux, naturel et minimal — reposent sur quelques variables CSS communes.
|
||||||
|
|
||||||
|
Une fiche publique n’existe que si l’animal est simultanément marqué **disponible à l’adoption** et **publié sur le mini-site**. Les requêtes publiques sélectionnent une liste limitée de colonnes : identité générale, âge, race, robe, compatibilités, stérilisation, présentation dédiée et photos marquées publiques. Notes, médical, identification, lieux internes, familles d’accueil et documents ne sont jamais chargés par ces routes. Le site désactivé renvoie une page 404 non indexable.
|
||||||
|
|
||||||
## 🔐 Rôles et permissions
|
## 🔐 Rôles et permissions
|
||||||
|
|
||||||
Les accès sont attribués aux rôles — administrateur, responsable, bénévole et lecture seule — depuis **Paramètres → Rôles et permissions**. Chaque module distingue la consultation de la modification. La navigation, les formulaires, les actions et les fenêtres d’édition s’adaptent au rôle. Le serveur contrôle également chaque route afin qu’une URL saisie directement ne contourne pas la règle ; une page 403 intégrée explique clairement le refus.
|
Les accès sont attribués aux rôles — administrateur, responsable, bénévole et lecture seule — depuis **Paramètres → Rôles et permissions**. Chaque module distingue la consultation de la modification. La navigation, les formulaires, les actions et les fenêtres d’édition s’adaptent au rôle. Le serveur contrôle également chaque route afin qu’une URL saisie directement ne contourne pas la règle ; une page 403 intégrée explique clairement le refus.
|
||||||
|
|
@ -356,8 +457,18 @@ Après la connexion, l’utilisateur est envoyé vers la première page autoris
|
||||||
|
|
||||||
Les administrateurs conservent obligatoirement tous les droits. La gestion des utilisateurs et permissions, les paramètres, les sauvegardes, les restaurations et le journal d’audit restent exclusivement administratifs. Chaque modification de la matrice est journalisée.
|
Les administrateurs conservent obligatoirement tous les droits. La gestion des utilisateurs et permissions, les paramètres, les sauvegardes, les restaurations et le journal d’audit restent exclusivement administratifs. Chaque modification de la matrice est journalisée.
|
||||||
|
|
||||||
|
Les catégories de paramètres utilisent un ordre commun dans la roue crantée et dans la navigation interne : **Configuration**, **Référentiels métier**, **Accès** et **Maintenance**. Une rubrique ajoutée au référentiel de navigation apparaît donc automatiquement au même endroit dans les deux menus.
|
||||||
|
|
||||||
Le module médical est dépendant de la consultation des animaux. Sans droit médical, les onglets, statuts FIV/FeLV, traitements, vaccinations, décès, événements médicaux et documents contenant ces informations ne sont pas rendus dans la fiche.
|
Le module médical est dépendant de la consultation des animaux. Sans droit médical, les onglets, statuts FIV/FeLV, traitements, vaccinations, décès, événements médicaux et documents contenant ces informations ne sont pas rendus dans la fiche.
|
||||||
|
|
||||||
|
## 🌍 Interface multilingue
|
||||||
|
|
||||||
|
L’interface applicative est disponible en français et en anglais. La langue globale se choisit dans les paramètres généraux ; le français reste le repli si une traduction manque. Les textes des écrans, formulaires, validations, cartes et impressions générées vivent dans `resources/lang/fr.php` et `resources/lang/en.php`. Les valeurs métier persistées — codes de statuts, imports ASM3, historiques et colonnes d’export — restent volontairement stables et indépendantes de la langue affichée.
|
||||||
|
|
||||||
|
Le contrôle `php scripts/check_translations.php` vérifie les clés utilisées, la parité complète des deux catalogues et la cohérence de leurs variables (`:name`, `:count`, etc.).
|
||||||
|
|
||||||
|
Les confirmations destructives sont elles aussi localisées et contrôlées côté serveur. Par exemple, la remise à zéro attend `VIDER LA BASE` en français ou `CLEAR DATABASE` en anglais ; le chargement de démonstration et la migration ASM3 suivent la même règle. La phrase attendue provient toujours du catalogue actif, jamais d’une constante cachée dans le contrôleur.
|
||||||
|
|
||||||
## ⚠️ Préparer le dépôt Git
|
## ⚠️ Préparer le dépôt Git
|
||||||
|
|
||||||
Ne jamais publier les données réelles du refuge. Au minimum :
|
Ne jamais publier les données réelles du refuge. Au minimum :
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue