114 lines
3 KiB
Markdown
114 lines
3 KiB
Markdown
|
|
# GMAO Collège - Application modulaire
|
||
|
|
|
||
|
|
Application de Gestion de Maintenance Assistée par Ordinateur pour collège.
|
||
|
|
|
||
|
|
## Stack
|
||
|
|
|
||
|
|
- Python 3.13 + Flask
|
||
|
|
- SQLAlchemy + Flask-Migrate
|
||
|
|
- MariaDB (obligatoire, SQLite supprimé)
|
||
|
|
- WTForms + Flask-Login
|
||
|
|
- Bootstrap 5 + Select2
|
||
|
|
|
||
|
|
## Demarrage recommande sous Debian
|
||
|
|
|
||
|
|
Docker gere l'application et MariaDB. La procedure complete se trouve dans
|
||
|
|
[`docs/DEBIAN.md`](docs/DEBIAN.md).
|
||
|
|
|
||
|
|
```bash
|
||
|
|
chmod +x scripts/init-debian.sh docker/build-release.sh
|
||
|
|
make init
|
||
|
|
make dev
|
||
|
|
```
|
||
|
|
|
||
|
|
## Variables d'environnement
|
||
|
|
|
||
|
|
Copier `.env.example` vers `.env` et ajuster :
|
||
|
|
|
||
|
|
```bash
|
||
|
|
DATABASE_URL=mysql+pymysql://gmao:<mdp>@/gmao_db?unix_socket=/var/run/mysqld/mysqld.sock&charset=utf8mb4
|
||
|
|
SECRET_KEY=change-me-in-production
|
||
|
|
SETUP_TOKEN=<jeton-aléatoire-d'au-moins-32-caractères>
|
||
|
|
OUTLOOK_ENCRYPTION_KEY=<base64-256-bits>
|
||
|
|
UPLOAD_FOLDER=/chemin/vers/app_new/uploads
|
||
|
|
```
|
||
|
|
|
||
|
|
Lors de la toute première configuration, ouvrir le wizard avec le jeton local :
|
||
|
|
|
||
|
|
```text
|
||
|
|
http://localhost:5080/setup-wizard/?token=<SETUP_TOKEN>
|
||
|
|
```
|
||
|
|
|
||
|
|
Le jeton est ensuite conservé dans la session du navigateur. Ne pas le partager ni
|
||
|
|
le placer dans une URL accessible depuis un réseau non fiable.
|
||
|
|
|
||
|
|
Adminer reste disponible pour le diagnostic sur
|
||
|
|
`http://127.0.0.1:8080` et n'est pas exposé aux autres machines du réseau.
|
||
|
|
|
||
|
|
## Lancement
|
||
|
|
|
||
|
|
```bash
|
||
|
|
python3 run_app_new.py
|
||
|
|
```
|
||
|
|
|
||
|
|
### Docker en developpement
|
||
|
|
|
||
|
|
Les sources locales sont montees dans le conteneur et Gunicorn les recharge
|
||
|
|
automatiquement :
|
||
|
|
|
||
|
|
```bash
|
||
|
|
docker compose up -d --build
|
||
|
|
```
|
||
|
|
|
||
|
|
### Docker en production
|
||
|
|
|
||
|
|
Le code est integre a une image immuable et seuls les volumes de donnees sont
|
||
|
|
conserves :
|
||
|
|
|
||
|
|
```bash
|
||
|
|
./docker/build-release.sh
|
||
|
|
GMAO_VERSION="$(tr -d '\r\n' < VERSION)" \
|
||
|
|
docker compose -f docker-compose.yml up -d
|
||
|
|
```
|
||
|
|
|
||
|
|
La procedure complete de versionnement et de deploiement est documentee dans
|
||
|
|
[`docs/DEPLOYMENT.md`](docs/DEPLOYMENT.md). La version courante est stockee
|
||
|
|
dans `VERSION`.
|
||
|
|
|
||
|
|
Le port par défaut est `5080`. Surcharge possible :
|
||
|
|
|
||
|
|
```bash
|
||
|
|
FLASK_PORT=8090 python3 run_app_new.py
|
||
|
|
```
|
||
|
|
|
||
|
|
## Tests
|
||
|
|
|
||
|
|
```bash
|
||
|
|
python3 -m venv venv-tests
|
||
|
|
source venv-tests/bin/activate
|
||
|
|
pip install pytest pytest-flask factory-boy
|
||
|
|
pip install -r requirements.txt
|
||
|
|
python3 -m pytest
|
||
|
|
```
|
||
|
|
|
||
|
|
## Structure
|
||
|
|
|
||
|
|
```
|
||
|
|
app_new/
|
||
|
|
├── core/ # modèles, routes auth/dashboard/admin, formulaires
|
||
|
|
├── equipments/ # gestion des équipements, bâtiments, zones, salles
|
||
|
|
├── interventions/ # interventions et maintenance
|
||
|
|
├── maintenance/ # lots, tâches, planification préventive
|
||
|
|
├── planning/ # planification et contraintes
|
||
|
|
├── yeastar/ # intégration téléphonie Yeastar
|
||
|
|
├── ent/ # intégration ENT
|
||
|
|
├── outlook/ # intégration Outlook
|
||
|
|
└── templates/ # templates Jinja2
|
||
|
|
```
|
||
|
|
|
||
|
|
## Notes importantes
|
||
|
|
|
||
|
|
- **MariaDB obligatoire** : SQLite a été retiré de toutes les configurations.
|
||
|
|
- **Tests** : utilisent la base `gmao_test_db`, créée et détruite à chaque session.
|
||
|
|
- **CSRF** : activé par défaut, désactivé en développement via `DevelopmentConfig`.
|