docs: nouveautes bodies live in admin_nouveautes (19MB), not parent list
This commit is contained in:
@@ -0,0 +1,66 @@
|
|||||||
|
# Nouveautés : corps des annonces et endpoint admin_nouveautes
|
||||||
|
|
||||||
|
Constat du 13-14 septembre 2026, vérifié en production avec les identifiants
|
||||||
|
parent (aucune donnée personnelle stockée ici).
|
||||||
|
|
||||||
|
## Le piège : la liste `nouveautes` ne contient pas les corps
|
||||||
|
|
||||||
|
Le endpoint `nouveautes` (GET) renvoie la liste des 10 derniers posts avec
|
||||||
|
seulement : id, title, categorie, date, intro, files, image. L'intro ne
|
||||||
|
contient que le badge "Vu le ..." et éventuellement rien du tout. Les vrais
|
||||||
|
corps ("Chers parents, ...") n'y figurent PAS.
|
||||||
|
|
||||||
|
Beaucoup d'annonces n'ont pas de texte du tout côté liste : elles semblent
|
||||||
|
vides alors qu'elles ont un `description` complet côté admin.
|
||||||
|
|
||||||
|
## Où sont les corps : `admin_nouveautes`
|
||||||
|
|
||||||
|
`GET https://boti.education/p/greenwood/botiapi/admin_nouveautes` avec les
|
||||||
|
params standard (user_id, parent_id, eleve_id, key) renvoie TOUTES les
|
||||||
|
annonces de l'école depuis 2021, avec le champ `description` complet
|
||||||
|
(HTML) et les fichiers joints. Attention :
|
||||||
|
|
||||||
|
- **~19 Mo de JSON** pour Greenwood. Ne pas le poller en boucle, c'est
|
||||||
|
le genre de requête qui finit sur une liste de blocage.
|
||||||
|
- C'est un endpoint "admin" côté nom mais il répond très bien au compte
|
||||||
|
parent standard. Probablement l'endpoint utilisé par la vue détaillée
|
||||||
|
d'un post dans l'app.
|
||||||
|
|
||||||
|
Les posts récents y apparaissent PARFOIS avant d'être visibles dans la
|
||||||
|
liste parent `nouveautes` (constaté : note "Emploi du temps" du 14/09
|
||||||
|
16:37 visible dans admin_nouveautes, absente de nouveautes).
|
||||||
|
|
||||||
|
## Fichiers joints
|
||||||
|
|
||||||
|
- `files[].link` sont des URLs media.boti.education/view/... signées,
|
||||||
|
DOUBLE-encodées comme d'habitude : décoder exactement une fois avec
|
||||||
|
parse_qs, garder %2B/%2F/%3D littéraux (server.viewer_to_real()).
|
||||||
|
- Expiration ~15-20 min : télécharger dans la même exécution du script.
|
||||||
|
- Beaucoup d'annonces n'ont pas de PDF : le contenu est uniquement dans
|
||||||
|
`description` (HTML avec emojis, <p style="text-align: justify">).
|
||||||
|
|
||||||
|
## Historique des emplois du temps
|
||||||
|
|
||||||
|
L'école publie les EDT classe par classe via des notes "Emploi du temps"
|
||||||
|
dans les nouveautés (PDF joints), généralement la 1re quinzaine de
|
||||||
|
septembre. Le grille `cours_v2` reste vide en parallèle jusqu'à
|
||||||
|
renseignement par l'admin. 2026 : publiés du 07/09 (maternelle GS/MS) au
|
||||||
|
14/09 (TPS/PS) ; lycée/TC pas encore paru au 14/09.
|
||||||
|
|
||||||
|
## Script de récupération des corps
|
||||||
|
|
||||||
|
```python
|
||||||
|
import sys, html, re
|
||||||
|
sys.path.insert(0, "/home/iliasmouhcine/dev/boti-client")
|
||||||
|
import server
|
||||||
|
c = server.BotiClient()
|
||||||
|
if not c.key: c.login()
|
||||||
|
d = server.http_get("admin_nouveautes", {"user_id": c.user_id,
|
||||||
|
"parent_id": c.parent_id, "eleve_id": c.eleve_id, "key": c.key})
|
||||||
|
for p in d["data"][:10]:
|
||||||
|
body = html.unescape(p.get("description") or "")
|
||||||
|
body = re.sub(r"<br\s*/?>", "\n", re.sub(r"</p>", "\n", body))
|
||||||
|
body = re.sub(r"<[^>]+>", "", body)
|
||||||
|
print("=====", p["title"], "|", p["date"])
|
||||||
|
print(body.strip())
|
||||||
|
```
|
||||||
+1
-1
@@ -17,7 +17,7 @@ https://boti.education/p/greenwood/botiapi/<endpoint>.
|
|||||||
| admin_demande_eleve | get, post | 1514.js, 9714.js, 9964.js |
|
| admin_demande_eleve | get, post | 1514.js, 9714.js, 9964.js |
|
||||||
| admin_discipline_eleve | get, post | 1172.js, 9964.js |
|
| admin_discipline_eleve | get, post | 1172.js, 9964.js |
|
||||||
| admin_fiche_eleve | get | 9964.js |
|
| admin_fiche_eleve | get | 9964.js |
|
||||||
| admin_nouveautes | get | 6154.js |
|
| admin_nouveautes | get | 6154.js | (renvoie TOUT l'historique avec le corps `description`, ~19 Mo Greenwood ; voir docs/NOUVEAUTES_BODIES.md)
|
||||||
| admin_search_eleve | get | 6996.js |
|
| admin_search_eleve | get | 6996.js |
|
||||||
| admin_suivi_eleve | get, post | 3555.js, 9964.js |
|
| admin_suivi_eleve | get, post | 3555.js, 9964.js |
|
||||||
| album_photo | get | 6124.js, 6925.js |
|
| album_photo | get | 6124.js, 6925.js |
|
||||||
|
|||||||
Reference in New Issue
Block a user