feat(participatif): publier les manques et outiller la contribution
Le manque devient une information de première classe : mesuré, daté, affiché, et accompagné de la marche à suivre pour le combler (ADR 0006). Mesure - rapport:manques : couverture des 5 vues pédagogiques dans les fonds publics, présence du kréyòl sur Wikidata, observations GBIF par île, manques internes du dataset → docs/manques.md. - Le kréyòl est absent des communs : Wikidata enregistre 124 noms vernaculaires pour ces 13 espèces (zh, en, pt, sl) et aucun en kréyòl ; 0 étiquette gcf sur 13 items. - L'écorce est la vue manquante : 3 trous sur 65, tous des écorces — mansiniyé 0 fichier, aki 0, kénèt 1. - Pl@ntNet publie en CC BY-SA là où iNaturalist est à ~93 % CC BY-NC : meilleur canal de contribution à effort égal. Correction d'une mesure fausse avant publication - Le premier rapport annonçait 28 vues manquantes sur 65. Le groupement OR de la recherche Commons ne se comporte pas comme attendu : « section » seul remonte 17 fichiers là où « (section OR sliced OR cut OR coupe) » en remonte 0. Un mot, une requête, avec gestion du débit — le chiffre réel est 3 sur 65. Publier les 28 aurait envoyé des bénévoles photographier ce qui existait déjà. Documents - docs/contribuer.md : six gestes, du nom kréyòl sur Wikidata (5 min) à l'enregistrement d'une voix, avec le tableau de choix de licence et la consigne de sécurité pour photographier le mancenillier. - docs/adr/0006-projet-participatif.md : aucun dépôt interne, aucune requête tierce au runtime, la porte de validation reste inchangée. - docs/courriers/appel-liberation-tramil.md : brouillon d'appel public, à n'envisager qu'après la demande privée. Publication au porteur. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -25,6 +25,22 @@ Cette règle n'est pas une consigne : c'est un script. `npm run validate:data` f
|
|||||||
le build si une épreuve s'appuie sur un média non validé, et `npm run test:porte` prouve que
|
le build si une épreuve s'appuie sur un média non validé, et `npm run test:porte` prouve que
|
||||||
ce refus se produit.
|
ce refus se produit.
|
||||||
|
|
||||||
|
## Un projet participatif — le manque est publié, pas masqué
|
||||||
|
|
||||||
|
Les fonds libres documentent mal la flore antillaise, et le kréyòl en est presque absent :
|
||||||
|
Wikidata enregistre **124 noms vernaculaires** pour les 13 espèces du projet — en chinois, en
|
||||||
|
anglais, en portugais, en slovène — et **aucun en kréyòl**.
|
||||||
|
|
||||||
|
Plutôt que de contourner ces trous, le projet les mesure et les publie. Une fiche sans photo
|
||||||
|
d'écorce le dit et explique comment le combler. `npm run rapport:manques` régénère
|
||||||
|
l'inventaire ; [`docs/contribuer.md`](docs/contribuer.md) explique les six gestes possibles,
|
||||||
|
de l'ajout d'un nom sur Wikidata — cinq minutes, aucun matériel — jusqu'à l'enregistrement
|
||||||
|
d'une voix kréyòl.
|
||||||
|
|
||||||
|
Contribuer se fait sur Wikimedia Commons, Wikidata, iNaturalist ou Pl@ntNet, **jamais dans le
|
||||||
|
jeu** : les contributions doivent servir à tout le monde, pas seulement à ce projet. Le jeu
|
||||||
|
se contente de liens ordinaires — il ne contacte aucun service pendant qu'on y joue.
|
||||||
|
|
||||||
## Commandes
|
## Commandes
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -36,6 +52,7 @@ npm run validate:data # la porte : schéma + règles métier
|
|||||||
npm run test:porte # prouve que la porte refuse ce qu'elle doit refuser
|
npm run test:porte # prouve que la porte refuse ce qu'elle doit refuser
|
||||||
npm run build:credits # régénère CREDITS.md depuis les données
|
npm run build:credits # régénère CREDITS.md depuis les données
|
||||||
npm run check:audio # liste les enregistrements kréyòl manquants
|
npm run check:audio # liste les enregistrements kréyòl manquants
|
||||||
|
npm run rapport:manques # mesure ce qui manque, dans le projet et dans les fonds publics
|
||||||
```
|
```
|
||||||
|
|
||||||
Ces scripts vivent dans `tools/data/`, hors du bundle. **Aucun appel réseau ne subsistera au
|
Ces scripts vivent dans `tools/data/`, hors du bundle. **Aucun appel réseau ne subsistera au
|
||||||
@@ -45,8 +62,10 @@ runtime du jeu** : tout est cuit au build.
|
|||||||
|
|
||||||
| Fichier | Contenu |
|
| Fichier | Contenu |
|
||||||
|---|---|
|
|---|---|
|
||||||
|
| [`docs/contribuer.md`](docs/contribuer.md) | **comment enrichir la connaissance** — six gestes, du plus rapide au plus engageant |
|
||||||
|
| [`docs/manques.md`](docs/manques.md) | ce qui manque, mesuré et daté — régénéré par script |
|
||||||
| [`docs/plan.md`](docs/plan.md) | les 7 sessions et leurs portes de sortie mesurables |
|
| [`docs/plan.md`](docs/plan.md) | les 7 sessions et leurs portes de sortie mesurables |
|
||||||
| [`docs/adr/`](docs/adr/) | les cinq décisions d'architecture et leurs motifs |
|
| [`docs/adr/`](docs/adr/) | les six décisions d'architecture et leurs motifs |
|
||||||
| [`docs/audit-sources.md`](docs/audit-sources.md) | ce qu'on prend à chaque source, sous quelle licence |
|
| [`docs/audit-sources.md`](docs/audit-sources.md) | ce qu'on prend à chaque source, sous quelle licence |
|
||||||
| [`docs/a-arbitrer.md`](docs/a-arbitrer.md) | ce qu'un humain doit trancher avant publication |
|
| [`docs/a-arbitrer.md`](docs/a-arbitrer.md) | ce qu'un humain doit trancher avant publication |
|
||||||
| [`docs/kreyol-a-relire.md`](docs/kreyol-a-relire.md) | les incertitudes orthographiques, signalées non corrigées |
|
| [`docs/kreyol-a-relire.md`](docs/kreyol-a-relire.md) | les incertitudes orthographiques, signalées non corrigées |
|
||||||
|
|||||||
@@ -0,0 +1,96 @@
|
|||||||
|
# ADR 0006 — Le manque est publié, pas masqué
|
||||||
|
|
||||||
|
- **Statut :** accepté
|
||||||
|
- **Date :** 2026-07-27
|
||||||
|
- **Session :** 0 — cadre et données
|
||||||
|
- **Décideur :** le porteur
|
||||||
|
|
||||||
|
## Contexte
|
||||||
|
|
||||||
|
Le projet se heurtait à un mur prévisible : les fonds libres documentent mal la flore
|
||||||
|
antillaise, et le premier réflexe d'un projet logiciel devant un trou de données est de le
|
||||||
|
contourner — masquer la fiche incomplète, remplacer la photo absente par un visuel généré,
|
||||||
|
afficher une saison approximative sans le dire.
|
||||||
|
|
||||||
|
Chacun de ces contournements dégrade ce que le jeu prétend enseigner, et surtout : **il perd
|
||||||
|
l'information**. Un trou masqué reste un trou. Un trou publié est une tâche que quelqu'un
|
||||||
|
peut prendre.
|
||||||
|
|
||||||
|
La mesure faite en session 0 donne à cette question un poids inattendu. Wikidata enregistre
|
||||||
|
**124 noms vernaculaires** pour les 13 espèces du projet — 33 pour le fruit à pain, 22 pour
|
||||||
|
la pomme d'eau, en chinois, anglais, portugais, slovène. **Aucun en kréyòl.** Le jeu n'est
|
||||||
|
donc pas seulement consommateur de communs numériques : il est, sur cette langue, à peu près
|
||||||
|
le seul à en produire.
|
||||||
|
|
||||||
|
## Décision
|
||||||
|
|
||||||
|
**Le manque est une information de première classe, affichée dans le produit.**
|
||||||
|
|
||||||
|
### Trois conséquences concrètes
|
||||||
|
|
||||||
|
1. **L'encyclopédie affiche ce qu'elle n'a pas.** Une fiche sans photo d'écorce le dit, et
|
||||||
|
explique comment la combler. Pas de silence, pas de remplissage.
|
||||||
|
2. **Le jeu comporte un écran de contribution** — « Ba on koudmen » — qui liste les manques
|
||||||
|
du moment et pointe vers les plateformes où les combler. Session 2.
|
||||||
|
3. **Le manque est mesuré par script, pas décrit à la main.**
|
||||||
|
`npm run rapport:manques` produit `docs/manques.md` : couverture des cinq vues
|
||||||
|
pédagogiques dans les fonds publics, présence du kréyòl sur Wikidata, observations par
|
||||||
|
île, et manques internes du dataset. Un chiffre daté vaut mieux qu'une impression.
|
||||||
|
|
||||||
|
### Ce que cette décision n'autorise pas
|
||||||
|
|
||||||
|
- **Aucune requête tierce au runtime.** Contribuer se fait sur les plateformes externes ; le
|
||||||
|
jeu se contente de liens `<a>` ordinaires. Le rapport de manques est calculé **au build**
|
||||||
|
(playbook P2) et embarqué comme donnée statique. Aucun appel à Commons, Wikidata,
|
||||||
|
iNaturalist ou Pl@ntNet pendant qu'on joue.
|
||||||
|
- **Aucun compte, aucune collecte.** Le projet ne reçoit pas les contributions : il oriente
|
||||||
|
vers Commons et Wikidata, où elles profitent à tout le monde. Un formulaire de dépôt
|
||||||
|
interne créerait un silo, exactement ce que le projet combat, et poserait la question de
|
||||||
|
la modération de contenus déposés par des enfants — que ce projet ne veut pas avoir à se
|
||||||
|
poser.
|
||||||
|
- **Aucun assouplissement de la porte de validation.** Une contribution passe par la même
|
||||||
|
relecture humaine nominative que le reste (ADR 0004). L'ouverture porte sur qui peut
|
||||||
|
proposer, jamais sur qui peut valider.
|
||||||
|
|
||||||
|
## Conséquences
|
||||||
|
|
||||||
|
### Sur les priorités de contenu
|
||||||
|
|
||||||
|
La mesure fait apparaître une hiérarchie que l'intuition n'aurait pas donnée :
|
||||||
|
|
||||||
|
- **L'écorce est la vue manquante** — 3 trous sur les 3 restants après correction de la
|
||||||
|
mesure, tous des écorces. C'est aussi l'indice le plus fiable sur le terrain, puisqu'un
|
||||||
|
tronc est visible toute l'année quand un fruit ne l'est que quelques mois.
|
||||||
|
- **Le mancenillier est le plus mal servi** : 56 fichiers sur Commons contre 1076 pour la
|
||||||
|
goyave, ses trois premiers résultats étant des gravures de 1780, 1816 et 1821. L'entrée la
|
||||||
|
plus critique du module de sécurité est la moins bien documentée.
|
||||||
|
- **Le kréyòl est à zéro partout**, ce qui rend la contribution Wikidata prioritaire alors
|
||||||
|
qu'elle ne demande ni appareil photo ni déplacement.
|
||||||
|
|
||||||
|
### Sur les sessions suivantes
|
||||||
|
|
||||||
|
- **Session 1** — l'encyclopédie affiche les manques de chaque fiche.
|
||||||
|
- **Session 2** — écran « Ba on koudmen », alimenté par le rapport baké au build.
|
||||||
|
- **Session 6** — `docs/contribuer.md` devient une page publique du site.
|
||||||
|
|
||||||
|
### Sur la mesure elle-même
|
||||||
|
|
||||||
|
Le premier rapport produit annonçait **28 vues manquantes sur 65**. Le chiffre était faux :
|
||||||
|
le groupement `OR` de la recherche Commons ne se comporte pas comme attendu — sur
|
||||||
|
*Annona muricata*, `section` seul remonte 17 fichiers là où `(section OR sliced OR cut OR
|
||||||
|
coupe)` en remonte 0. Après correction — un mot, une requête —, le chiffre réel est **3 sur
|
||||||
|
65**.
|
||||||
|
|
||||||
|
L'écart est instructif à deux titres. D'abord, publier 28 faux manques aurait envoyé des
|
||||||
|
bénévoles photographier ce qui existait déjà. Ensuite, une mesure qui produit un résultat
|
||||||
|
extrême — ici, `coupe` à zéro pour les treize espèces — doit être suspectée avant d'être
|
||||||
|
publiée. Le script gère désormais explicitement la limitation de débit des API, parce qu'une
|
||||||
|
réponse illisible comptée comme « 0 fichier » fabrique un manque imaginaire.
|
||||||
|
|
||||||
|
## Alternative écartée
|
||||||
|
|
||||||
|
**Un formulaire de dépôt de photos dans le jeu.** Plus simple pour le contributeur, mais il
|
||||||
|
crée un silo — les photos ne serviraient qu'à ce jeu —, impose une modération, et suppose un
|
||||||
|
serveur, un compte et une collecte. Orienter vers Commons demande un effort de plus au
|
||||||
|
contributeur et rend sa contribution utile bien au-delà du projet. C'est le sens même du mot
|
||||||
|
« communs ».
|
||||||
@@ -0,0 +1,280 @@
|
|||||||
|
# Contribuer — enrichir la connaissance, pas seulement le jeu
|
||||||
|
|
||||||
|
Ce projet a deux objets. Le premier est d'apprendre aux enfants à reconnaître les fruits de
|
||||||
|
leurs îles. Le second est de **réparer un trou dans les communs numériques** : ces espèces
|
||||||
|
sont mal documentées, et leurs noms kréyòl le sont encore moins.
|
||||||
|
|
||||||
|
Ces deux objets se servent l'un l'autre. Chaque photo versée à Wikimedia Commons, chaque
|
||||||
|
nom kréyòl inscrit sur Wikidata sert à ce jeu **et** à tous ceux qui viendront après —
|
||||||
|
enseignants, chercheurs, autres jeux, moteurs de recherche, assistants.
|
||||||
|
|
||||||
|
L'inventaire des manques, mesuré et daté, est dans [`manques.md`](manques.md). Il est
|
||||||
|
régénéré par `npm run rapport:manques`.
|
||||||
|
|
||||||
|
> **Note sur le jeu lui-même.** Le jeu ne contacte aucun service tiers pendant qu'on y joue :
|
||||||
|
> c'est une règle du projet. Contribuer se fait donc **en dehors** du jeu, sur les
|
||||||
|
> plateformes ci-dessous. Le jeu affichera les manques et pointera vers elles par des liens
|
||||||
|
> ordinaires — il ne collectera jamais rien.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ce qui manque vraiment — mesuré le 2026-07-27
|
||||||
|
|
||||||
|
Trois constats, du plus surprenant au plus prévisible.
|
||||||
|
|
||||||
|
### 1. Le kréyòl est absent des communs numériques
|
||||||
|
|
||||||
|
Sur les 13 espèces du projet, Wikidata enregistre **124 noms vernaculaires** — 33 pour le
|
||||||
|
fruit à pain, 22 pour la pomme d'eau, 12 pour la goyave, en chinois, en anglais, en
|
||||||
|
portugais, en slovène. **Aucun en kréyòl.** Zéro sur 13.
|
||||||
|
|
||||||
|
Ce n'est pas une petite lacune de catalogue. Cela veut dire qu'aujourd'hui, un moteur de
|
||||||
|
recherche, un assistant ou un chercheur qui interroge les données ouvertes du monde ne
|
||||||
|
trouvera nulle part que ce fruit s'appelle **kowosòl**.
|
||||||
|
|
||||||
|
### 2. L'écorce est la vue qui manque partout
|
||||||
|
|
||||||
|
Sur les cinq vues pédagogiques et les 13 espèces, **trois trous** subsistent dans les fonds
|
||||||
|
libres — et les trois sont des écorces :
|
||||||
|
|
||||||
|
| espèce | fichiers « écorce » trouvables sur Commons |
|
||||||
|
|---|---|
|
||||||
|
| mansiniyé — mancenillier | **0** |
|
||||||
|
| aki — akée | **0** |
|
||||||
|
| kénèt — quenette | **1** |
|
||||||
|
|
||||||
|
Trois autres sont tout juste au-dessus du seuil : kowosòl, zikak et lorié-jòn, avec 3
|
||||||
|
fichiers chacune.
|
||||||
|
|
||||||
|
C'est cohérent avec la pratique : on photographie un fruit, rarement un tronc. Or l'écorce
|
||||||
|
est l'un des quatre indices que le mode **Kaché** enseigne, et c'est souvent le plus fiable
|
||||||
|
sur le terrain — un fruit n'est visible que quelques mois par an, un tronc toute l'année.
|
||||||
|
|
||||||
|
### 3. Le mancenillier est le plus mal servi, alors qu'il est le plus important
|
||||||
|
|
||||||
|
L'arbre le plus dangereux du littoral antillais compte **56 fichiers** sur Commons, contre
|
||||||
|
1076 pour la goyave. Ses trois premiers résultats de recherche sont des **gravures de 1780,
|
||||||
|
1816 et 1821**. Aucune photographie moderne en tête de pile, aucune écorce.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Six gestes, du plus rapide au plus engageant
|
||||||
|
|
||||||
|
### A. Inscrire un nom kréyòl sur Wikidata — 5 minutes, aucun matériel
|
||||||
|
|
||||||
|
**Le geste le plus rentable du projet.** Il ne demande ni appareil photo ni déplacement, et
|
||||||
|
son effet dure.
|
||||||
|
|
||||||
|
1. Créer un compte sur [wikidata.org](https://www.wikidata.org) (facultatif mais recommandé).
|
||||||
|
2. Ouvrir l'élément de l'espèce — les liens sont dans [`manques.md`](manques.md), par
|
||||||
|
exemple [Q1709343](https://www.wikidata.org/wiki/Q1709343) pour le corossol.
|
||||||
|
3. Ajouter le nom kréyòl à **deux endroits** :
|
||||||
|
- l'**étiquette** en langue `gcf` (kréyòl gwadloupéyen) ;
|
||||||
|
- la propriété **P1843 « nom vernaculaire du taxon »**, valeur `kowosòl`, langue `gcf`.
|
||||||
|
4. Enregistrer avec un commentaire du type « nom vernaculaire kréyòl gwadloupéyen ».
|
||||||
|
|
||||||
|
**Important :** n'inscrire que des noms dont on est sûr, dans la norme gwadloupéyenne, et de
|
||||||
|
préférence après relecture. Les incertitudes du projet sont listées dans
|
||||||
|
[`kreyol-a-relire.md`](kreyol-a-relire.md) — inscrire une graphie douteuse sur Wikidata la
|
||||||
|
propage partout.
|
||||||
|
|
||||||
|
Si le code de langue `gcf` n'apparaît pas dans l'interface, le signaler dans une issue du
|
||||||
|
projet plutôt que de rabattre sur un autre code : le kréyòl haïtien (`ht`) est une **autre
|
||||||
|
langue**, et l'y mettre serait une erreur, pas un pis-aller.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### B. Rendre trouvable une photo qui existe déjà — 10 minutes
|
||||||
|
|
||||||
|
La recherche Commons porte sur le **texte** des pages de fichier, pas sur le contenu des
|
||||||
|
images. Une photo d'écorce de corossol dont la description dit seulement « Annona muricata »
|
||||||
|
est, en pratique, introuvable pour qui cherche une écorce.
|
||||||
|
|
||||||
|
Une partie des trous mesurés dans [`manques.md`](manques.md) sont donc des trous de
|
||||||
|
**description**, pas de photographie. Les combler ne demande qu'un navigateur :
|
||||||
|
|
||||||
|
1. Parcourir les fichiers de l'espèce (lien « tous les fichiers » dans `manques.md`).
|
||||||
|
2. Repérer une photo dont le sujet réel — écorce, feuille, coupe, port de l'arbre — n'est
|
||||||
|
pas dit dans la description.
|
||||||
|
3. Compléter la description en français **et** en anglais : « écorce / bark », « feuille /
|
||||||
|
leaf », « fruit coupé / cut fruit ».
|
||||||
|
4. Ajouter la donnée structurée **« représente » (depicts)** et la catégorie de l'espèce.
|
||||||
|
|
||||||
|
Aucun droit d'auteur en jeu : on décrit, on ne modifie pas l'image.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### C. Photographier ce qui manque — la contribution la plus utile
|
||||||
|
|
||||||
|
**Priorité absolue : les écorces**, et en premier celles du mancenillier, de l'akée et de la
|
||||||
|
quenette.
|
||||||
|
|
||||||
|
**Ce qu'une photo utile montre.** Un cadre net, une lumière du jour, un seul sujet :
|
||||||
|
|
||||||
|
| vue | ce qu'il faut voir | erreur fréquente |
|
||||||
|
|---|---|---|
|
||||||
|
| écorce | une portion de tronc de près, à hauteur de poitrine, texture lisible | photographier l'arbre entier |
|
||||||
|
| feuille | une feuille isolée à plat, dessus **et** dessous, avec la nervure | une masse de feuillage |
|
||||||
|
| coupe | le fruit coupé net, graines et chair visibles | un fruit croqué |
|
||||||
|
| fruit entier | le fruit sur l'arbre, avec une échelle si possible | un fruit sur une assiette, hors contexte |
|
||||||
|
| port | l'arbre entier, silhouette dégagée | un arbre pris dans un fourré |
|
||||||
|
|
||||||
|
**Sécurité — à lire avant de photographier les cinq plantes du module « Pa touché ».**
|
||||||
|
|
||||||
|
Le mancenillier ne se touche pas, ne s'approche pas sous la pluie, et son bois ne se brûle
|
||||||
|
pas. Il se photographie **au téléobjectif, à distance, par temps sec**. Les arbres sont
|
||||||
|
signalés par une bande de peinture rouge sur le littoral martiniquais et guadeloupéen : cela
|
||||||
|
lève tout doute d'identification et permet de garder ses distances. Aucune photo ne vaut une
|
||||||
|
brûlure.
|
||||||
|
|
||||||
|
**Ensuite, verser sur Wikimedia Commons :**
|
||||||
|
|
||||||
|
1. [Assistant de versement](https://commons.wikimedia.org/wiki/Special:UploadWizard) — **uniquement ses propres photos**.
|
||||||
|
2. Licence : **CC BY-SA 4.0** ou **CC0**. Voir le tableau des licences plus bas.
|
||||||
|
3. Décrire en français et en anglais, en nommant la vue.
|
||||||
|
4. Catégorie : `Category:<Nom scientifique>`, par exemple `Category:Hippomane mancinella`.
|
||||||
|
5. Ajouter la géolocalisation si elle n'expose pas un lieu privé.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### D. Observer sur iNaturalist ou Pl@ntNet — et bien choisir sa licence
|
||||||
|
|
||||||
|
Ces deux plateformes documentent la **répartition** et la **saisonnalité**, deux choses qui
|
||||||
|
manquent au projet (le mode Sézon n'est aujourd'hui sourcé par rien). Elles alimentent GBIF,
|
||||||
|
donc les données ouvertes mondiales.
|
||||||
|
|
||||||
|
**Le point de licence, qui change tout.** Mesuré sur le zikak en Guadeloupe :
|
||||||
|
|
||||||
|
| plateforme | licence des images observée | conséquence pour le projet |
|
||||||
|
|---|---|---|
|
||||||
|
| **iNaturalist** | ~93 % **CC BY-NC** | utilisable, mais consomme l'engagement non commercial |
|
||||||
|
| **Pl@ntNet** | **CC BY-SA** dans notre échantillon (jeu GBIF sous CC BY 4.0) | pleinement réutilisable |
|
||||||
|
|
||||||
|
Deux conseils qui découlent de cette mesure :
|
||||||
|
|
||||||
|
- **Sur iNaturalist, changez votre licence par défaut.** Dans les paramètres du compte, la
|
||||||
|
licence des photos est réglable une fois pour toutes. Passer de CC BY-NC à **CC BY** ou
|
||||||
|
**CC0** rend toutes vos observations pleinement réutilisables, sans effort supplémentaire.
|
||||||
|
C'est probablement le réglage le plus utile que puisse faire un naturaliste amateur.
|
||||||
|
- **Pl@ntNet sert aussi à vérifier avant de publier.** Photographier une feuille et laisser
|
||||||
|
l'application proposer une identification est un bon garde-fou — à condition de la traiter
|
||||||
|
comme un avis, pas comme une preuve. Une identification automatique reste une hypothèse.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### E. Enregistrer une voix kréyòl
|
||||||
|
|
||||||
|
Chaque nom doit être **entendu**, pas seulement lu : les enfants visés lisent mal le kréyòl
|
||||||
|
écrit, dont l'orthographe leur est peu familière. **Aucune synthèse vocale** n'est utilisée
|
||||||
|
dans ce projet.
|
||||||
|
|
||||||
|
La liste de ce qui manque : [`audio-a-enregistrer.md`](audio-a-enregistrer.md) — **13 noms à
|
||||||
|
ce jour, soit la totalité.**
|
||||||
|
|
||||||
|
Un téléphone dans une pièce calme suffit. Une voix locale vaut mieux qu'un studio. Le
|
||||||
|
locuteur est crédité nominativement, conserve ses droits, et doit donner une autorisation
|
||||||
|
écrite avant embarquement.
|
||||||
|
|
||||||
|
Une après-midi d'enregistrement vaut dix heures de développement.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### F. Écrire sur Wikipédia
|
||||||
|
|
||||||
|
L'article français d'une espèce mentionne rarement son nom kréyòl, ses usages locaux ou sa
|
||||||
|
saison aux Antilles. Ajouter un paragraphe **sourcé** est une contribution durable.
|
||||||
|
|
||||||
|
À noter : **il n'existe pas de Wikipédia en kréyòl gwadloupéyen.** Un projet est en
|
||||||
|
incubation sur [Wikimedia Incubator](https://incubator.wikimedia.org/wiki/Wp/gcf) — y
|
||||||
|
contribuer participe à le faire naître. Attention à ne pas le confondre avec la Wikipédia en
|
||||||
|
créole haïtien (`ht.wikipedia.org`), qui est une **autre langue**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Choisir la bonne licence
|
||||||
|
|
||||||
|
C'est le choix qui détermine si votre travail sera réutilisable. Il n'existe pas de
|
||||||
|
« libre de droit ».
|
||||||
|
|
||||||
|
| licence | ce qu'elle permet | recommandation |
|
||||||
|
|---|---|---|
|
||||||
|
| **CC0** | tout, sans condition | ✅ idéale pour ce projet |
|
||||||
|
| **CC BY 4.0** | tout, avec attribution | ✅ excellente |
|
||||||
|
| **CC BY-SA 4.0** | tout, avec attribution + partage à l'identique | ✅ recommandée, celle du projet |
|
||||||
|
| **CC BY-NC** | usage non commercial seulement | ⚠️ acceptée, mais engage définitivement le projet |
|
||||||
|
| tous droits réservés | rien sans autorisation écrite | ⛔ inutilisable |
|
||||||
|
|
||||||
|
**Pourquoi éviter le NC quand on peut.** La clause non commerciale interdit aussi des usages
|
||||||
|
que personne ne veut interdire : une école privée, une association qui vend un livret à prix
|
||||||
|
coûtant, un éditeur de manuels scolaires. Elle empêche par ailleurs de mélanger l'image à
|
||||||
|
une œuvre en partage à l'identique — d'où l'interdiction absolue de compositing dans ce
|
||||||
|
projet ([ADR 0001](adr/0001-licences.md)).
|
||||||
|
|
||||||
|
Si votre photo peut être en CC BY-SA plutôt qu'en CC BY-NC, elle servira à beaucoup plus de
|
||||||
|
monde, pour exactement le même effort.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Comment une contribution revient dans le jeu
|
||||||
|
|
||||||
|
```
|
||||||
|
vous photographiez, décrivez, ou nommez
|
||||||
|
↓
|
||||||
|
Commons · Wikidata · iNaturalist · Pl@ntNet
|
||||||
|
↓
|
||||||
|
npm run ingest:commons (récupère métadonnées et licences)
|
||||||
|
npm run rapport:manques (recalcule ce qui manque encore)
|
||||||
|
↓
|
||||||
|
relecture humaine : vue assignée, valide → true, validateur nommé
|
||||||
|
↓
|
||||||
|
npm run validate:data (la porte : refuse tout média non validé)
|
||||||
|
↓
|
||||||
|
dans le jeu
|
||||||
|
```
|
||||||
|
|
||||||
|
**Aucun automate ne peut valider un média à votre place.** Un script ne sait pas si une
|
||||||
|
photo montre bien un zikak — la recherche Commons remonte d'ailleurs, pour la quenette, une
|
||||||
|
photo de singe capucin en train d'en manger. La validation est un geste humain, nominatif,
|
||||||
|
et le fichier de données enregistre qui l'a posé.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## L'appel à la libération des données TRAMIL
|
||||||
|
|
||||||
|
TRAMIL est un programme de recherche sur la médecine traditionnelle caribéenne, hébergé par
|
||||||
|
le SCD de l'Université des Antilles à Schœlcher. Sa TRAMILothèque — photographies, planches
|
||||||
|
d'herbier, coupes microscopiques — est **la meilleure ressource iconographique existante
|
||||||
|
pour la flore antillaise**.
|
||||||
|
|
||||||
|
Elle est aujourd'hui inutilisable. Constaté le 2026-07-27 :
|
||||||
|
|
||||||
|
- le pied de page de `tramil.net` indique **« © Copyright 2017 TRAMIL all rights reserved »** ;
|
||||||
|
- le lien **« Legal notice » du site renvoie une erreur 404** — les conditions d'usage ne
|
||||||
|
sont donc même pas consultables.
|
||||||
|
|
||||||
|
Un fonds financé par la recherche publique, sur un patrimoine collectif caribéen, sans
|
||||||
|
licence lisible : le résultat est qu'il ne circule pas.
|
||||||
|
|
||||||
|
Ce projet ne prend aucun fichier TRAMIL et n'en prendra pas sans autorisation écrite. Il
|
||||||
|
porte en revanche une demande, à deux niveaux :
|
||||||
|
|
||||||
|
- **la démarche individuelle** — [`courriers/tramil.md`](courriers/tramil.md), une demande
|
||||||
|
d'autorisation classique pour un usage précis ;
|
||||||
|
- **l'appel public** — [`courriers/appel-liberation-tramil.md`](courriers/appel-liberation-tramil.md),
|
||||||
|
qui demande l'adoption d'une licence libre sur le fonds. À cosigner et à publier, si le
|
||||||
|
porteur le juge opportun.
|
||||||
|
|
||||||
|
Le second n'est pas une attaque contre TRAMIL : c'est une demande adressée à une institution
|
||||||
|
dont le travail mérite d'être diffusé, et qu'une licence absente empêche de diffuser.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Signaler sans contribuer
|
||||||
|
|
||||||
|
Voir une erreur est déjà une contribution. Une photo qui ne montre pas la bonne espèce, un
|
||||||
|
nom kréyòl mal orthographié, une saison fausse, un indice botanique douteux : ouvrir une
|
||||||
|
issue suffit.
|
||||||
|
|
||||||
|
Le projet préfère un signalement approximatif à une erreur qui reste. C'est particulièrement
|
||||||
|
vrai du module « Pa touché » : sur les plantes dangereuses, un doute exprimé vaut mieux
|
||||||
|
qu'une politesse.
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
# Appel public à la libération des données TRAMIL — brouillon
|
||||||
|
|
||||||
|
> **Statut : brouillon. Rien n'est publié.**
|
||||||
|
>
|
||||||
|
> Ce texte est destiné à être **cosigné puis rendu public** — sur o-k-i.net, envoyé à
|
||||||
|
> l'Université des Antilles, aux rectorats de Martinique et de Guadeloupe, et aux
|
||||||
|
> associations d'éducation à l'environnement de la région.
|
||||||
|
>
|
||||||
|
> **Deux précautions avant toute publication.**
|
||||||
|
>
|
||||||
|
> 1. **Envoyer d'abord la demande privée** ([`tramil.md`](tramil.md)) et lui laisser un délai
|
||||||
|
> réel — deux à trois mois. Un appel public lancé avant toute prise de contact serait à la
|
||||||
|
> fois discourtois et moins efficace : la voie normale obtient souvent ce qu'elle demande.
|
||||||
|
> 2. **Faire relire le texte** par quelqu'un qui connaît les rapports institutionnels
|
||||||
|
> locaux. TRAMIL est un partenaire potentiel, pas un adversaire ; le ton doit rester celui
|
||||||
|
> d'une demande entre gens qui poursuivent le même but.
|
||||||
|
>
|
||||||
|
> La décision de publier appartient au porteur.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Pour que le patrimoine végétal caribéen circule
|
||||||
|
|
||||||
|
**Appel à l'adoption d'une licence libre sur les ressources du programme TRAMIL**
|
||||||
|
|
||||||
|
### Ce que TRAMIL a construit
|
||||||
|
|
||||||
|
Depuis plus de trente ans, le programme TRAMIL — *Programme de recherche appliquée à la
|
||||||
|
médecine populaire de la Caraïbe* — documente les usages traditionnels des plantes de la
|
||||||
|
région. Enquêtes de terrain, validation scientifique, publications multilingues, et une
|
||||||
|
iconographie considérable : photographies, planches d'herbier, coupes microscopiques.
|
||||||
|
|
||||||
|
C'est, à notre connaissance, la ressource la plus complète existante sur la flore utile
|
||||||
|
caribéenne. Elle est le fruit d'un travail collectif, largement financé par la recherche
|
||||||
|
publique, portant sur un savoir qui appartient d'abord aux populations de la région.
|
||||||
|
|
||||||
|
### Ce qui empêche ce travail de servir
|
||||||
|
|
||||||
|
Ce fonds ne circule pas.
|
||||||
|
|
||||||
|
Constaté le 27 juillet 2026 :
|
||||||
|
|
||||||
|
- le site `tramil.net` porte en pied de page la mention **« © Copyright 2017 TRAMIL all
|
||||||
|
rights reserved »** ;
|
||||||
|
- le lien **« Legal notice »** du site renvoie une **erreur 404**.
|
||||||
|
|
||||||
|
Autrement dit : aucune licence n'est accordée, et les conditions d'usage ne sont pas
|
||||||
|
consultables. Pour un enseignant, un développeur d'outil éducatif, une association ou une
|
||||||
|
collectivité, la conséquence pratique est simple — **on ne peut rien en faire**, même à but
|
||||||
|
strictement pédagogique et non lucratif.
|
||||||
|
|
||||||
|
Nous ne pensons pas que ce soit un choix délibéré. C'est plus vraisemblablement un impensé :
|
||||||
|
la question de la licence ne s'est pas posée à une époque où elle ne se posait à personne, et
|
||||||
|
personne ne l'a rouverte depuis. C'est précisément pour cela qu'un appel a un sens.
|
||||||
|
|
||||||
|
### Ce que nous demandons
|
||||||
|
|
||||||
|
L'adoption d'une **licence libre explicite** sur tout ou partie du fonds TRAMIL —
|
||||||
|
prioritairement l'iconographie et les fiches d'espèces —, par exemple :
|
||||||
|
|
||||||
|
- **CC BY 4.0** (attribution seule), ou
|
||||||
|
- **CC BY-SA 4.0** (attribution et partage à l'identique),
|
||||||
|
|
||||||
|
et le versement des images concernées à **Wikimedia Commons**, où elles deviendraient
|
||||||
|
consultables, réutilisables et durables.
|
||||||
|
|
||||||
|
À défaut d'une ouverture complète, une ouverture partielle serait déjà décisive : les fiches
|
||||||
|
d'espèces sans l'iconographie, ou l'iconographie des seules espèces les plus dangereuses —
|
||||||
|
mancenillier, médicinier, laurier-jaune, akée —, dont la reconnaissance est un enjeu de
|
||||||
|
santé publique pour les enfants de la région.
|
||||||
|
|
||||||
|
### Pourquoi maintenant
|
||||||
|
|
||||||
|
Trois raisons.
|
||||||
|
|
||||||
|
**La connaissance se perd plus vite que le fonds ne s'ouvre.** Une partie des enfants
|
||||||
|
antillais ne sait plus nommer les fruits de son île, ni reconnaître les arbres qui les
|
||||||
|
portent. Les outils qui pourraient y remédier existent ; ce qui leur manque, ce sont des
|
||||||
|
images utilisables.
|
||||||
|
|
||||||
|
**Le vide se remplit tout seul, et mal.** Les modèles génératifs produisent aujourd'hui des
|
||||||
|
images de corossol, de quenette et de zikak, plausibles et fausses. À défaut de
|
||||||
|
photographies libres, ce sont ces images qui illustreront la flore caribéenne — dans les
|
||||||
|
supports scolaires, dans les moteurs de recherche, dans les réponses des assistants. Un fonds
|
||||||
|
scientifique fermé ne protège pas contre cela : il laisse le champ libre.
|
||||||
|
|
||||||
|
**Les données ouvertes sont devenues la condition d'exister.** Les 13 espèces que documente
|
||||||
|
notre projet totalisent 124 noms vernaculaires enregistrés dans Wikidata — en chinois, en
|
||||||
|
anglais, en portugais, en slovène. **Aucun en kréyòl.** Ce qui n'est pas dans les communs
|
||||||
|
numériques est, pour une part croissante du monde, ce qui n'existe pas.
|
||||||
|
|
||||||
|
### Ce que nous nous engageons à faire
|
||||||
|
|
||||||
|
Nous, signataires, nous engageons à :
|
||||||
|
|
||||||
|
- **créditer intégralement** TRAMIL et chaque auteur, dans nos outils et dans nos publications ;
|
||||||
|
- **verser en retour** nos propres contributions — photographies, enregistrements de noms
|
||||||
|
kréyòl, données de saisonnalité — sous licence libre, à Wikimedia Commons et à Wikidata ;
|
||||||
|
- **respecter l'intégrité scientifique** des contenus : aucune modification, aucun
|
||||||
|
recadrage-recomposition, aucune reprise hors contexte ;
|
||||||
|
- **retirer sans délai** tout contenu sur simple demande.
|
||||||
|
|
||||||
|
En attendant une réponse, nous nous interdisons tout usage de fichiers TRAMIL. Notre projet
|
||||||
|
cite TRAMIL comme source de vérification factuelle, et n'en reprend aucune image.
|
||||||
|
|
||||||
|
### Signataires
|
||||||
|
|
||||||
|
| Organisation / personne | Qualité | Date |
|
||||||
|
|---|---|---|
|
||||||
|
| ORGANISATION KA INTERNATIONALE | porteur du projet KI FWI SA YÉ ? | |
|
||||||
|
| | | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Contact : [courriel du porteur] · o-k-i.net*
|
||||||
|
*Ce projet est libre : code sous AGPL-3.0, contenu sous CC BY-SA 4.0, aucune publicité,
|
||||||
|
aucun compte, aucun traceur, aucune collecte de données sur les enfants.*
|
||||||
+514
@@ -0,0 +1,514 @@
|
|||||||
|
# Ce qui manque — et comment le combler
|
||||||
|
|
||||||
|
> Généré par `npm run rapport:manques` le 2026-07-27.
|
||||||
|
> Sortie de script : ne pas éditer à la main.
|
||||||
|
|
||||||
|
Ce projet est participatif. Un manque n’est pas un défaut à masquer : c’est une tâche
|
||||||
|
publiée. Chaque ligne ci-dessous est quelque chose qu’une personne peut aller combler,
|
||||||
|
et dont le bénéfice dépasse ce jeu — une photo versée à Wikimedia Commons sert à tous.
|
||||||
|
|
||||||
|
**Comment contribuer :** [`docs/contribuer.md`](contribuer.md).
|
||||||
|
|
||||||
|
## Comment lire ce rapport
|
||||||
|
|
||||||
|
Une vue est déclarée **manquante** quand les fonds publics contiennent moins de 3 fichiers
|
||||||
|
trouvables pour elle. La mesure porte sur le **texte** des pages de fichier Commons, pas sur
|
||||||
|
le contenu des images : une photo de feuille dont la description ne dit pas « leaf » est
|
||||||
|
comptée absente. C’est volontaire — une photo que personne ne peut trouver est presque
|
||||||
|
aussi inutile qu’une photo qui n’existe pas, et **la redécrire est déjà une contribution**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Vue d’ensemble
|
||||||
|
|
||||||
|
| entrée | fichiers Commons | fruit | coupe | feuille | écorce | port | médias validés |
|
||||||
|
|---|---|---|---|---|---|---|---|
|
||||||
|
| `kenet` | 30 | 14 | 8 | 3 | **1** ⚠ | 3 | 0/3 |
|
||||||
|
| `mansiniye` | 56 | 6 | 9 | 4 | **0** ⚠ | 20 | 0/3 |
|
||||||
|
| `ake` | 75 | 23 | 6 | 4 | **0** ⚠ | 14 | 0/3 |
|
||||||
|
| `pom-site` | 93 | 36 | 9 | 6 | 7 | 12 | 0/3 |
|
||||||
|
| `fwiyapen` | 851 | 222 | 147 | 73 | 25 | 438 | 0/3 |
|
||||||
|
| `gouyav` | 1076 | 153 | 29 | 75 | 13 | 116 | 0/3 |
|
||||||
|
| `kowosol` | 395 | 209 | 17 | 24 | 3 | 66 | 0/3 |
|
||||||
|
| `medisinye` | 356 | 67 | 13 | 86 | 10 | 23 | 0/3 |
|
||||||
|
| `pom-dlo` | 882 | 221 | 156 | 22 | 29 | 406 | 0/3 |
|
||||||
|
| `pom-kannel` | 546 | 321 | 46 | 65 | 13 | 69 | 0/3 |
|
||||||
|
| `zikak` | 78 | 19 | 14 | 19 | 3 | 6 | 0/3 |
|
||||||
|
| `lorye-jonn` | 416 | 62 | 27 | 79 | 3 | 145 | 0/3 |
|
||||||
|
| `pom-kajou` | 827 | 180 | 94 | 39 | 29 | 198 | 0/3 |
|
||||||
|
|
||||||
|
**3 vues manquantes sur 65** dans les fonds publics libres.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Le kréyòl dans les communs numériques
|
||||||
|
|
||||||
|
Un nom qui n’existe que dans ce jeu reste un nom perdu partout ailleurs. Wikidata offre
|
||||||
|
deux emplacements pour l’inscrire durablement : l’**étiquette** de langue `gcf`, et la
|
||||||
|
propriété **P1843**, « nom vernaculaire du taxon ».
|
||||||
|
|
||||||
|
**0 étiquette(s) kréyòl sur 13** · **0 nom(s) vernaculaire(s) kréyòl sur 13**.
|
||||||
|
|
||||||
|
| entrée | nom kréyòl | étiquette `gcf` | noms vernaculaires enregistrés | dont kréyòl |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| [`kenet`](https://www.wikidata.org/wiki/Q279728) | kénèt | **absente** ⚠ | 2 | **non** ⚠ |
|
||||||
|
| [`mansiniye`](https://www.wikidata.org/wiki/Q636480) | mansiniyé | **absente** ⚠ | 1 | **non** ⚠ |
|
||||||
|
| [`ake`](https://www.wikidata.org/wiki/Q417145) | aki | **absente** ⚠ | 5 | **non** ⚠ |
|
||||||
|
| [`pom-site`](https://www.wikidata.org/wiki/Q500383) | pòm-sitè | **absente** ⚠ | 3 | **non** ⚠ |
|
||||||
|
| [`fwiyapen`](https://www.wikidata.org/wiki/Q14677) | fwiyapen | **absente** ⚠ | 33 | **non** ⚠ |
|
||||||
|
| [`gouyav`](https://www.wikidata.org/wiki/Q166843) | gouyav | **absente** ⚠ | 12 | **non** ⚠ |
|
||||||
|
| [`kowosol`](https://www.wikidata.org/wiki/Q1709343) | kowosòl | **absente** ⚠ | 7 | **non** ⚠ |
|
||||||
|
| [`medisinye`](https://www.wikidata.org/wiki/Q74644) | medsinyé | **absente** ⚠ | 10 | **non** ⚠ |
|
||||||
|
| [`pom-dlo`](https://www.wikidata.org/wiki/Q11643111) | pòm-dlo | **absente** ⚠ | 22 | **non** ⚠ |
|
||||||
|
| [`pom-kannel`](https://www.wikidata.org/wiki/Q275620) | pòm-kannèl | **absente** ⚠ | 10 | **non** ⚠ |
|
||||||
|
| [`zikak`](https://www.wikidata.org/wiki/Q577669) | zikak | **absente** ⚠ | 6 | **non** ⚠ |
|
||||||
|
| [`lorye-jonn`](https://www.wikidata.org/wiki/Q10694475) | lorié-jòn | **absente** ⚠ | 2 | **non** ⚠ |
|
||||||
|
| [`pom-kajou`](https://www.wikidata.org/wiki/Q34007) | pòm-kajou | **absente** ⚠ | 11 | **non** ⚠ |
|
||||||
|
|
||||||
|
C’est la contribution la moins coûteuse du projet et l’une des plus durables : quelques
|
||||||
|
minutes par entrée, un bénéfice qui dépasse largement ce jeu. Marche à suivre dans
|
||||||
|
[`contribuer.md`](contribuer.md).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## kénèt — *Melicoccus bijugatus*
|
||||||
|
|
||||||
|
`kenet` · fruit · Guadeloupe, Martinique
|
||||||
|
|
||||||
|
### 📷 Photographies à prendre (1 vue(s))
|
||||||
|
|
||||||
|
- **ecorce** — 1 fichier(s) trouvable(s) sur Commons.
|
||||||
|
Ce qu’il faut montrer : lisse, grise
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 112 | 35 |
|
||||||
|
| Martinique | 52 | 39 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
- saisonnalité non sourcée et non ventilée par île
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Melicoccus%20bijugatus%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q279728](https://www.wikidata.org/wiki/Q279728) · [GBIF 3189990](https://www.gbif.org/species/3189990)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Melicoccus%20bijugatus) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
|
|
||||||
|
## mansiniyé — *Hippomane mancinella*
|
||||||
|
|
||||||
|
`mansiniye` · ⚠ plante dangereuse · Guadeloupe, Martinique
|
||||||
|
|
||||||
|
### 📷 Photographies à prendre (1 vue(s))
|
||||||
|
|
||||||
|
- **ecorce** — 0 fichier(s) trouvable(s) sur Commons.
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 146 | 65 |
|
||||||
|
| Martinique | 151 | 86 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- 0 photographie(s) parmi les candidats, 3 planche(s) ancienne(s)
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Hippomane%20mancinella%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q636480](https://www.wikidata.org/wiki/Q636480) · [GBIF 3063705](https://www.gbif.org/species/3063705)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Hippomane%20mancinella) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
|
|
||||||
|
## aki — *Blighia sapida*
|
||||||
|
|
||||||
|
`ake` · ⚠ plante dangereuse · Guadeloupe, Martinique, Guyane
|
||||||
|
|
||||||
|
### 📷 Photographies à prendre (1 vue(s))
|
||||||
|
|
||||||
|
- **ecorce** — 0 fichier(s) trouvable(s) sur Commons.
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 4 | 1 |
|
||||||
|
| Martinique | 27 | 6 |
|
||||||
|
| Guyane | 7 | 2 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Blighia%20sapida%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q417145](https://www.wikidata.org/wiki/Q417145) · [GBIF 3189955](https://www.gbif.org/species/3189955)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Blighia%20sapida) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
|
|
||||||
|
## pòm-sitè — *Spondias dulcis*
|
||||||
|
|
||||||
|
`pom-site` · fruit · Guadeloupe, Martinique, Guyane
|
||||||
|
|
||||||
|
### 📷 Photographies
|
||||||
|
|
||||||
|
Les cinq vues sont couvertes dans les fonds publics. Reste à les choisir et les valider.
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 18 | 11 |
|
||||||
|
| Martinique | 9 | 5 |
|
||||||
|
| Guyane | 12 | 7 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- 0 photographie(s) parmi les candidats, 3 planche(s) ancienne(s)
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
- saisonnalité non sourcée et non ventilée par île
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Spondias%20dulcis%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q500383](https://www.wikidata.org/wiki/Q500383) · [GBIF 3190595](https://www.gbif.org/species/3190595)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Spondias%20dulcis) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
|
|
||||||
|
## fwiyapen — *Artocarpus altilis*
|
||||||
|
|
||||||
|
`fwiyapen` · fruit · Guadeloupe, Martinique, Guyane, La Réunion
|
||||||
|
|
||||||
|
### 📷 Photographies
|
||||||
|
|
||||||
|
Les cinq vues sont couvertes dans les fonds publics. Reste à les choisir et les valider.
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 448 | 42 |
|
||||||
|
| Martinique | 376 | 36 |
|
||||||
|
| Guyane | 66 | 47 |
|
||||||
|
| La Réunion | 85 | 11 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
- saisonnalité non sourcée et non ventilée par île
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Artocarpus%20altilis%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q14677](https://www.wikidata.org/wiki/Q14677) · [GBIF 2984573](https://www.gbif.org/species/2984573)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Artocarpus%20altilis) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
|
|
||||||
|
## gouyav — *Psidium guajava*
|
||||||
|
|
||||||
|
`gouyav` · fruit · Guadeloupe, Martinique, Guyane, La Réunion
|
||||||
|
|
||||||
|
### 📷 Photographies
|
||||||
|
|
||||||
|
Les cinq vues sont couvertes dans les fonds publics. Reste à les choisir et les valider.
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 193 | 51 |
|
||||||
|
| Martinique | 212 | 35 |
|
||||||
|
| Guyane | 58 | 38 |
|
||||||
|
| La Réunion | 476 | 18 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
- saisonnalité non sourcée et non ventilée par île
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Psidium%20guajava%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q166843](https://www.wikidata.org/wiki/Q166843) · [GBIF 5420380](https://www.gbif.org/species/5420380)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Psidium%20guajava) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
|
|
||||||
|
## kowosòl — *Annona muricata*
|
||||||
|
|
||||||
|
`kowosol` · fruit · Guadeloupe, Martinique, Guyane
|
||||||
|
|
||||||
|
### 📷 Photographies
|
||||||
|
|
||||||
|
Les cinq vues sont couvertes dans les fonds publics. Reste à les choisir et les valider.
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 50 | 28 |
|
||||||
|
| Martinique | 30 | 21 |
|
||||||
|
| Guyane | 29 | 18 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
- saisonnalité non sourcée et non ventilée par île
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Annona%20muricata%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q1709343](https://www.wikidata.org/wiki/Q1709343) · [GBIF 5407273](https://www.gbif.org/species/5407273)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Annona%20muricata) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
|
|
||||||
|
## medsinyé — *Jatropha curcas*
|
||||||
|
|
||||||
|
`medisinye` · ⚠ plante dangereuse · Guadeloupe, Martinique, Guyane
|
||||||
|
|
||||||
|
### 📷 Photographies
|
||||||
|
|
||||||
|
Les cinq vues sont couvertes dans les fonds publics. Reste à les choisir et les valider.
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 21 | 7 |
|
||||||
|
| Martinique | 24 | 12 |
|
||||||
|
| Guyane | 16 | 13 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- 1 photographie(s) parmi les candidats, 2 planche(s) ancienne(s)
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Jatropha%20curcas%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q74644](https://www.wikidata.org/wiki/Q74644) · [GBIF 3072953](https://www.gbif.org/species/3072953)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Jatropha%20curcas) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
|
|
||||||
|
## pòm-dlo — *Syzygium samarangense*
|
||||||
|
|
||||||
|
`pom-dlo` · fruit · Guadeloupe, Martinique, Guyane, La Réunion
|
||||||
|
|
||||||
|
### 📷 Photographies
|
||||||
|
|
||||||
|
Les cinq vues sont couvertes dans les fonds publics. Reste à les choisir et les valider.
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 9 | 5 |
|
||||||
|
| Martinique | 5 | 1 |
|
||||||
|
| Guyane | 5 | 2 |
|
||||||
|
| La Réunion | 30 | 12 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
- saisonnalité non sourcée et non ventilée par île
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Syzygium%20samarangense%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q11643111](https://www.wikidata.org/wiki/Q11643111) · [GBIF 3183180](https://www.gbif.org/species/3183180)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Syzygium%20samarangense) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
|
|
||||||
|
## pòm-kannèl — *Annona squamosa*
|
||||||
|
|
||||||
|
`pom-kannel` · fruit · Guadeloupe, Martinique
|
||||||
|
|
||||||
|
### 📷 Photographies
|
||||||
|
|
||||||
|
Les cinq vues sont couvertes dans les fonds publics. Reste à les choisir et les valider.
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 66 | 27 |
|
||||||
|
| Martinique | 52 | 27 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
- saisonnalité non sourcée et non ventilée par île
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Annona%20squamosa%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q275620](https://www.wikidata.org/wiki/Q275620) · [GBIF 5407099](https://www.gbif.org/species/5407099)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Annona%20squamosa) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
|
|
||||||
|
## zikak — *Chrysobalanus icaco*
|
||||||
|
|
||||||
|
`zikak` · fruit · Guadeloupe, Martinique, Guyane
|
||||||
|
|
||||||
|
### 📷 Photographies
|
||||||
|
|
||||||
|
Les cinq vues sont couvertes dans les fonds publics. Reste à les choisir et les valider.
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 124 | 26 |
|
||||||
|
| Martinique | 101 | 29 |
|
||||||
|
| Guyane | 231 | 174 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
- saisonnalité non sourcée et non ventilée par île
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Chrysobalanus%20icaco%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q577669](https://www.wikidata.org/wiki/Q577669) · [GBIF 2985082](https://www.gbif.org/species/2985082)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Chrysobalanus%20icaco) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
|
|
||||||
|
## lorié-jòn — *Cascabela thevetia*
|
||||||
|
|
||||||
|
`lorye-jonn` · ⚠ plante dangereuse · Guadeloupe, Martinique, Guyane, La Réunion
|
||||||
|
|
||||||
|
### 📷 Photographies
|
||||||
|
|
||||||
|
Les cinq vues sont couvertes dans les fonds publics. Reste à les choisir et les valider.
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 14 | 10 |
|
||||||
|
| Martinique | 7 | 4 |
|
||||||
|
| Guyane | 42 | 38 |
|
||||||
|
| La Réunion | 133 | 16 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Cascabela%20thevetia%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q10694475](https://www.wikidata.org/wiki/Q10694475) · [GBIF 3169652](https://www.gbif.org/species/3169652)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Cascabela%20thevetia) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
|
|
||||||
|
## pòm-kajou — *Anacardium occidentale*
|
||||||
|
|
||||||
|
`pom-kajou` · ⚠ plante dangereuse · Guadeloupe, Martinique, Guyane
|
||||||
|
|
||||||
|
### 📷 Photographies
|
||||||
|
|
||||||
|
Les cinq vues sont couvertes dans les fonds publics. Reste à les choisir et les valider.
|
||||||
|
|
||||||
|
### 🗺️ Où l’espèce est déjà observée
|
||||||
|
|
||||||
|
| île | observations GBIF | dont avec image |
|
||||||
|
|---|---|---|
|
||||||
|
| Guadeloupe | 116 | 28 |
|
||||||
|
| Martinique | 59 | 23 |
|
||||||
|
| Guyane | 205 | 146 |
|
||||||
|
|
||||||
|
Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut
|
||||||
|
souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.
|
||||||
|
|
||||||
|
### 📝 Manques dans les données du projet
|
||||||
|
|
||||||
|
- 0 média validé sur 3 — il en faut au moins 2
|
||||||
|
- aucune vue assignée — personne n’a encore regardé les images
|
||||||
|
- aucun enregistrement du nom kréyòl
|
||||||
|
- aucune source factuelle citée pour les indices
|
||||||
|
- orthographe kréyòl non relue
|
||||||
|
|
||||||
|
### 🔗 Aller voir
|
||||||
|
|
||||||
|
- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=%22Anacardium%20occidentale%22%20filetype%3Abitmap&ns6=1)
|
||||||
|
- [Wikidata Q34007](https://www.wikidata.org/wiki/Q34007) · [GBIF 5421368](https://www.gbif.org/species/5421368)
|
||||||
|
- [iNaturalist](https://www.inaturalist.org/search?q=Anacardium%20occidentale) · [Pl@ntNet](https://identify.plantnet.org/)
|
||||||
+18
-4
@@ -10,10 +10,10 @@
|
|||||||
|
|
||||||
## Session 0 — Cadre et données ✅ terminée
|
## Session 0 — Cadre et données ✅ terminée
|
||||||
|
|
||||||
**Livré.** Dépôt initialisé, cinq ADR, audit des sept sources, `fruits.schema.json`,
|
**Livré.** Dépôt initialisé, six ADR, audit des sept sources, `fruits.schema.json`,
|
||||||
validateur exécutable et son test, 13 entrées vérifiées contre Wikidata et GBIF, 39 médias
|
validateur exécutable et son test, 13 entrées vérifiées contre Wikidata et GBIF, 39 médias
|
||||||
candidats sourcés sur Commons, `CREDITS.md` généré, licences, lettres-types, points à
|
candidats sourcés sur Commons, `CREDITS.md` généré, licences, lettres-types, points à
|
||||||
arbitrer.
|
arbitrer, inventaire mesuré des manques et guide de contribution.
|
||||||
|
|
||||||
**Porte de sortie — franchie.**
|
**Porte de sortie — franchie.**
|
||||||
|
|
||||||
@@ -25,6 +25,7 @@ arbitrer.
|
|||||||
| Médias validés | 0 attendu | 0 ✅ |
|
| Médias validés | 0 attendu | 0 ✅ |
|
||||||
| `npm run validate:data` | vert | vert ✅ |
|
| `npm run validate:data` | vert | vert ✅ |
|
||||||
| `npm run test:porte` | 10/10 | 10/10 ✅ |
|
| `npm run test:porte` | 10/10 | 10/10 ✅ |
|
||||||
|
| Manques mesurés, pas estimés | rapport daté | 3 vues sur 65 ✅ |
|
||||||
| Code applicatif écrit | aucun | aucun ✅ |
|
| Code applicatif écrit | aucun | aucun ✅ |
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -48,9 +49,11 @@ entrée, avec JSON-LD, hreflang et le traitement `PRD_AI_Overview`.
|
|||||||
| Requêtes vers un domaine tiers | **0**, vérifié par grep du build |
|
| Requêtes vers un domaine tiers | **0**, vérifié par grep du build |
|
||||||
| `npm run check` | 0 erreur, 0 warning |
|
| `npm run check` | 0 erreur, 0 warning |
|
||||||
| `svelte-autofixer` sur chaque composant modifié | silencieux |
|
| `svelte-autofixer` sur chaque composant modifié | silencieux |
|
||||||
|
| Chaque fiche affiche ce qui lui manque | vrai pour les 13 (ADR 0006) |
|
||||||
|
|
||||||
**Dépendance humaine :** aucune. La session 1 fonctionne avec 0 média validé — les fiches
|
**Dépendance humaine :** aucune. La session 1 fonctionne avec 0 média validé — les fiches
|
||||||
affichent le texte, la taxonomie et les crédits, pas encore les photos.
|
affichent le texte, la taxonomie, les crédits et **les manques**, pas encore les photos.
|
||||||
|
Une fiche incomplète ne se masque pas : elle dit ce qui lui manque et comment le combler.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -73,6 +76,8 @@ score en count-up (rAF → écriture DOM directe, span `aria-hidden` + valeur fi
|
|||||||
| Progression conservée après rechargement | vérifiée |
|
| Progression conservée après rechargement | vérifiée |
|
||||||
| Cibles tactiles | ≥ 44 px, testées par `elementFromPoint` en 390 px |
|
| Cibles tactiles | ≥ 44 px, testées par `elementFromPoint` en 390 px |
|
||||||
| JS initial | toujours ≤ 170 Ko gzip |
|
| JS initial | toujours ≤ 170 Ko gzip |
|
||||||
|
| Écran « Ba on koudmen » | présent, alimenté par le rapport baké au build |
|
||||||
|
| Appels réseau depuis l'écran de contribution | **0** — des liens, pas des requêtes |
|
||||||
|
|
||||||
**Si le jeu n'est pas plaisant ici, ne pas passer à la session 3.** Ajouter un moteur de jeu
|
**Si le jeu n'est pas plaisant ici, ne pas passer à la session 3.** Ajouter un moteur de jeu
|
||||||
à un problème de game design ajoute du poids au problème. Le mode Sézon reste non publiable
|
à un problème de game design ajoute du poids au problème. Le mode Sézon reste non publiable
|
||||||
@@ -178,6 +183,8 @@ Performance, accessibilité, DoD §8 du playbook, `.htaccess` et `_headers`, dé
|
|||||||
| Lighthouse mobile, accueil et fiche | ≥ 90 / 95 / 95 / 95 |
|
| Lighthouse mobile, accueil et fiche | ≥ 90 / 95 / 95 / 95 |
|
||||||
| Navigation clavier sur les cinq modes | complète |
|
| Navigation clavier sur les cinq modes | complète |
|
||||||
| Écran de crédits dans le jeu | présent, généré depuis les données |
|
| Écran de crédits dans le jeu | présent, généré depuis les données |
|
||||||
|
| `docs/contribuer.md` publié comme page du site | fait |
|
||||||
|
| Rapport de manques à jour à la date du build | fait |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -186,12 +193,19 @@ Performance, accessibilité, DoD §8 du playbook, `.htaccess` et `_headers`, dé
|
|||||||
Ces cinq points conditionnent la livraison et ne figurent dans aucune session parce
|
Ces cinq points conditionnent la livraison et ne figurent dans aucune session parce
|
||||||
qu'aucune session ne peut les produire :
|
qu'aucune session ne peut les produire :
|
||||||
|
|
||||||
1. **Aller voir TRAMIL à Schœlcher.** Lettre prête : `docs/courriers/tramil.md`.
|
1. **Aller voir TRAMIL à Schœlcher.** Lettre prête : `docs/courriers/tramil.md`. Si la voie
|
||||||
|
privée n'aboutit pas sous deux à trois mois, l'appel public est rédigé :
|
||||||
|
`docs/courriers/appel-liberation-tramil.md` — à cosigner, la décision de publier
|
||||||
|
appartient au porteur.
|
||||||
2. **Enregistrer les voix kréyòl.** Liste prête : `docs/audio-a-enregistrer.md`.
|
2. **Enregistrer les voix kréyòl.** Liste prête : `docs/audio-a-enregistrer.md`.
|
||||||
3. **Photographier ce qui manque sur Commons** — il manquera, surtout les vues d'écorce, de
|
3. **Photographier ce qui manque sur Commons** — il manquera, surtout les vues d'écorce, de
|
||||||
feuille isolée et de coupe, celles dont le mode Kaché a besoin.
|
feuille isolée et de coupe, celles dont le mode Kaché a besoin.
|
||||||
4. **Faire relire l'orthographe kréyòl** par un humain. Points relevés :
|
4. **Faire relire l'orthographe kréyòl** par un humain. Points relevés :
|
||||||
`docs/kreyol-a-relire.md`.
|
`docs/kreyol-a-relire.md`.
|
||||||
5. **Le test en classe.**
|
5. **Le test en classe.**
|
||||||
|
6. **Inscrire les noms kréyòl sur Wikidata** — 0 sur 13 aujourd'hui, contre 124 noms
|
||||||
|
vernaculaires enregistrés dans d'autres langues pour les mêmes espèces. Ne demande ni
|
||||||
|
appareil photo ni déplacement, mais demande une orthographe relue : à faire après le
|
||||||
|
point 4, jamais avant. `docs/contribuer.md` §A.
|
||||||
|
|
||||||
Le code est la partie facile.
|
Le code est la partie facile.
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ playbook §0. Branche `main`.
|
|||||||
| `npm run test:porte` | prouve que la porte refuse les 9 cas interdits |
|
| `npm run test:porte` | prouve que la porte refuse les 9 cas interdits |
|
||||||
| `npm run build:credits` | régénère `CREDITS.md` depuis les données |
|
| `npm run build:credits` | régénère `CREDITS.md` depuis les données |
|
||||||
| `npm run check:audio` | liste les enregistrements kréyòl manquants |
|
| `npm run check:audio` | liste les enregistrements kréyòl manquants |
|
||||||
|
| `npm run rapport:manques` | mesure les manques, dans le projet et dans les fonds publics |
|
||||||
|
|
||||||
**Données.** 13 entrées dans `src/lib/data/fruits/`, 39 médias candidats, 0 validé.
|
**Données.** 13 entrées dans `src/lib/data/fruits/`, 39 médias candidats, 0 validé.
|
||||||
|
|
||||||
@@ -93,6 +94,48 @@ iNaturalist à un appoint marginal — ce qui donne son poids réel à la décis
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Ajout en cours de session — la dimension participative
|
||||||
|
|
||||||
|
Décision du porteur : les manques ne se masquent pas, ils se publient. ADR 0006, guide
|
||||||
|
[`contribuer.md`](../contribuer.md), inventaire mesuré [`manques.md`](../manques.md), et
|
||||||
|
appel public à la libération des données TRAMIL en brouillon.
|
||||||
|
|
||||||
|
### Ce que la mesure a révélé
|
||||||
|
|
||||||
|
**Le kréyòl est absent des communs numériques.** Wikidata enregistre **124 noms
|
||||||
|
vernaculaires** pour les 13 espèces — 33 pour le fruit à pain, 22 pour la pomme d'eau, 12
|
||||||
|
pour la goyave, en chinois, anglais, portugais, slovène. **Zéro en kréyòl**, et aucune
|
||||||
|
étiquette de langue `gcf` sur aucun des 13 items. C'est la contribution la moins coûteuse du
|
||||||
|
projet — cinq minutes par entrée, aucun matériel — et l'une des plus durables. Elle suppose
|
||||||
|
en revanche une orthographe relue : à faire après la relecture kréyòl, jamais avant.
|
||||||
|
|
||||||
|
**L'écorce est la vue qui manque.** Après correction de la mesure, il reste 3 trous sur 65
|
||||||
|
dans les fonds libres, et les trois sont des écorces : mansiniyé (0 fichier), aki (0),
|
||||||
|
kénèt (1). Trois autres sont tout juste au seuil. C'est cohérent avec la pratique — on
|
||||||
|
photographie un fruit, rarement un tronc — et c'est fâcheux, parce que l'écorce est l'indice
|
||||||
|
le plus fiable sur le terrain : un tronc est visible toute l'année, un fruit quelques mois.
|
||||||
|
|
||||||
|
**Pl@ntNet est un meilleur canal de contribution que iNaturalist.** Mesuré sur le zikak en
|
||||||
|
Guadeloupe : les images iNaturalist sont à ~93 % en CC BY-NC, celles de Pl@ntNet apparaissent
|
||||||
|
en CC BY-SA (jeu de données GBIF sous CC BY 4.0). À effort égal pour le contributeur, la
|
||||||
|
seconde voie produit des images pleinement réutilisables. D'où le conseil mis en avant dans
|
||||||
|
le guide : régler sa licence par défaut sur iNaturalist une fois pour toutes.
|
||||||
|
|
||||||
|
### Une mesure fausse, attrapée avant publication
|
||||||
|
|
||||||
|
Le premier rapport annonçait **28 vues manquantes sur 65**. C'était faux. Le groupement `OR`
|
||||||
|
de la recherche Commons ne se comporte pas comme attendu : sur *Annona muricata*, `section`
|
||||||
|
seul remonte 17 fichiers là où `(section OR sliced OR cut OR coupe)` en remonte 0. Le signal
|
||||||
|
d'alerte était que `coupe` ressortait à zéro pour les **treize** espèces — Commons contient
|
||||||
|
évidemment des photos de corossol coupé.
|
||||||
|
|
||||||
|
Après correction — un mot, une requête, avec gestion du débit des API —, le chiffre réel est
|
||||||
|
**3 sur 65**.
|
||||||
|
|
||||||
|
Publier les 28 aurait envoyé des bénévoles photographier ce qui existait déjà. La leçon est
|
||||||
|
consignée dans l'ADR 0006 : une mesure qui produit un résultat extrême se suspecte avant de
|
||||||
|
se publier, et une réponse d'API illisible ne se compte jamais comme un zéro.
|
||||||
|
|
||||||
## Écarts constatés et signalés, non corrigés en silence
|
## Écarts constatés et signalés, non corrigés en silence
|
||||||
|
|
||||||
Le brief §9 impose de signaler les écarts plutôt que de les corriger discrètement.
|
Le brief §9 impose de signaler les écarts plutôt que de les corriger discrètement.
|
||||||
@@ -162,6 +205,7 @@ npm run validate:data → 13 entrées, 39 médias, 0 validé, 0 erreur
|
|||||||
npm run test:porte → 10/10
|
npm run test:porte → 10/10
|
||||||
npm run build:credits → 13 entrées, 39 médias, 0 sous clause NC
|
npm run build:credits → 13 entrées, 39 médias, 0 sous clause NC
|
||||||
npm run check:audio → 13 enregistrements à réaliser
|
npm run check:audio → 13 enregistrements à réaliser
|
||||||
|
npm run rapport:manques → 3 vues manquantes sur 65, 0 nom kréyòl sur Wikidata
|
||||||
```
|
```
|
||||||
|
|
||||||
Dépendances installées : `ajv` et `ajv-formats` uniquement, toutes deux importées et
|
Dépendances installées : `ajv` et `ajv-formats` uniquement, toutes deux importées et
|
||||||
|
|||||||
+2
-1
@@ -15,7 +15,8 @@
|
|||||||
"check:audio": "node tools/data/check-audio.mjs",
|
"check:audio": "node tools/data/check-audio.mjs",
|
||||||
"validate:data": "node tools/data/validate.mjs",
|
"validate:data": "node tools/data/validate.mjs",
|
||||||
"build:credits": "node tools/data/build-credits.mjs",
|
"build:credits": "node tools/data/build-credits.mjs",
|
||||||
"test:porte": "node tools/data/test-porte.mjs"
|
"test:porte": "node tools/data/test-porte.mjs",
|
||||||
|
"rapport:manques": "node tools/data/rapport-manques.mjs"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ajv": "^8.17.1",
|
"ajv": "^8.17.1",
|
||||||
|
|||||||
@@ -0,0 +1,349 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
/**
|
||||||
|
* rapport-manques.mjs — mesure ce qui manque, et où le trouver.
|
||||||
|
*
|
||||||
|
* Le projet est participatif : un manque n'est pas un défaut à masquer, c'est une tâche à
|
||||||
|
* publier. Ce script produit l'inventaire des trous — dans les données du projet ET dans
|
||||||
|
* les fonds publics — pour que chacun puisse en combler un.
|
||||||
|
*
|
||||||
|
* Deux mesures distinctes :
|
||||||
|
*
|
||||||
|
* 1. MANQUES INTERNES — ce que le dataset n'a pas : photos validées, vues assignées,
|
||||||
|
* enregistrement kréyòl, sources factuelles, relecture, saisonnalité sourcée.
|
||||||
|
*
|
||||||
|
* 2. DISPONIBILITÉ EXTERNE — ce que les fonds publics contiennent pour chaque vue
|
||||||
|
* pédagogique. Un trou ici veut dire : « personne au monde n'a publié cette photo
|
||||||
|
* sous licence libre », donc c'est une photo à aller prendre.
|
||||||
|
*
|
||||||
|
* LIMITE À CONNAÎTRE : la recherche Commons porte sur le TEXTE des pages de fichier, pas
|
||||||
|
* sur le contenu des images. Une photo de feuille dont la description ne dit pas « leaf »
|
||||||
|
* est comptée comme absente. Ce n'est pas un défaut de la mesure : une photo que personne
|
||||||
|
* ne peut trouver est presque aussi inutile qu'une photo qui n'existe pas — et la
|
||||||
|
* redécrire sur Commons est justement une contribution utile.
|
||||||
|
*
|
||||||
|
* Sortie : docs/manques.md
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { readFile, readdir, writeFile } from 'node:fs/promises';
|
||||||
|
import { fileURLToPath } from 'node:url';
|
||||||
|
import { dirname, join } from 'node:path';
|
||||||
|
|
||||||
|
const ROOT = join(dirname(fileURLToPath(import.meta.url)), '..', '..');
|
||||||
|
const DATA = join(ROOT, 'src', 'lib', 'data', 'fruits');
|
||||||
|
const UA = 'ki-fwi-dataset/0.1 (https://o-k-i.net ; projet educatif ORGANISATION KA INTERNATIONALE)';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Les vues pédagogiques, avec les mots par lesquels on les cherche dans plusieurs langues.
|
||||||
|
*
|
||||||
|
* Chaque mot est interrogé SÉPARÉMENT. Une première version groupait les mots par `OR` —
|
||||||
|
* la syntaxe est acceptée par l'API mais ne se comporte pas comme attendu : sur
|
||||||
|
* Annona muricata, `section` seul remonte 17 fichiers alors que
|
||||||
|
* `(section OR sliced OR cut OR coupe)` en remonte 0. Le rapport affichait donc des
|
||||||
|
* manques inexistants. Un mot, une requête.
|
||||||
|
*/
|
||||||
|
const VUES = {
|
||||||
|
fruit_entier: ['fruit', 'fruits', 'fruta', 'frutas'],
|
||||||
|
coupe: ['section', 'sliced', 'pulp', 'cut'],
|
||||||
|
feuille: ['leaf', 'leaves', 'feuille', 'hoja'],
|
||||||
|
ecorce: ['bark', 'trunk', 'ecorce', 'corteza'],
|
||||||
|
port: ['tree', 'arbre', 'arbol', 'habit']
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Seuil en dessous duquel une vue est déclarée manquante dans les fonds publics. */
|
||||||
|
const SEUIL_VUE = 3;
|
||||||
|
|
||||||
|
const ILES = { gp: 'GP', mq: 'MQ', gf: 'GF', re: 'RE' };
|
||||||
|
const NOM_ILE = { gp: 'Guadeloupe', mq: 'Martinique', gf: 'Guyane', re: 'La Réunion' };
|
||||||
|
|
||||||
|
const pause = (ms) => new Promise((r) => setTimeout(r, ms));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Les API Wikimedia limitent le débit et répondent alors autre chose que du JSON.
|
||||||
|
* Une réponse illisible comptée comme « 0 fichier » fabriquerait un manque imaginaire :
|
||||||
|
* on réessaie, et on échoue franchement plutôt que de renvoyer un chiffre faux.
|
||||||
|
*/
|
||||||
|
async function getJson(url, params, essais = 4) {
|
||||||
|
const u = new URL(url);
|
||||||
|
for (const [k, v] of Object.entries(params)) u.searchParams.set(k, v);
|
||||||
|
let derniere;
|
||||||
|
for (let i = 0; i < essais; i++) {
|
||||||
|
try {
|
||||||
|
const res = await fetch(u, { headers: { 'User-Agent': UA, Accept: 'application/json' } });
|
||||||
|
if (!res.ok) throw new Error(`${res.status} ${res.statusText}`);
|
||||||
|
return await res.json();
|
||||||
|
} catch (e) {
|
||||||
|
derniere = e;
|
||||||
|
await pause(600 * (i + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new Error(`${u.host} injoignable après ${essais} essais : ${derniere?.message}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function commonsCompte(recherche) {
|
||||||
|
const json = await getJson('https://commons.wikimedia.org/w/api.php', {
|
||||||
|
action: 'query',
|
||||||
|
format: 'json',
|
||||||
|
list: 'search',
|
||||||
|
srnamespace: '6',
|
||||||
|
srlimit: '1',
|
||||||
|
srinfo: 'totalhits',
|
||||||
|
srsearch: recherche
|
||||||
|
});
|
||||||
|
return json.query?.searchinfo?.totalhits ?? 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Nombre de fichiers trouvables pour une vue : le maximum obtenu sur les mots de la vue.
|
||||||
|
* Le maximum et non la somme — un même fichier peut répondre à plusieurs mots, et une
|
||||||
|
* somme surestimerait la couverture, donc sous-estimerait le manque.
|
||||||
|
*/
|
||||||
|
async function commonsPourVue(nomSci, mots) {
|
||||||
|
let meilleur = 0;
|
||||||
|
let motRetenu = null;
|
||||||
|
for (const mot of mots) {
|
||||||
|
const n = await commonsCompte(`"${nomSci}" ${mot} filetype:bitmap`);
|
||||||
|
if (n > meilleur) {
|
||||||
|
meilleur = n;
|
||||||
|
motRetenu = mot;
|
||||||
|
}
|
||||||
|
await pause(350);
|
||||||
|
}
|
||||||
|
return { n: meilleur, mot: motRetenu };
|
||||||
|
}
|
||||||
|
|
||||||
|
const commonsTotal = (nomSci) => commonsCompte(`"${nomSci}" filetype:bitmap`);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Le kréyòl est-il présent dans les communs numériques, ou seulement dans ce dépôt ?
|
||||||
|
*
|
||||||
|
* Deux endroits où un nom kréyòl a sa place sur Wikidata :
|
||||||
|
* — l'étiquette de langue `gcf` (kréyòl gwadloupéyen) ;
|
||||||
|
* — la propriété P1843, « nom vernaculaire du taxon », avec sa langue.
|
||||||
|
*
|
||||||
|
* Un nom qui n'existe que dans ce jeu reste un nom perdu ailleurs. C'est la contribution
|
||||||
|
* la moins coûteuse du projet, et l'une des plus durables.
|
||||||
|
*/
|
||||||
|
async function wikidataKreyol(qids) {
|
||||||
|
const labels = await getJson('https://www.wikidata.org/w/api.php', {
|
||||||
|
action: 'wbgetentities',
|
||||||
|
ids: qids.join('|'),
|
||||||
|
props: 'labels',
|
||||||
|
languages: 'gcf',
|
||||||
|
format: 'json'
|
||||||
|
});
|
||||||
|
const etat = {};
|
||||||
|
for (const q of qids) {
|
||||||
|
etat[q] = { etiquette: labels.entities?.[q]?.labels?.gcf?.value ?? null, vernaculaires: null, gcfVern: false };
|
||||||
|
await pause(250);
|
||||||
|
try {
|
||||||
|
const cl = await getJson('https://www.wikidata.org/w/api.php', {
|
||||||
|
action: 'wbgetclaims',
|
||||||
|
entity: q,
|
||||||
|
property: 'P1843',
|
||||||
|
format: 'json'
|
||||||
|
});
|
||||||
|
const noms = cl.claims?.P1843 ?? [];
|
||||||
|
etat[q].vernaculaires = noms.length;
|
||||||
|
etat[q].gcfVern = noms.some((c) => c.mainsnak?.datavalue?.value?.language === 'gcf');
|
||||||
|
} catch {
|
||||||
|
/* le compte reste null : mieux vaut un trou qu'un chiffre inventé */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return etat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Observations GBIF pour ce taxon dans cette île, et combien portent une image. */
|
||||||
|
async function gbifIle(taxonKey, pays) {
|
||||||
|
const [tout, avecImage] = await Promise.all([
|
||||||
|
getJson('https://api.gbif.org/v1/occurrence/search', { taxonKey: String(taxonKey), country: pays, limit: '0' }),
|
||||||
|
getJson('https://api.gbif.org/v1/occurrence/search', {
|
||||||
|
taxonKey: String(taxonKey),
|
||||||
|
country: pays,
|
||||||
|
mediaType: 'StillImage',
|
||||||
|
limit: '0'
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
return { total: tout.count ?? 0, avecImage: avecImage.count ?? 0 };
|
||||||
|
}
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const fichiers = (await readdir(DATA)).filter((f) => f.endsWith('.json')).sort();
|
||||||
|
const rapports = [];
|
||||||
|
|
||||||
|
for (const f of fichiers) {
|
||||||
|
const e = JSON.parse(await readFile(join(DATA, f), 'utf8'));
|
||||||
|
process.stdout.write(`→ ${e.id}… `);
|
||||||
|
|
||||||
|
// ── 1. Manques internes
|
||||||
|
const photos = e.medias.filter((m) => m.type_media === 'photo');
|
||||||
|
const planches = e.medias.filter((m) => m.type_media === 'planche_botanique');
|
||||||
|
const validees = e.medias.filter((m) => m.valide);
|
||||||
|
const vuesAssignees = new Set(e.medias.map((m) => m.vue).filter(Boolean));
|
||||||
|
|
||||||
|
const internes = [];
|
||||||
|
if (validees.length < 2) internes.push(`${validees.length} média validé sur ${e.medias.length} — il en faut au moins 2`);
|
||||||
|
if (photos.length < 2) internes.push(`${photos.length} photographie(s) parmi les candidats, ${planches.length} planche(s) ancienne(s)`);
|
||||||
|
if (!vuesAssignees.size) internes.push('aucune vue assignée — personne n’a encore regardé les images');
|
||||||
|
if (!e.audio.gcf) internes.push('aucun enregistrement du nom kréyòl');
|
||||||
|
if (!e.sources_factuelles.length) internes.push('aucune source factuelle citée pour les indices');
|
||||||
|
if (e.orthographe.statut !== 'relu') internes.push('orthographe kréyòl non relue');
|
||||||
|
if (e.categorie === 'fruit' && e.saison_mois?.length) internes.push('saisonnalité non sourcée et non ventilée par île');
|
||||||
|
|
||||||
|
// ── 2. Disponibilité externe
|
||||||
|
const total = await commonsTotal(e.taxon.scientifique);
|
||||||
|
await pause(350);
|
||||||
|
const vues = {};
|
||||||
|
for (const [vue, mots] of Object.entries(VUES)) {
|
||||||
|
vues[vue] = await commonsPourVue(e.taxon.scientifique, mots);
|
||||||
|
}
|
||||||
|
|
||||||
|
const iles = {};
|
||||||
|
for (const code of e.iles) {
|
||||||
|
if (!ILES[code]) continue;
|
||||||
|
iles[code] = await gbifIle(e.taxon.gbif, ILES[code]);
|
||||||
|
await pause(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
const vuesManquantes = Object.entries(vues)
|
||||||
|
.filter(([, v]) => v.n < SEUIL_VUE)
|
||||||
|
.map(([v]) => v);
|
||||||
|
|
||||||
|
console.log(`${total} fichiers Commons · ${vuesManquantes.length} vue(s) sous le seuil`);
|
||||||
|
rapports.push({ e, internes, total, vues, vuesManquantes, iles, photos: photos.length, planches: planches.length });
|
||||||
|
}
|
||||||
|
|
||||||
|
process.stdout.write('→ Wikidata : présence du kréyòl… ');
|
||||||
|
const kreyol = await wikidataKreyol(rapports.map((r) => r.e.taxon.wikidata));
|
||||||
|
const avecEtiquette = Object.values(kreyol).filter((k) => k.etiquette).length;
|
||||||
|
const avecVernaculaire = Object.values(kreyol).filter((k) => k.gcfVern).length;
|
||||||
|
console.log(`${avecEtiquette} étiquette(s), ${avecVernaculaire} nom(s) vernaculaire(s)`);
|
||||||
|
|
||||||
|
// ── Écriture du rapport, du plus démuni au mieux servi
|
||||||
|
rapports.sort((a, b) => b.vuesManquantes.length - a.vuesManquantes.length || b.internes.length - a.internes.length);
|
||||||
|
|
||||||
|
const l = [
|
||||||
|
'# Ce qui manque — et comment le combler',
|
||||||
|
'',
|
||||||
|
`> Généré par \`npm run rapport:manques\` le ${new Date().toISOString().slice(0, 10)}.`,
|
||||||
|
'> Sortie de script : ne pas éditer à la main.',
|
||||||
|
'',
|
||||||
|
'Ce projet est participatif. Un manque n’est pas un défaut à masquer : c’est une tâche',
|
||||||
|
'publiée. Chaque ligne ci-dessous est quelque chose qu’une personne peut aller combler,',
|
||||||
|
'et dont le bénéfice dépasse ce jeu — une photo versée à Wikimedia Commons sert à tous.',
|
||||||
|
'',
|
||||||
|
'**Comment contribuer :** [`docs/contribuer.md`](contribuer.md).',
|
||||||
|
'',
|
||||||
|
'## Comment lire ce rapport',
|
||||||
|
'',
|
||||||
|
`Une vue est déclarée **manquante** quand les fonds publics contiennent moins de ${SEUIL_VUE} fichiers`,
|
||||||
|
'trouvables pour elle. La mesure porte sur le **texte** des pages de fichier Commons, pas sur',
|
||||||
|
'le contenu des images : une photo de feuille dont la description ne dit pas « leaf » est',
|
||||||
|
'comptée absente. C’est volontaire — une photo que personne ne peut trouver est presque',
|
||||||
|
'aussi inutile qu’une photo qui n’existe pas, et **la redécrire est déjà une contribution**.',
|
||||||
|
'',
|
||||||
|
'---',
|
||||||
|
'',
|
||||||
|
'## Vue d’ensemble',
|
||||||
|
'',
|
||||||
|
'| entrée | fichiers Commons | fruit | coupe | feuille | écorce | port | médias validés |',
|
||||||
|
'|---|---|---|---|---|---|---|---|'
|
||||||
|
];
|
||||||
|
|
||||||
|
const mark = (n) => (n < SEUIL_VUE ? `**${n}** ⚠` : String(n));
|
||||||
|
for (const r of rapports) {
|
||||||
|
l.push(
|
||||||
|
`| \`${r.e.id}\` | ${r.total} | ${mark(r.vues.fruit_entier.n)} | ${mark(r.vues.coupe.n)} | ${mark(r.vues.feuille.n)} | ${mark(r.vues.ecorce.n)} | ${mark(r.vues.port.n)} | ${r.e.medias.filter((m) => m.valide).length}/${r.e.medias.length} |`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const totalVuesManquantes = rapports.reduce((n, r) => n + r.vuesManquantes.length, 0);
|
||||||
|
l.push(
|
||||||
|
'',
|
||||||
|
`**${totalVuesManquantes} vues manquantes sur ${rapports.length * Object.keys(VUES).length}** dans les fonds publics libres.`,
|
||||||
|
'',
|
||||||
|
'---',
|
||||||
|
'',
|
||||||
|
'## Le kréyòl dans les communs numériques',
|
||||||
|
'',
|
||||||
|
'Un nom qui n’existe que dans ce jeu reste un nom perdu partout ailleurs. Wikidata offre',
|
||||||
|
'deux emplacements pour l’inscrire durablement : l’**étiquette** de langue `gcf`, et la',
|
||||||
|
'propriété **P1843**, « nom vernaculaire du taxon ».',
|
||||||
|
'',
|
||||||
|
`**${avecEtiquette} étiquette(s) kréyòl sur ${rapports.length}** · **${avecVernaculaire} nom(s) vernaculaire(s) kréyòl sur ${rapports.length}**.`,
|
||||||
|
'',
|
||||||
|
'| entrée | nom kréyòl | étiquette `gcf` | noms vernaculaires enregistrés | dont kréyòl |',
|
||||||
|
'|---|---|---|---|---|'
|
||||||
|
);
|
||||||
|
for (const r of rapports) {
|
||||||
|
const k = kreyol[r.e.taxon.wikidata] ?? {};
|
||||||
|
l.push(
|
||||||
|
`| [\`${r.e.id}\`](https://www.wikidata.org/wiki/${r.e.taxon.wikidata}) | ${r.e.noms.gcf} | ${k.etiquette ? '✔ ' + k.etiquette : '**absente** ⚠'} | ${k.vernaculaires ?? '?'} | ${k.gcfVern ? '✔' : '**non** ⚠'} |`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
l.push(
|
||||||
|
'',
|
||||||
|
'C’est la contribution la moins coûteuse du projet et l’une des plus durables : quelques',
|
||||||
|
'minutes par entrée, un bénéfice qui dépasse largement ce jeu. Marche à suivre dans',
|
||||||
|
'[`contribuer.md`](contribuer.md).',
|
||||||
|
'',
|
||||||
|
'---',
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
|
for (const r of rapports) {
|
||||||
|
const e = r.e;
|
||||||
|
l.push(`## ${e.noms.gcf} — *${e.taxon.scientifique}*`, '');
|
||||||
|
l.push(
|
||||||
|
`\`${e.id}\` · ${e.categorie === 'fruit' ? 'fruit' : '⚠ plante dangereuse'} · ${e.iles.map((i) => NOM_ILE[i] ?? i).join(', ')}`,
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
|
if (r.vuesManquantes.length) {
|
||||||
|
l.push(`### 📷 Photographies à prendre (${r.vuesManquantes.length} vue(s))`, '');
|
||||||
|
for (const v of r.vuesManquantes) {
|
||||||
|
const indice = e.indices[v === 'fruit_entier' ? 'fruit' : v];
|
||||||
|
l.push(`- **${v}** — ${r.vues[v].n} fichier(s) trouvable(s) sur Commons.`);
|
||||||
|
if (indice) l.push(` Ce qu’il faut montrer : ${indice}`);
|
||||||
|
}
|
||||||
|
l.push('');
|
||||||
|
} else {
|
||||||
|
l.push('### 📷 Photographies', '', 'Les cinq vues sont couvertes dans les fonds publics. Reste à les choisir et les valider.', '');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Object.keys(r.iles).length) {
|
||||||
|
l.push('### 🗺️ Où l’espèce est déjà observée', '');
|
||||||
|
l.push('| île | observations GBIF | dont avec image |', '|---|---|---|');
|
||||||
|
for (const [code, v] of Object.entries(r.iles))
|
||||||
|
l.push(`| ${NOM_ILE[code] ?? code} | ${v.total} | ${v.avecImage} |`);
|
||||||
|
l.push(
|
||||||
|
'',
|
||||||
|
'Peu d’observations sur une île ne veut pas dire que l’espèce y est rare : cela veut',
|
||||||
|
'souvent dire que personne ne l’a encore documentée. C’est aussi une contribution.',
|
||||||
|
''
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (r.internes.length) {
|
||||||
|
l.push('### 📝 Manques dans les données du projet', '');
|
||||||
|
for (const m of r.internes) l.push(`- ${m}`);
|
||||||
|
l.push('');
|
||||||
|
}
|
||||||
|
|
||||||
|
l.push(
|
||||||
|
'### 🔗 Aller voir',
|
||||||
|
'',
|
||||||
|
`- [Commons — tous les fichiers](https://commons.wikimedia.org/w/index.php?search=${encodeURIComponent(`"${e.taxon.scientifique}" filetype:bitmap`)}&ns6=1)`,
|
||||||
|
`- [Wikidata ${e.taxon.wikidata}](https://www.wikidata.org/wiki/${e.taxon.wikidata}) · [GBIF ${e.taxon.gbif}](https://www.gbif.org/species/${e.taxon.gbif})`,
|
||||||
|
`- [iNaturalist](https://www.inaturalist.org/search?q=${encodeURIComponent(e.taxon.scientifique)}) · [Pl@ntNet](https://identify.plantnet.org/)`,
|
||||||
|
''
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
await writeFile(join(ROOT, 'docs', 'manques.md'), l.join('\n'));
|
||||||
|
console.log(`\n✔ docs/manques.md — ${totalVuesManquantes} vues manquantes sur ${rapports.length * Object.keys(VUES).length}.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
main().catch((e) => {
|
||||||
|
console.error('✘', e.stack ?? e.message);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user