API Microsoft

This commit is contained in:
2026-06-16 10:33:35 +02:00
parent fb05201fd7
commit 663c57306d
12 changed files with 821 additions and 40 deletions

View File

@@ -246,3 +246,70 @@ Array.from(document.querySelectorAll('body > *')).forEach(el => {
el.style.outline = '1px solid red';
el.style.backgroundColor = 'rgba(255, 0, 0, 0.3)'; // Utilisation de rgba pour une semi-transparence
});
## Export Excel des inscriptions Académie
Le script `scripts/export-academie-excel.js` génère un fichier `.xlsx` depuis la table MySQL `academie_orchestre_candidatures`, puis l'envoie dans Microsoft 365 via Microsoft Graph.
### Migration SQL
À exécuter une fois sur la base :
```sql
source server/database/2026-06-15_academie_excel_export.sql;
source server/database/2026-06-15_rename_academie_current_fields.sql;
```
### Variables d'environnement
Variables MySQL déjà utilisées par Nuxt :
```env
NUXT_MYSQL_HOST=...
NUXT_MYSQL_PORT=3306
NUXT_MYSQL_DATABASE=...
NUXT_MYSQL_USER=...
NUXT_MYSQL_PASSWORD=...
```
Variables Microsoft Graph à ajouter :
```env
MICROSOFT_TENANT_ID=...
MICROSOFT_CLIENT_ID=...
MICROSOFT_CLIENT_SECRET=...
GRAPH_DRIVE_ID=...
GRAPH_EXCEL_UPLOAD_PATH=Académie d'orchestre/Candidatures/inscriptions-academie-{date}.xlsx
ACADEMIE_EXCEL_REPORT_EMAIL=...
```
Optionnel :
```env
GRAPH_EXCEL_ITEM_ID=...
ACADEMIE_EXCEL_EXPORT_MODE=all
ACADEMIE_EXCEL_LOCAL_OUTPUT=tmp/inscriptions-academie-{date}.xlsx
ACADEMIE_EXCEL_SKIP_UPLOAD=1
```
Modes :
- `ACADEMIE_EXCEL_EXPORT_MODE=all` : exporte toutes les inscriptions dans un fichier complet. Mode recommandé pour commencer.
- `ACADEMIE_EXCEL_EXPORT_MODE=pending` : exporte seulement les lignes non exportées, puis les marque comme exportées.
- `{date}` dans `GRAPH_EXCEL_UPLOAD_PATH` ou `ACADEMIE_EXCEL_LOCAL_OUTPUT` est remplacé par la date du jour au format `YYYY-MM-DD`, par exemple `inscriptions-academie-2026-06-15.xlsx`.
- Ne renseigne pas `GRAPH_EXCEL_ITEM_ID` si tu veux créer un nouveau fichier daté chaque jour : cette variable sert à remplacer un fichier SharePoint existant.
- `ACADEMIE_EXCEL_REPORT_EMAIL` reçoit un email de compte rendu après chaque export, ou un email d'erreur si le traitement échoue.
### Test local sans upload
```bash
ACADEMIE_EXCEL_SKIP_UPLOAD=1 ACADEMIE_EXCEL_LOCAL_OUTPUT=tmp/inscriptions-academie-{date}.xlsx npm run export:academie-excel
```
### Cron nocturne
Exemple pour un export tous les jours à 02:00 :
```bash
0 2 * * * cd /var/www/ton-projet && npm run export:academie-excel >> /var/log/academy-export.log 2>&1
```