# Procédure de mise à jour quotidienne — Site jury Trophées de l'Insertion 2026

Cette procédure est suivie par la tâche planifiée de chaque matin (et peut l'être à la main).
Langue de travail et de compte rendu : **français**.

## Emplacements (ordinateur de Caroline)

- **Sources (lecture seule, ne jamais modifier ni déplacer)** :
  `C:\Users\CarolineBECK\OneDrive - MEDEF 44\DOSSIER COM PARTAGÉ\02. ÉVÉNEMENTS\TROPHÉES DE L'INSERTION\TI 2026\CANDIDATURES`
  Rangement : `<CATÉGORIE>\<STRUCTURE>\fichiers`. Les sous-dossiers de catégorie : CREATION, FORMATION ET SENSIBILISATION, MAINTIEN, PARTENARIAT, RECRUTEMENT (d'autres peuvent apparaître : ALTERNANCE, MECENAT…).
- **Site** : `C:\Users\CarolineBECK\OneDrive - MEDEF 44\Bureau\CLAUDE\TROPHEES DE L'INSERTION 2026\SITE JURY\site-en-ligne`
  - `data/candidatures.json` = **la référence** du contenu (le fichier `_atelier/dossiers.py` n'est plus utilisé).
  - `data/candidatures.js` = copie exacte, sous la forme `window.CANDIDATURES = {…};` (permet l'ouverture locale du site).
  - `dossiers/<id>/` = pièces de chaque fiche.
  - **Ne jamais lire, réécrire ni renvoyer `index.html`, `app.js`, `app.css`, `.htaccess`, `robots.txt`, `assets/`** : ces fichiers sont gérés à la main et une version ancienne écraserait les modifications de Caroline.
- **Atelier** : `…\SITE JURY\_atelier` → `etat-sources.json` (fichiers déjà traités), `journal-maj.md` (compte rendu), cette procédure.

## Étapes

1. **Lister** CANDIDATURES récursivement (device_list_dir, recursive) et **comparer** à `_atelier/etat-sources.json` :
   - *nouveau* : chemin absent de `fichiersTraites` ;
   - *modifié* : même chemin, `mtimeMs` ou `taille` différents ;
   - *déplacé* : un fichier disparu et un nouveau de même taille et même nom de fichier ailleurs → simple mise à jour du chemin, pas de retraitement ;
   - *disparu* : à signaler seulement, **ne rien supprimer** du site.
2. **Rien de nouveau ?** Ajouter une ligne datée dans `journal-maj.md` (« RAS ») + mettre à jour `derniereVerification`, puis s'arrêter.
3. Pour chaque **structure concernée** (nouvelle ou modifiée), stager les fichiers utiles (device_stage_files) et lire le formulaire :
   - Les formulaires PDF ont des champs : `Texte1` nom du porteur, `Texte2` fonction, `Texte5` structure, `Texte6` effectif (ETP), `Texte7` code postal, `Texte8` ville, `Texte10` projet, `Texte11` partenaires, `Texte12` motivations (lecture avec pypdf `get_fields()`). `Texte3` mail, `Texte4` téléphone, `Texte9` adresse.
   - Formulaire scanné ou manuscrit : rendre les pages en image et les lire.
   - **Catégorie = sous-dossier de rangement** (choix des organisateurs). Si la case cochée diffère, l'indiquer dans `note`.
   - Lire aussi les annexes (docx : liens et images intégrés ; PDF de présentation ; photos ; vidéos).
4. **Rédiger / mettre à jour la fiche** dans `candidatures.json` (stager le fichier depuis le site d'abord). Schéma d'une entrée de `dossiers` (copier la structure d'une fiche existante) :
   `id` (slug unique), `nom`, `ville`, `etp` (texte, ex. « 4 ETP »), `secteur` (« Privé »/« Public »), `categorie` (alternance, creation, formation, maintien, mecenat, stpa, recrutement), `autresCategories` [{categorie, id}], `voirAussi` [{id, texte}], `note`, `accroche` (1 phrase), `porteur` {nom, fonction}, `logo` (chemin ou ""), `synthese` {`projet` (5-7 phrases), `chiffres` [{valeur, libelle}] 0 à 4, `partenaires` [{nom, role}], `pourquoi` (1-2 phrases), `citation` (phrase **exacte** du dossier, entre « »)}, `dossierPdf` {fichier, pages, taille}, `annexes` {videos [{type mp4|youtube, titre, duree, src, taille, vertical?, youtubeId?}], images [{legende, src}], liens [{titre, href}], documents [{titre, fichier, taille, pages}]}.
   - **`texteComplet`** (affiché en premier sur la fiche, c'est ce que lit le jury) : `{projet, partenaires, motivations}`, chacun une liste de blocs `{"t": "p"|"h"|"li", "x": texte}` = **texte intégral du candidat**, mis en page sans changer le fond (paragraphes, intertitres `h`, puces `li`, ligatures et retours à la ligne réparés, typographie française). Utiliser `_atelier/texte_complet.py` comme modèle (champs `Texte10/11/12` ; sinon extraction PyMuPDF avec `sort=True`, en remplaçant les glyphes U+08A1/U+08A2 par « ti » et U+0082 par « tt »). Dossier manuscrit : transcrire fidèlement, en corrigeant seulement l'orthographe. Relire le résultat avant publication.
   - `synthese` (projet en bref, chiffres, partenaires, pourquoi, citation) reste obligatoire : il est affiché dans l'onglet « Synthèse (le projet en bref) ».
   - **Règle d'or : rien inventer.** Uniquement des informations présentes dans le dossier. Chiffres = uniquement ceux écrits par le candidat. Pas de superlatifs.
   - Nouvelle candidature : l'ajouter à la fin de `dossiers` (le site trie lui-même par ordre alphabétique).
   - Fiche modifiée : relire le nouveau formulaire et ajuster le texte, sans réécrire ce qui n'a pas changé.
   - Mettre `miseAJour` à la date du jour (format JJ/MM/AAAA).
5. **Préparer les pièces** dans `dossiers/<id>/` :
   - Formulaire → `dossier-candidature.pdf` ; logo → `logo.<ext>` (préférer la version fond blanc).
   - Vidéos → mp4 H.264 + AAC, 720p, `-movflags +faststart`, **moins de 19 Mo** (sinon le transfert vers l'ordinateur échoue ; baisser le débit, ex. `-b:v 700k`). Convertir aussi les .mov et le HEVC. Vidéo verticale → `"vertical": true`.
   - pptx → PDF (LibreOffice) ; liens YouTube → entrée `youtube` avec `youtubeId`.
   - Photos → JPEG 1600 px de large max, qualité 80, **12 photos maximum** par fiche (choisir les plus parlantes), légende courte et factuelle (ou « Photo transmise par le candidat »).
   - Noms de fichiers sans accents ni espaces.
6. **Écrire** `candidatures.json` + `candidatures.js` (même contenu), vérifier que le JSON est valide, tester le site en local (playwright, fichier `index.html#/dossier/<id>`) sans erreur JS.
7. **Envoyer** vers l'ordinateur (device_commit_files, `force: true`) **uniquement** `data/candidatures.json`, `data/candidatures.js` et les fichiers nouveaux ou modifiés de `dossiers/<id>/` ; jamais le dossier du site en entier. 50 fichiers / 100 Mo max par appel → découper si besoin.
8. **Mettre à jour** `_atelier/etat-sources.json` (ajouter/mettre à jour les fichiers traités, `derniereVerification`) et **ajouter** au début de `_atelier/journal-maj.md` un bloc daté :
   - ce qui a changé (nouvelles fiches, fiches modifiées) ;
   - **liste exacte des fichiers à renvoyer sur o2switch** (chemins relatifs à `site-en-ligne`) ;
   - **points d'attention** : structure hors Loire-Atlantique (code postal ne commençant pas par 44), case cochée ≠ dossier de rangement, formulaire incomplet, même porteur sur plusieurs dossiers, doublon, fichier illisible.
9. Le compte rendu final (message de fin de tâche) reprend ce bloc en version courte.

## Interdits

- Ne jamais renvoyer `index.html`, `app.js`, `app.css` ni `assets/` (même « à l'identique »).

- Ne jamais modifier, renommer, déplacer ou supprimer quoi que ce soit dans CANDIDATURES.
- Ne jamais supprimer de fiche ni de fichier du site sans demande explicite de Caroline.
- Ne pas mettre en ligne sur o2switch : Caroline s'en charge.
