readme.md
readme
This commit is contained in:
commit
0613fb91c3
1 changed files with 384 additions and 0 deletions
384
readme.md
Normal file
384
readme.md
Normal file
|
|
@ -0,0 +1,384 @@
|
||||||
|
<p align="center"><img src="resources/branding/Logo_Globinours_maxi.png" alt="Logo Globinours" width="180"></p>
|
||||||
|
<h1 align="center">Globinours</h1>
|
||||||
|
<p align="center"><strong>La gestion quotidienne d’un refuge, pensée pour rester humaine, rapide et lisible.</strong><br>Né de l’histoire de Twix, conçu pour protéger les suivants.</p>
|
||||||
|
<p align="center">
|
||||||
|
<img alt="PHP 8.1+" src="https://img.shields.io/badge/PHP-8.1%2B-777BB4?logo=php&logoColor=white">
|
||||||
|
<img alt="SQLite" src="https://img.shields.io/badge/SQLite-WAL-003B57?logo=sqlite&logoColor=white">
|
||||||
|
<img alt="Interface française" src="https://img.shields.io/badge/interface-fran%C3%A7aise-E8A838">
|
||||||
|
<img alt="Application légère" src="https://img.shields.io/badge/application-l%C3%A9g%C3%A8re-2FB344">
|
||||||
|
<img alt="En développement" src="https://img.shields.io/badge/%C3%A9tat-en%20d%C3%A9veloppement-F59F00">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🐾 Le projet
|
||||||
|
|
||||||
|
Globinours est une application web de gestion de refuge animalier, développée au plus près du fonctionnement réel de l’association **Les Coussinets**.
|
||||||
|
|
||||||
|
Elle centralise les animaux, leur santé, leurs documents, leurs liens familiaux, les familles d’accueil, les contacts et les actions quotidiennes. Son objectif est simple : permettre aux bénévoles et responsables de trouver ou saisir une information en quelques secondes, sans traverser une succession d’écrans complexes.
|
||||||
|
|
||||||
|
Globinours privilégie :
|
||||||
|
|
||||||
|
- une interface claire et entièrement française ;
|
||||||
|
- un fonctionnement rapide sur ordinateur comme sur tablette ;
|
||||||
|
- une installation légère, sans framework serveur ni dépendances Composer ;
|
||||||
|
- la traçabilité des actions importantes ;
|
||||||
|
- la maîtrise locale des données du refuge.
|
||||||
|
|
||||||
|
L’identité de l’association est personnalisable, logo compris. Ce logo est conservé dans l’espace privé de l’installation, sauvegardé avec les données et prévu pour alimenter les documents officiels.
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
|
## ✨ Ce que propose Globinours
|
||||||
|
|
||||||
|
### Gestion complète des animaux
|
||||||
|
|
||||||
|
- 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 ;
|
||||||
|
- 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 ;
|
||||||
|
- 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 ;
|
||||||
|
- 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 ;
|
||||||
|
- 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 ;
|
||||||
|
- 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 ;
|
||||||
|
- photos publiques, privées et médicales ;
|
||||||
|
- orientation, redimensionnement et compression automatiques des nouvelles images, avec suppression de leurs métadonnées ;
|
||||||
|
- archivage, corbeille et restauration ;
|
||||||
|
- fiche A4 imprimable ou enregistrable en PDF ;
|
||||||
|
- cartographie des lieux de récupération et d’accueil.
|
||||||
|
|
||||||
|
### Portées et groupes inséparables
|
||||||
|
|
||||||
|
- création rapide d’une portée et de ses chatons ;
|
||||||
|
- parents connus, partiellement connus ou inconnus ;
|
||||||
|
- génération automatique des noms ;
|
||||||
|
- regroupement visuel des frères et sœurs ;
|
||||||
|
- groupes d’animaux devant être adoptés ensemble.
|
||||||
|
|
||||||
|
### Suivi médical et tournées sur tablette
|
||||||
|
|
||||||
|
- tournée du matin ou du soir ;
|
||||||
|
- salles collectives Silver et Twix ;
|
||||||
|
- salles de soins et de quarantaine avec box modulables ;
|
||||||
|
- plusieurs animaux par box ;
|
||||||
|
- traitements attendus affichés pendant la tournée ;
|
||||||
|
- validation individuelle ou collective ;
|
||||||
|
- 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 ;
|
||||||
|
- incidents ajoutés à l’historique de l’animal.
|
||||||
|
|
||||||
|
### Annuaire du refuge
|
||||||
|
|
||||||
|
- familles d’accueil, bénévoles, dirigeants et adoptants ;
|
||||||
|
- déposants, vétérinaires, cabinets et crématoriums ;
|
||||||
|
- personnes et structures distinguées visuellement ;
|
||||||
|
- création de contacts depuis certains formulaires médicaux ou d’adoption.
|
||||||
|
|
||||||
|
### Documents et administratif
|
||||||
|
|
||||||
|
- registre annuel des entrées et sorties ;
|
||||||
|
- modèles ODT accessibles depuis l’espace administratif ;
|
||||||
|
- contrats d’adoption et documents d’abandon préremplis ;
|
||||||
|
- documents pour bénévoles et familles d’accueil ;
|
||||||
|
- conversion PDF avec LibreOffice ;
|
||||||
|
- documents HTML A4 imprimables depuis le navigateur.
|
||||||
|
|
||||||
|
### Utilisateurs et protection des données
|
||||||
|
|
||||||
|
- connexion nominative ;
|
||||||
|
- rôles administrateur, responsable, bénévole et lecture seule ;
|
||||||
|
- journal d’audit et attribution des événements ;
|
||||||
|
- paramètres administrables pour l’identité de l’association, les tarifs, la quarantaine et la conservation des sauvegardes ;
|
||||||
|
- sauvegarde ZIP complète, téléchargeable et restaurable ;
|
||||||
|
- sauvegarde d’urgence automatique avant restauration.
|
||||||
|
|
||||||
|
## 🖥️ Philosophie produit
|
||||||
|
|
||||||
|
Globinours ne cherche pas à devenir une suite universelle. Il couvre précisément le quotidien d’un refuge, avec des parcours courts et compréhensibles.
|
||||||
|
|
||||||
|
Le dashboard répond à la question **« Que devons-nous surveiller aujourd’hui ? »**. Les fiches animales conservent le détail. La tournée tablette accompagne le travail sur le terrain. L’espace administratif rassemble les documents et les futurs bilans annuels.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ Architecture technique
|
||||||
|
|
||||||
|
Application PHP rendue côté serveur, organisée autour de contrôleurs, services et vues :
|
||||||
|
|
||||||
|
```text
|
||||||
|
refuge/
|
||||||
|
├── app/
|
||||||
|
│ ├── Controllers/ # Routes et actions
|
||||||
|
│ ├── Services/ # Base, sécurité, documents, sauvegardes…
|
||||||
|
│ └── Views/ # Interfaces HTML/PHP
|
||||||
|
├── data/
|
||||||
|
│ ├── association/ # Fichiers propres à l’association
|
||||||
|
│ └── refuge.sqlite # Base locale — à exclure de Git
|
||||||
|
├── migrations/ # Évolution versionnée de SQLite
|
||||||
|
├── public/ # Racine web, assets et médias
|
||||||
|
├── resources/
|
||||||
|
│ ├── branding/ # Identité visuelle livrée avec Globinours
|
||||||
|
│ └── documents/ # Modèles ODT du logiciel
|
||||||
|
├── storage/
|
||||||
|
│ ├── backups/ # Sauvegardes ZIP
|
||||||
|
└── README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
### Technologies
|
||||||
|
|
||||||
|
| Couche | Technologie |
|
||||||
|
|---|---|
|
||||||
|
| Serveur | PHP 8.1 ou supérieur |
|
||||||
|
| Données | SQLite, PDO, clés étrangères et journal WAL |
|
||||||
|
| Interface | HTML5, CSS, JavaScript natif et Tabler |
|
||||||
|
| Calendriers | Flatpickr en français |
|
||||||
|
| Graphiques | Chart.js |
|
||||||
|
| Cartographie | Leaflet et OpenStreetMap/Nominatim |
|
||||||
|
| Documents | ODT/XML, ZIP, LibreOffice headless et impression HTML/CSS A4 |
|
||||||
|
| Images | ImageMagick, WebP et conservation de l’original en mode de repli |
|
||||||
|
| Sauvegardes | ZipArchive, SHA-256 et contrôle d’intégrité SQLite |
|
||||||
|
|
||||||
|
Les bibliothèques d’interface sont actuellement chargées depuis leurs CDN. Aucun `composer install` ni `npm install` n’est nécessaire.
|
||||||
|
|
||||||
|
## 🔐 Sécurité
|
||||||
|
|
||||||
|
### Authentification
|
||||||
|
|
||||||
|
- mots de passe avec `password_hash()` et `password_verify()` ;
|
||||||
|
- minimum de 10 caractères dans l’interface ;
|
||||||
|
- régénération de l’identifiant de session après connexion ;
|
||||||
|
- verrouillage de 15 minutes après 5 échecs ;
|
||||||
|
- comptes désactivables ;
|
||||||
|
- protection empêchant un administrateur de retirer ses propres droits.
|
||||||
|
|
||||||
|
### Sessions et requêtes
|
||||||
|
|
||||||
|
- cookies `HttpOnly` et `SameSite=Strict` ;
|
||||||
|
- attribut `Secure` activé sous HTTPS ;
|
||||||
|
- jeton CSRF aléatoire vérifié sur les requêtes POST ;
|
||||||
|
- écritures autorisées selon le rôle ;
|
||||||
|
- redirections après connexion limitées aux chemins internes.
|
||||||
|
- en-têtes `nosniff`, anti-iframe, politique de référent limitée à l’origine et permissions navigateur restrictives ;
|
||||||
|
- routes de maintenance limitées au mode développement, à la machine locale et aux administrateurs.
|
||||||
|
|
||||||
|
### Base et affichage
|
||||||
|
|
||||||
|
- requêtes paramétrées PDO et émulation désactivée ;
|
||||||
|
- clés étrangères SQLite activées ;
|
||||||
|
- échappement HTML des valeurs affichées ;
|
||||||
|
- migrations transactionnelles ;
|
||||||
|
- suppression logique des animaux avec possibilité de restauration.
|
||||||
|
|
||||||
|
### Téléversements et audit
|
||||||
|
|
||||||
|
- inspection MIME des photos côté serveur ;
|
||||||
|
- distinction applicative des médias privés ;
|
||||||
|
- audit nominatif des actions ;
|
||||||
|
- mots de passe et jetons CSRF exclus des métadonnées d’audit.
|
||||||
|
|
||||||
|
### Sauvegardes
|
||||||
|
|
||||||
|
- snapshot cohérent par `VACUUM INTO` ;
|
||||||
|
- manifeste versionné et empreinte SHA-256 de chaque fichier ;
|
||||||
|
- rejet des chemins ZIP dangereux ;
|
||||||
|
- `PRAGMA integrity_check` avant restauration ;
|
||||||
|
- sauvegarde automatique avant remplacement ;
|
||||||
|
- reconnexion obligatoire après restauration.
|
||||||
|
|
||||||
|
### Exports
|
||||||
|
|
||||||
|
- accès réservé aux administrateurs et téléchargement journalisé ;
|
||||||
|
- CSV UTF-8 compatibles avec Excel et LibreOffice ;
|
||||||
|
- neutralisation des cellules pouvant être interprétées comme des formules ;
|
||||||
|
- exclusion des mots de passe, sessions, secrets de configuration et médias.
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> L’application manipule des données personnelles et médicales. Une installation en réseau doit utiliser HTTPS, des permissions système restrictives et des sauvegardes externes.
|
||||||
|
|
||||||
|
## 📦 Prérequis
|
||||||
|
|
||||||
|
- PHP 8.1+ ;
|
||||||
|
- extensions `pdo_sqlite`, `sqlite3`, `zip`, `curl`, `fileinfo` et `mbstring` ;
|
||||||
|
- LibreOffice, facultatif mais nécessaire pour convertir les ODT en PDF ;
|
||||||
|
- ImageMagick, recommandé pour optimiser automatiquement les images téléversées ;
|
||||||
|
- écriture autorisée dans `data`, `public/media` et `storage` ;
|
||||||
|
- accès Internet pour les CDN, la cartographie et les intégrations externes.
|
||||||
|
|
||||||
|
Exemple Debian/Ubuntu :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install php php-sqlite3 php-zip php-curl php-mbstring libreoffice imagemagick
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚀 Installation locale
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone <URL_DU_DEPOT> globinours
|
||||||
|
cd globinours
|
||||||
|
```
|
||||||
|
|
||||||
|
Créer un fichier `.env` uniquement si les intégrations correspondantes sont utilisées :
|
||||||
|
|
||||||
|
```dotenv
|
||||||
|
ICAD_LOGIN=
|
||||||
|
ICAD_PASSWORD=
|
||||||
|
GEOCODER_EMAIL=contact@example.org
|
||||||
|
APP_ENV=production
|
||||||
|
```
|
||||||
|
|
||||||
|
Préparer les permissions puis lancer le serveur de développement :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chmod -R u+rwX data public/media storage
|
||||||
|
php -d upload_max_filesize=250M -d post_max_size=260M -d max_execution_time=600 -S 127.0.0.1:8000 -t public
|
||||||
|
```
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
## 🌐 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.
|
||||||
|
|
||||||
|
Avant la mise en production :
|
||||||
|
|
||||||
|
- activer HTTPS ;
|
||||||
|
- désactiver l’affichage public des erreurs PHP ;
|
||||||
|
- protéger `.env` et SQLite par les permissions système ;
|
||||||
|
- vérifier les limites PHP de téléversement ;
|
||||||
|
- créer et télécharger une sauvegarde depuis **Paramètres → Sauvegardes** ;
|
||||||
|
- copier régulièrement les ZIP vers un autre support.
|
||||||
|
|
||||||
|
Les routes internes `/dev/*` sont désactivées par défaut. Elles exigent simultanément `APP_ENV=development`, une connexion depuis la machine locale et un compte administrateur.
|
||||||
|
|
||||||
|
## 💾 Sauvegardes
|
||||||
|
|
||||||
|
Une archive Globinours contient la base, les photos, les médias médicaux, le logo personnalisé de l’association, les justificatifs privés des subventions et un manifeste d’intégrité. Les modèles et éléments graphiques livrés avec le logiciel restent dans `resources/` et ne sont pas dupliqués dans chaque sauvegarde. `.env` est volontairement exclu afin de ne pas diffuser les identifiants externes.
|
||||||
|
|
||||||
|
Les 10 sauvegardes les plus récentes sont conservées localement. Elles peuvent être téléchargées, supprimées et restaurées depuis l’interface.
|
||||||
|
|
||||||
|
## 🧪 Vérifications
|
||||||
|
|
||||||
|
```bash
|
||||||
|
find app public -name '*.php' -print0 | xargs -0 -n1 php -l
|
||||||
|
```
|
||||||
|
|
||||||
|
Le projet ne dispose pas encore d’une suite automatisée complète. Les parcours prioritaires sont l’authentification, les migrations, les sauvegardes, les adoptions et les écritures médicales.
|
||||||
|
|
||||||
|
## 🗺️ Feuille de route
|
||||||
|
|
||||||
|
| Étape | État | Contenu |
|
||||||
|
|---|:---:|---|
|
||||||
|
| 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 |
|
||||||
|
| 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 |
|
||||||
|
| 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 |
|
||||||
|
| 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é |
|
||||||
|
| 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 |
|
||||||
|
| 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 |
|
||||||
|
| 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 |
|
||||||
|
| 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 |
|
||||||
|
| 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 |
|
||||||
|
| 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.
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
php scripts/asm3-analyze.php chemin/vers/dump.sql
|
||||||
|
php scripts/asm3-analyze.php chemin/vers/dump.sql --output rapport.md
|
||||||
|
php scripts/asm3-analyze.php chemin/vers/dump.sql --json
|
||||||
|
php scripts/asm3-plan.php chemin/vers/dump.sql plan-migration.json
|
||||||
|
php scripts/asm3-import.php chemin/vers/dump.sql
|
||||||
|
# Après lecture de la simulation uniquement :
|
||||||
|
php scripts/asm3-import.php chemin/vers/dump.sql --apply
|
||||||
|
php scripts/asm3-contacts.php chemin/vers/dump.sql
|
||||||
|
# Puis, après contrôle de la simulation :
|
||||||
|
php scripts/asm3-contacts.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-litters.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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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 synthèse anonymisée des formulaires communaux est disponible dans [docs/ANALYSE_SUBVENTIONS.md](docs/ANALYSE_SUBVENTIONS.md).
|
||||||
|
|
||||||
|
### Bilans et demandes de subvention
|
||||||
|
|
||||||
|
L’espace **Administratif → Subventions et bilans** regroupe, année par année :
|
||||||
|
|
||||||
|
- les indicateurs calculés depuis les mouvements, adoptions, décès, portées, vaccinations et traitements, avec comparaison automatique à N−1 ;
|
||||||
|
- les répartitions par sexe, âge à l’entrée, origine, cause de décès et durée de séjour avant adoption ;
|
||||||
|
- les effectifs associatifs, le rapport d’activité et les projets ;
|
||||||
|
- une synthèse du réalisé, du prévisionnel, de la trésorerie et des contributions volontaires ;
|
||||||
|
- le suivi des demandes par commune ou organisme ;
|
||||||
|
- une checklist de dix pièces, avec formulaire officiel rattaché à son organisme et documents communs réutilisables ;
|
||||||
|
- les justificatifs PDF/ODT conservés hors du dossier public, contrôlés selon leur validité et inclus dans les sauvegardes ;
|
||||||
|
- une synthèse HTML optimisée pour l’impression ou l’enregistrement en PDF depuis le navigateur.
|
||||||
|
|
||||||
|
Les pièces sont classées comme valides, proches de l’expiration, expirées ou manquantes. Le dashboard signale uniquement aux rôles autorisés les échéances dépassées ou sous 30 jours, les dossiers incomplets et les documents à renouveler.
|
||||||
|
|
||||||
|
Cet outil prépare le noyau commun des dossiers, sans prétendre remplacer les formulaires officiels propres à chaque organisme.
|
||||||
|
|
||||||
|
## 📊 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 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 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.
|
||||||
|
|
||||||
|
## 🔐 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.
|
||||||
|
|
||||||
|
Après la connexion, l’utilisateur est envoyé vers la première page autorisée à son rôle. Une ancienne URL mémorisée n’est reprise que si ce rôle peut réellement l’ouvrir.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
## ⚠️ Préparer le dépôt Git
|
||||||
|
|
||||||
|
Ne jamais publier les données réelles du refuge. Au minimum :
|
||||||
|
|
||||||
|
```gitignore
|
||||||
|
.env
|
||||||
|
data/refuge.sqlite*
|
||||||
|
data/association/**
|
||||||
|
public/media/**
|
||||||
|
!public/media/.gitkeep
|
||||||
|
storage/backups/**
|
||||||
|
storage/debug/**
|
||||||
|
storage/restore-*/
|
||||||
|
```
|
||||||
|
|
||||||
|
Les modèles ODT et les éléments graphiques propres à Globinours placés dans `resources/` peuvent être versionnés s’ils ne contiennent aucune donnée personnelle. Le logo téléversé par une association reste une donnée d’installation dans `data/association/`.
|
||||||
|
|
||||||
|
## 📄 Licence
|
||||||
|
|
||||||
|
Aucune licence de redistribution n’est encore fournie. Avant de rendre le dépôt public, choisissez une licence et vérifiez que les documents, logos et modèles peuvent être diffusés.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<p align="center"><strong>Globinours</strong><br>Un outil léger, construit autour des animaux et des personnes qui prennent soin d’eux.</p>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue