Aller au contenu

app.organisation_onboarding

Parcours d’onboarding de la première connexion, en ajout seul : une ligne par étape (reporté, terminé, rouvert), avec les réponses, le pack chargé, l’auteur et la date. L’état courant est la ligne la plus récente.

Name Type Default Nullable Children Parents Comment
id uuid app.uuid_v7() false Identifiant stable (UUID v7).
organisation_id uuid false app.organisation app.utilisateur Organisation concernée. Sert à l’isolation par RLS (EC-032).
etat text false reporte : la personne a choisi « Plus tard » ; termine : les modules, le pack et les activités ont été appliqués ; rouvert : le parcours a été rejoué (tests, reprise après un changement d’activité).
reponses jsonb ‘{}’::jsonb false Réponses au questionnaire : famille de culture, activités, exigences, familles souhaitées mais pas encore disponibles. Sert de préremplissage et de demande à l’équipe de l’éditeur (EC-133).
pack_version_id uuid true app.pack_version Version du pack filière chargée à la fin du parcours. Nulle tant que le parcours n’est pas terminé.
motif text false Motif de la ligne, obligatoire (« Onboarding » en usage normal).
cree_par uuid false app.utilisateur Utilisateur qui a reporté, terminé ou rouvert le parcours.
cree_le timestamp with time zone clock_timestamp() false Horodatage de la ligne.
Name Type Definition
organisation_onboarding_etat_check CHECK CHECK ((etat = ANY (ARRAY[‘reporte’::text, ‘termine’::text, ‘rouvert’::text])))
organisation_onboarding_motif_check CHECK CHECK ((motif <> ‘’::text))
organisation_onboarding_reponses_check CHECK CHECK ((jsonb_typeof(reponses) = ‘object’::text))
organisation_onboarding_organisation_id_fkey FOREIGN KEY FOREIGN KEY (organisation_id) REFERENCES app.organisation(id)
organisation_onboarding_organisation_id_cree_par_fkey FOREIGN KEY FOREIGN KEY (organisation_id, cree_par) REFERENCES app.utilisateur(organisation_id, id)
organisation_onboarding_pack_version_id_fkey FOREIGN KEY FOREIGN KEY (pack_version_id) REFERENCES app.pack_version(id)
organisation_onboarding_pkey PRIMARY KEY PRIMARY KEY (id)
organisation_onboarding_organisation_id_id_key UNIQUE UNIQUE (organisation_id, id)
Name Definition
organisation_onboarding_pkey CREATE UNIQUE INDEX organisation_onboarding_pkey ON app.organisation_onboarding USING btree (id)
organisation_onboarding_organisation_id_id_key CREATE UNIQUE INDEX organisation_onboarding_organisation_id_id_key ON app.organisation_onboarding USING btree (organisation_id, id)
organisation_onboarding_courant_idx CREATE INDEX organisation_onboarding_courant_idx ON app.organisation_onboarding USING btree (organisation_id, cree_le DESC)
Name Definition
journal CREATE TRIGGER journal AFTER INSERT OR DELETE OR UPDATE ON app.organisation_onboarding FOR EACH ROW EXECUTE FUNCTION journal.tg_journaliser()
ajout_seul CREATE TRIGGER ajout_seul BEFORE DELETE OR UPDATE ON app.organisation_onboarding FOR EACH ROW EXECUTE FUNCTION app.tg_ajout_seul()
erDiagram

"app.organisation_onboarding" }o--|| "app.organisation" : "FOREIGN KEY (organisation_id) REFERENCES app.organisation(id)"
"app.organisation_onboarding" }o--|| "app.utilisateur" : "FOREIGN KEY (organisation_id, cree_par) REFERENCES app.utilisateur(organisation_id, id)"
"app.organisation_onboarding" }o--o| "app.pack_version" : "FOREIGN KEY (pack_version_id) REFERENCES app.pack_version(id)"

