devsite/obsidian-site-docs/docs-site-interne/06-strapi-extraction.md
2026-04-23 19:19:31 +02:00

92 lines
3.6 KiB
Markdown

# Outils `strapi_extraction/`
**Dernière mise à jour :** 2026-04-22
Dossier de **scripts Node + Python** pour extraire, nettoyer et convertir les
données issues de l'API Strapi en base de connaissance chatbot (hors runtime
du site).
## Pipeline complet
```
API Strapi
extract-api-data.js → extract/raw/*.json
clean-api-data.js → extract/clean-data/*.json
generate-docs.js → docs/*.md
build-vault.py → vault-grasbot/ (Obsidian structuré + aliases/answers/priority)
GrasBot le lit directement (plus d'étape d'indexation)
```
Depuis avril 2026 (v3 du pipeline GrasBot), **il n'y a plus d'étape
`index_vault.py`**. Le vault Obsidian est la seule source de vérité : il
est lu directement par `llm-api/search.py` au démarrage de l'API.
## Scripts
| Fichier | Rôle |
|---------|------|
| `extract-api-data.js` | **Node**. Fetch des endpoints Strapi → JSON brut (`extract/raw/`). |
| `clean-api-data.js` | **Node**. Nettoyage / normalisation (`extract/clean-data/`). |
| `generate-docs.js` | **Node**. Génération de `.md` par entrée Strapi (`docs/`). |
| `build-vault.py` | **Python**. Lit `docs/` + PDF CV → vault Obsidian (`vault-grasbot/`) avec frontmatter enrichi (aliases, answers, priority). |
| `update-documentation.js` | **Node**. MAJ incrémentale de la doc. |
| `analyse-site-architecture.js` | **Node**. Analyse d'architecture du site. |
## Commande type
```powershell
# Depuis la racine du repo
node strapi_extraction/extract-api-data.js
node strapi_extraction/clean-api-data.js
node strapi_extraction/generate-docs.js
python strapi_extraction/build-vault.py
# (plus d'étape d'indexation — GrasBot lit le vault directement)
# Si GrasBot tourne déjà, recharger le vault sans redémarrer uvicorn :
curl -X POST http://localhost:8000/reload-vault
```
## Données générées
- `strapi_extraction/extract/raw/*.json` — données Strapi brutes.
- `strapi_extraction/extract/clean-data/*.json` — données nettoyées.
- `strapi_extraction/docs/*.md` — documentation Markdown.
- `strapi_extraction/docs/generation-summary.json` — résumé de génération.
- `vault-grasbot/**/*.md` — vault Obsidian consommé par le retrieval GrasBot.
Ces fichiers peuvent être **régénérés** à tout moment ; ne pas les considérer
comme source de vérité sans comparer au CMS.
## Fragilités actuelles
1. **`clean-api-data.js` n'a pas de cleaner `homepages`** : du coup
`generate-docs.js` ne produit jamais `00-homepage.md`. Conséquence :
le CV de la page d'accueil n'arrive pas dans `vault-grasbot/30-Parcours/`
via la chaîne automatique (il y est aujourd'hui via le PDF séparé
`nouveauCV_grascalvet.pdf`).
2. **`glossaire` n'est extrait ni nettoyé** : endpoint absent de la liste
`ENDPOINTS` dans `extract-api-data.js`, cleaner absent aussi. Le dossier
`vault-grasbot/40-Glossaire/` reste vide tant que ce n'est pas réparé.
3. **Accès Strapi v5 flat** : les scripts accèdent en direct à `project.name`,
`project.Resum`, etc. Si on repasse à une configuration v4 ou "populated
with wrapper", il faudra rebrancher en `project.attributes.name`.
Ces points seront corrigés en même temps que l'enrichissement du vault
(glossaire + homepage Strapi → notes `40-Glossaire/` et `30-Parcours/`).
## Liens complémentaires
- Vault + retrieval : [`08-vault-obsidian-retrieval.md`](./08-vault-obsidian-retrieval.md)
- API LLM : [`04-api-llm-et-chatbot.md`](./04-api-llm-et-chatbot.md)
- Schémas Strapi : [`03-cms-strapi.md`](./03-cms-strapi.md)