Aller au contenu

ScoroPost

Envoi automatique de formulaires d'évaluation à la fermeture d'un projet Scoro, et compilation des réponses en statistiques.

Quand un projet ENV/GEO passe au statut « Fermé » (completed), ScoroPost résout les 4 destinataires (chargé de projet, superviseur, technicien, client), génère les formulaires ODK, envoie les liens par courriel (Microsoft Graph) puis agrège les réponses dans un tableau de bord.

Architecture

Détail complet dans docs/ARCHITECTURE.md du dépôt. En résumé, 4 services orchestrés par docker-compose, déployés sur Coolify depuis GitHub :

Service Tech Rôle
db PostgreSQL 16 Stockage (typé + jsonb)
api FastAPI (Python) API REST de stats + actions, applique les migrations
worker Python + APScheduler Polling Scoro, campagnes, sync ODK
web Blazor Server (.NET) Tableau de bord

api et worker partagent le package backend/scoropost_core.

Démarrage local

cp .env.example .env      # renseigner au minimum SCORO_API_KEY / SCORO_COMPANY_ACCOUNT_ID
docker compose up --build
  • API : http://localhost:8000 (santé : /health)
  • Dashboard : http://localhost:8080

Développement backend (sans Docker)

cd backend
python -m venv .venv && . .venv/bin/activate
pip install -e .[dev]
pytest                                   # tests du noyau (résolveur, poller)
uvicorn api.main:app --reload            # API seule
python -m worker.main --once             # un cycle de polling

État d'avancement

  • [x] Noyau : résolution des 4 emails + détection de fermeture
  • [x] Phase 2 : squelette déployable (ce dépôt)
  • [x] Phase 3 : génération des liens publics ODK + envoi (SMTP ou Graph)
  • [x] Phase 4 : sync ODK (OData) → PostgreSQL + extraction des scores (dédupliqués)
  • [x] Phase 5 : hub Blazor (KPI) + analytics Power BI (vues BI + embed sécurisé, voir docs/POWERBI.md)
  • [ ] Durcissement prod : auth Entra sur le dashboard, worker planifié, secrets Coolify