"app.organisation_onboarding" {
  uuid id "Identifiant stable (UUID v7)."
  uuid organisation_id FK "Organisation concernée. Sert à l'isolation par RLS (EC-032)."
  text etat "reporte : la personne a choisi « Plus tard » ; termine : les modules, le pack et les activités ont été appliqués ; rouvert : le parcours a été rejoué (tests, reprise après un changement d'activité)."
  jsonb reponses "Réponses au questionnaire : famille de culture, activités, exigences, familles souhaitées mais pas encore disponibles. Sert de préremplissage et de demande à l'équipe de l'éditeur (EC-133)."
  uuid pack_version_id FK "Version du pack filière chargée à la fin du parcours. Nulle tant que le parcours n'est pas terminé."
  text motif "Motif de la ligne, obligatoire (« Onboarding » en usage normal)."
  uuid cree_par FK "Utilisateur qui a reporté, terminé ou rouvert le parcours."
  timestamp_with_time_zone cree_le "Horodatage de la ligne."
}
"app.organisation" {
  uuid id "Identifiant de l'organisation (UUID v7)."
  text code "Code court en majuscules. Immuable : il figure dans les identifiants Keycloak (coopa.agent01). « EXT » est réservé."
  text nom "Nom de l'organisation."
  text pays "Pays, code ISO 3166-1 alpha-2."
  text langue "Langue de l'organisation : fr ou en."
  text fuseau_horaire "Fuseau horaire IANA utilisé pour l'affichage des dates."
  text devise_defaut "Devise par défaut des montants, code ISO 4217."
  text keycloak_organisation_id "Identifiant de l'organisation dans Keycloak."
  text organisme_certificateur "Organisme de certification de l'organisation. Aucun contrôle de format (EC-027)."
  text code_operateur "Code d'opérateur attribué par l'organisme certificateur."
  uuid logo_fichier_id FK "Fichier du logo (EC-029)."
  timestamp_with_time_zone cree_le "Date de création de la ligne."
  timestamp_with_time_zone modifie_le "Date de la dernière modification, tenue par un déclencheur."
  text source_conformite "Source des décisions de conformité : `interne` (contrôle interne de BioTrace) ou `externe` (outil tiers). Une seule source active à la fois ; app.statut_conformite.source doit lui être égale."
  text statut "État du compte client : `active` ou `suspendue`. Une organisation suspendue est refusée par la garde d'authentification (`organisation_suspendue`) ; ses données et ses comptes sont conservés. Décidé par l'équipe de l'éditeur (EC-126)."
  timestamp_with_time_zone suspendue_le "Date de la suspension en cours ; nulle tant que l'organisation est active."
}
"app.utilisateur" {
  uuid id "Identifiant de l'utilisateur (UUID v7)."
  uuid organisation_id FK "Organisation propriétaire de la ligne. Sert à l'isolation par RLS (EC-032) et au filtrage de la synchronisation."
  uuid keycloak_sub "Identifiant du compte Keycloak (revendication sub). Identique d'une organisation à l'autre pour un compte externe."
  text identifiant "Identifiant local de connexion, sans le code de l'organisation : 3 à 32 caractères parmi a-z, 0-9, _ et -. Unique dans l'organisation."
  text nom_affiche "Nom affiché dans l'application."
  text telephone "Numéro de téléphone. Attribut du compte, jamais son identifiant."
  text statut "Statut du compte : actif, suspendu ou desactive."
  timestamp_with_time_zone cree_le "Date de création de la ligne."
  timestamp_with_time_zone modifie_le "Date de la dernière modification, tenue par un déclencheur."
}
"app.pack_version" {
  uuid id "Identifiant de la version (UUID v7)."
  uuid pack_id FK "Pack concerné."
  text version "Version sémantique (majeure.mineure.correctif)."
  jsonb contenu "Contenu du pack, en JSON."
  text sha256 "Empreinte SHA-256 du contenu."
  boolean calibre "Vrai si les rendements du pack ont été calibrés (EC-007)."
  text statut "Statut : brouillon, publie ou retire."
  timestamp_with_time_zone publie_le "Date de publication. Nulle pour un brouillon."
  timestamp_with_time_zone cree_le "Date de création de la ligne."
  timestamp_with_time_zone modifie_le "Date de la dernière modification, tenue par un déclencheur."
  uuid publie_par "Identifiant Keycloak (sub) du membre de l'équipe de l'éditeur qui a publié la version depuis le cockpit. Nul pour les versions publiées par le pipeline ou la ligne de commande avant CP-5."
}

Generated by tbls