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