Some checks are pending
CI / Lint bridge (Biome) (push) Waiting to run
CI / Type-check bridge (push) Blocked by required conditions
CI / Tests unit bridge (push) Blocked by required conditions
CI / Tests integration bridge (push) Blocked by required conditions
CI / Security scan (push) Waiting to run
CI / Docker build + healthcheck (push) Blocked by required conditions
- baserow/seed/schema.json : 9 tables declaratif (personne + CFA + Agence) - baserow/seed/seed.py : Python script idempotent (login + workspace + db + tables + fields + links) - baserow/seed/requirements.txt : requests - baserow/seed/README.md : quickstart 4 etapes - Makefile target seed-baserow Fast-App workflow local : - _byan-output/fast-app/formation-hub/ : 6 artifacts (pitch, backlog, cdcf-stories, plan, dispatch, build-state) - Phase 0 mappee : phases 1-6 done depuis docs Merise/UML existants - Iteration 1 BUILD = setup tables Baserow vanilla (S-02 + S-03 + S-04) Stack locale up et healthy. Pret pour seed apres creation compte admin Baserow.
202 lines
9.2 KiB
JSON
202 lines
9.2 KiB
JSON
{
|
|
"$schema": "Baserow schema declaratif — formation-hub Phase 1",
|
|
"version": "1.0.0",
|
|
"workspace_name": "Acadenice",
|
|
"database_name": "formation-hub",
|
|
"tables": [
|
|
{
|
|
"name": "personne",
|
|
"primary_field": "personne_nom",
|
|
"fields": [
|
|
{"name": "personne_nom", "type": "text", "primary": true},
|
|
{"name": "personne_prenom", "type": "text"},
|
|
{"name": "personne_email", "type": "email"},
|
|
{"name": "personne_telephone", "type": "phone_number"},
|
|
{"name": "personne_capacite_annuelle", "type": "number", "number_decimal_places": 2},
|
|
{"name": "personne_split_formation_pct", "type": "number", "number_decimal_places": 1, "number_default": 50.0},
|
|
{"name": "personne_split_agence_pct", "type": "number", "number_decimal_places": 1, "number_default": 50.0},
|
|
{"name": "personne_roles", "type": "multiple_select", "select_options": [
|
|
{"value": "formateur", "color": "blue"},
|
|
{"value": "developpeur", "color": "green"},
|
|
{"value": "admin", "color": "red"},
|
|
{"value": "direction", "color": "purple"},
|
|
{"value": "support", "color": "gray"}
|
|
]},
|
|
{"name": "personne_statut", "type": "single_select", "select_options": [
|
|
{"value": "actif", "color": "green"},
|
|
{"value": "inactif", "color": "gray"}
|
|
]}
|
|
]
|
|
},
|
|
{
|
|
"name": "formation",
|
|
"primary_field": "formation_nom",
|
|
"fields": [
|
|
{"name": "formation_nom", "type": "text", "primary": true},
|
|
{"name": "formation_description", "type": "long_text"},
|
|
{"name": "formation_filiere", "type": "single_select", "select_options": [
|
|
{"value": "dev", "color": "blue"},
|
|
{"value": "graphisme", "color": "pink"},
|
|
{"value": "marketing", "color": "yellow"},
|
|
{"value": "iot", "color": "orange"},
|
|
{"value": "cybersec", "color": "red"}
|
|
]},
|
|
{"name": "formation_heures_totales", "type": "number", "number_decimal_places": 2},
|
|
{"name": "formation_statut", "type": "single_select", "select_options": [
|
|
{"value": "draft", "color": "gray"},
|
|
{"value": "actif", "color": "green"},
|
|
{"value": "termine", "color": "blue"},
|
|
{"value": "archive", "color": "dark-gray"}
|
|
]},
|
|
{"name": "formation_date_debut", "type": "date"},
|
|
{"name": "formation_date_fin", "type": "date"},
|
|
{"name": "formation_created_at", "type": "created_on"},
|
|
{"name": "formation_updated_at", "type": "last_modified"}
|
|
]
|
|
},
|
|
{
|
|
"name": "bloc",
|
|
"primary_field": "bloc_nom",
|
|
"fields": [
|
|
{"name": "bloc_nom", "type": "text", "primary": true},
|
|
{"name": "bloc_description", "type": "long_text"},
|
|
{"name": "bloc_heures_prevues", "type": "number", "number_decimal_places": 2},
|
|
{"name": "bloc_ordre", "type": "number", "number_decimal_places": 0}
|
|
]
|
|
},
|
|
{
|
|
"name": "module",
|
|
"primary_field": "module_nom",
|
|
"fields": [
|
|
{"name": "module_nom", "type": "text", "primary": true},
|
|
{"name": "module_description", "type": "long_text"},
|
|
{"name": "module_heures_prevues", "type": "number", "number_decimal_places": 2},
|
|
{"name": "module_statut", "type": "single_select", "select_options": [
|
|
{"value": "a_attribuer", "color": "gray"},
|
|
{"value": "attribue", "color": "blue"},
|
|
{"value": "en_cours", "color": "yellow"},
|
|
{"value": "realise", "color": "green"},
|
|
{"value": "annule", "color": "red"}
|
|
]}
|
|
]
|
|
},
|
|
{
|
|
"name": "attribution",
|
|
"primary_field": "attribution_titre",
|
|
"fields": [
|
|
{"name": "attribution_titre", "type": "text", "primary": true, "comment": "Sera remplace par formula apres link"},
|
|
{"name": "attribution_heures_attribuees", "type": "number", "number_decimal_places": 2},
|
|
{"name": "attribution_heures_realisees", "type": "number", "number_decimal_places": 2, "number_default": 0},
|
|
{"name": "attribution_date_debut", "type": "date"},
|
|
{"name": "attribution_date_fin", "type": "date"},
|
|
{"name": "attribution_statut", "type": "single_select", "select_options": [
|
|
{"value": "planifie", "color": "gray"},
|
|
{"value": "en_cours", "color": "yellow"},
|
|
{"value": "realise", "color": "green"},
|
|
{"value": "annule", "color": "red"}
|
|
]}
|
|
]
|
|
},
|
|
{
|
|
"name": "client",
|
|
"primary_field": "client_nom",
|
|
"fields": [
|
|
{"name": "client_nom", "type": "text", "primary": true},
|
|
{"name": "client_contact_principal", "type": "text"},
|
|
{"name": "client_contact_email", "type": "email"},
|
|
{"name": "client_contact_telephone", "type": "phone_number"},
|
|
{"name": "client_secteur", "type": "text"},
|
|
{"name": "client_notes", "type": "long_text"},
|
|
{"name": "client_statut", "type": "single_select", "select_options": [
|
|
{"value": "prospect", "color": "yellow"},
|
|
{"value": "actif", "color": "green"},
|
|
{"value": "inactif", "color": "gray"},
|
|
{"value": "archive", "color": "dark-gray"}
|
|
]},
|
|
{"name": "client_created_at", "type": "created_on"}
|
|
]
|
|
},
|
|
{
|
|
"name": "projet",
|
|
"primary_field": "projet_nom",
|
|
"fields": [
|
|
{"name": "projet_nom", "type": "text", "primary": true},
|
|
{"name": "projet_description", "type": "long_text"},
|
|
{"name": "projet_type", "type": "single_select", "select_options": [
|
|
{"value": "site_web", "color": "blue"},
|
|
{"value": "app_mobile", "color": "green"},
|
|
{"value": "api", "color": "yellow"},
|
|
{"value": "infra", "color": "orange"},
|
|
{"value": "audit", "color": "red"},
|
|
{"value": "support", "color": "purple"},
|
|
{"value": "autre", "color": "gray"}
|
|
]},
|
|
{"name": "projet_charge_heures", "type": "number", "number_decimal_places": 2},
|
|
{"name": "projet_date_debut", "type": "date"},
|
|
{"name": "projet_date_fin_prevue", "type": "date"},
|
|
{"name": "projet_date_livraison", "type": "date"},
|
|
{"name": "projet_statut", "type": "single_select", "select_options": [
|
|
{"value": "devis", "color": "yellow"},
|
|
{"value": "en_cours", "color": "blue"},
|
|
{"value": "livre", "color": "green"},
|
|
{"value": "cloture", "color": "dark-green"},
|
|
{"value": "abandonne", "color": "red"}
|
|
]},
|
|
{"name": "projet_url", "type": "url"},
|
|
{"name": "projet_repository", "type": "url"}
|
|
]
|
|
},
|
|
{
|
|
"name": "tache",
|
|
"primary_field": "tache_titre",
|
|
"fields": [
|
|
{"name": "tache_titre", "type": "text", "primary": true},
|
|
{"name": "tache_description", "type": "long_text"},
|
|
{"name": "tache_charge_heures", "type": "number", "number_decimal_places": 2},
|
|
{"name": "tache_priorite", "type": "single_select", "select_options": [
|
|
{"value": "faible", "color": "gray"},
|
|
{"value": "normale", "color": "blue"},
|
|
{"value": "haute", "color": "orange"},
|
|
{"value": "critique", "color": "red"}
|
|
]},
|
|
{"name": "tache_statut", "type": "single_select", "select_options": [
|
|
{"value": "todo", "color": "gray"},
|
|
{"value": "in_progress", "color": "blue"},
|
|
{"value": "review", "color": "yellow"},
|
|
{"value": "done", "color": "green"},
|
|
{"value": "abandoned", "color": "red"}
|
|
]},
|
|
{"name": "tache_date_debut", "type": "date"},
|
|
{"name": "tache_date_fin_prevue", "type": "date"}
|
|
]
|
|
},
|
|
{
|
|
"name": "intervention",
|
|
"primary_field": "intervention_titre",
|
|
"fields": [
|
|
{"name": "intervention_titre", "type": "text", "primary": true, "comment": "Sera remplace par formula apres link"},
|
|
{"name": "intervention_heures", "type": "number", "number_decimal_places": 2},
|
|
{"name": "intervention_date", "type": "date"},
|
|
{"name": "intervention_notes", "type": "long_text"},
|
|
{"name": "intervention_statut", "type": "single_select", "select_options": [
|
|
{"value": "planifie", "color": "gray"},
|
|
{"value": "realise", "color": "green"},
|
|
{"value": "annule", "color": "red"}
|
|
]}
|
|
]
|
|
}
|
|
],
|
|
"links": [
|
|
{"from_table": "bloc", "from_field": "bloc_formation", "to_table": "formation"},
|
|
{"from_table": "module", "from_field": "module_bloc", "to_table": "bloc"},
|
|
{"from_table": "attribution", "from_field": "attribution_module", "to_table": "module"},
|
|
{"from_table": "attribution", "from_field": "attribution_personne", "to_table": "personne"},
|
|
{"from_table": "projet", "from_field": "projet_client", "to_table": "client"},
|
|
{"from_table": "projet", "from_field": "projet_formation_pedagogique", "to_table": "formation"},
|
|
{"from_table": "tache", "from_field": "tache_projet", "to_table": "projet"},
|
|
{"from_table": "tache", "from_field": "tache_assignee", "to_table": "personne"},
|
|
{"from_table": "intervention", "from_field": "intervention_tache", "to_table": "tache"},
|
|
{"from_table": "intervention", "from_field": "intervention_personne", "to_table": "personne"}
|
|
],
|
|
"_note_phase_2": "Les formulas (rollups, heures_restantes) seront ajoutees en iteration 2 du plan Fast-App. Phase 1 = structure + liens seuls."
|
|
}
|