Comment ça marche

La stack

Chaque brique de Skibrief, l'outil choisi et ce qu'il y fait.

Ingestion

dlt, la collecte facilitée

Un framework Python qui charge les données de sources variées.

  • Schéma déduit automatiquement : les listes imbriquées deviennent des tables enfants.
  • Incrémental : fusion sur clé, seules les nouveautés sont rechargées.
  • Robuste : relances sur erreur ou quota, chargements reprenables.
  • Documenté automatiquement : chaque pipeline publie son schéma, ses tables et l'historique de ses chargements.

Dans Skibrief : dlt a accéléré l'ingestion des API sources en décomposant automatiquement leurs objets JSON imbriqués.

RÉPONSE DE L'API { "id": "1042", "nom": "Couloir N", "massif": { "id": "22" }, "sommets": [ { "id": "311" }, { "id": "312" } ] } dlt TABLES POSTGRESQL skitour_topos idnommassif_id 1042Couloir N22 1043Arête S22 table enfant (la liste) skitour_topos__sommets _dlt_parent_idid a91f…311a91f…312
Stockage

PostgreSQL + PostGIS

PostgreSQL et son extension PostGIS, référence du calcul géographique, permettent à Skibrief de rattacher chaque sommet à son massif par une simple requête SQL. 

  • Un schéma par étape : raw → core → api, plus publication.
  • Un rôle par service, appliqué par la base elle-même.
POSTGIS · GÉOMÉTRIES Contour du massif sommetdépartitinéraire SCHÉMAS raw brut, chargé par dlt core tables transformées api vues
Stockage · IA

PostgreSQL boosté à l'IA

Nous avons aussi étendu Postgres pour qu'il appelle un LLM, afin de classer et nettoyer les données textuelles directement en base. Une transformation complexe devient une simple fonction pour dbt.

  • Sortie garantie par un JSON Schema.
  • Économe : chaque texte n'est envoyé qu'une fois, résultat conservé.
  • Interchangeable : toute API compatible OpenAI (Groq, OVH, Ollama…).
TEXTE LIBRE D'UN TOPO "Baudrier crampons piolet corde 2x 50 m- broche à glace -descendeur-sangles" select outils.llm_json(consigne, materiel, schema) API LLM UNE LIGNE PAR MATÉRIEL baudrier crampons piolet corde broche à glace descendeur sangles quantités, longueurs et ponctuation retirées Réponse contrainte par un JSON Schema : toujours un tableau, toujours exploitable.
Transformation

dbt, le SQL traité comme du code

Chaque modèle est un fichier versionné ; dbt ordonne, teste et documente.

  • Tests : unicité, non-nullité, cohérence entre référentiels.
  • Lignage : chaque colonne servie à l'IA remonte à sa source.
SOURCES (RAW) CORE open_meteo_forecasts skitour_sommets meteo_previsions_horaires meteo_points ✓ not_null · unique ✓ not_null · unique $ dbt build→ modèles, tests, documentation
Documentation et lignage

dbt docs et dbdocs, régénérés à chaque exécution

Deux sites statiques produits des mêmes artefacts dbt, sans accès aux données.

  • dbt docs : modèles, colonnes, tests, graphe de lignage.
  • dbdocs : le diagramme entité-relation dessiné depuis les clés étrangères, et le lignage par colonne.
DBT DOCS · LIGNAGE open_meteo_forecasts meteo_points meteo_previsions_horaires DBDOCS · SCHÉMA DE DONNÉES meteo_points point_idPK point_nom massif geom meteo_previsions_horaires prevision_idPK point_idFK heure_utc temperature_c clé étrangère 1 · n
Restitution

dbt Charts, des tableaux de bord en YAML

Requêtes et graphiques déclarés à côté des modèles, rendus en HTML statique après chaque exécution. Pas de serveur de BI.

DÉCLARÉ EN YAML queries: temperature: sql: | SELECT heure, temperature FROM core… charts: - type: line query: temperature x: heure render PAGE PUBLIÉE 2 h413 fraîcheurpointschargements Température prévue
Exposition à l'IA

FastMCP, les données au service de l'assistant

Le serveur expose des outils que Claude appelle quand la question l'exige.

  • Lecture seule des vues api, jamais des sources.
  • MCP Apps : une carte IGN interactive dans la conversation.
Vent au Pic Blancdemain matin ? ⚙ skibrief · get_mountain_forecast ⚙ skibrief · show_route_map MCP App · carte IGN pente > 30°
Orchestration

Dagster, le chef d'orchestre

Dagster lance la chaîne chaque jour à 17 h : collecte dlt (Météo-France et Skitour en parallèle), puis dbt build, qui met à jour les vues lues par le serveur MCP. Chaque table est suivie comme un asset, de la source à la vue.

CHAQUE JOUR À 17 H lun.mar.mer.jeu.ven. dlt dbt build vues api
Déploiement

GitHub Action et Coolify, toute la stack en un git push

GitHub Action test automatiquement et Coolify déploie et héberge chaque brique dans son conteneur Docker sur un VPS hébergé en France.

  • Un conteneur par brique : base, pipeline, serveur MCP et site, isolés et déplaçables.
  • Test & Déploiement continu : chaque git push reconstruit et redéploie.
VPS OVH · COOLIFY · DOCKER dbpipelinemcpweb PostgreSQLdlt · dbtFastMCPFastAPI $ git push→ Coolify reconstruit et redéploie