---
# System prepended metadata

title: GSP

---

# GSP

## Concepts

Catégories d'acteurs :
- Seeders (importent de la donnée depuis une autre source)
- Transformers (dérivent de nouveaux datasets à partir de datasets existants)
- Extractors (sortent des données de GSP pour les utiliser)

Dataset :
- Type de dataset = "nom de fonction" qui y correspond, e.g. "dump my_sap"
- Paramètres (comment on a compute les données), e.g. "date=06/06/2022"
- Données
- version de la fonction (commit git ?)
 
Dépendance :
- Le dataset Y a une dépendance sur le dataset Y (Y est un transformer)
  - Quand X change, il déclenche le recalcul de Y
- Un transformer doit pouvoir être enregistré pour matcher un pattern et se déclencher quand un élément qui matche le pattern change (création ou modification)

## Architecture

Multi-services :
- Le storage (serveur S3-compatible)
- Un dispatcher pour trigger les transformers
- Une API pour l'insertion / l'extraction des datasets

GSP capable de relancer un compute (via Lambda, Docker, k8s, Nomad, ...) ? de schedule des crons ?

Exemple de dépendance :
- Seed : snapshot de my_sap
- Transform : construire une frise chronologique des promos (qui va où, etc)

Storage :
- Dans un bucket MinIO
- 1 fichier = 1 dataset
- 1 dossier = 1 type de dataset


# API

tu ne peux pas push de data dans un dataset tant que tu l'a pas declare (nom du dataset / schema / dependance ?)

declare s'assure que le dataset existe ou le crée/modifie

si on essaie de modifier le nom de fonction d'un dataset -> erreur (securité pour s'assurer qu'un seul producteur owned la creation d'un dataset)

Faire des alias de dataset en db

### Post dataset
- POST /dataset

### Get Dataset
- GET /dataset/{type} (get last)
- GET /dataset/{type}/date/{date} (get by date)

### List Dataset versions/dates ?
- GET /dataset/types (liste tout les types)
- GET /dataset/{type}/versions (liste toute les version d'un type)

### Configure Dataset type

- PUT /dataset/{type}/settings ?
- PUT /dataset/{type}/configure ?


# Metrics individual performance es

Librairie + executable qui lit du jsonline sur l'entrée standard

Il faut pouvoir regernerer des metrics et donc generer des batch id : (nom de la fonction + champ discriminant)

## indicateur
- notes
- git
- presence
- consultation intra/log

timestamp = date : granularité minimal
dans le cas ou une metrics est générer pour un range de date, celle-ci figure dans les valeurs du document



