Version d’un pack filière. Une version publiée est figée : seul le passage à « retiré » reste possible.
| Name |
Type |
Default |
Nullable |
Children |
Parents |
Comment |
| id |
uuid |
app.uuid_v7() |
false |
app.campagne app.produit app.variable_dictionnaire app.regle_decision app.point_controle app.noeud_activite app.organisation_onboarding |
|
Identifiant de la version (UUID v7). |
| pack_id |
uuid |
|
false |
|
app.pack |
Pack concerné. |
| version |
text |
|
false |
|
|
Version sémantique (majeure.mineure.correctif). |
| contenu |
jsonb |
|
false |
|
|
Contenu du pack, en JSON. |
| sha256 |
text |
|
false |
|
|
Empreinte SHA-256 du contenu. |
| calibre |
boolean |
false |
false |
|
|
Vrai si les rendements du pack ont été calibrés (EC-007). |
| statut |
text |
‘brouillon’::text |
false |
|
|
Statut : brouillon, publie ou retire. |
| publie_le |
timestamp with time zone |
|
true |
|
|
Date de publication. Nulle pour un brouillon. |
| cree_le |
timestamp with time zone |
now() |
false |
|
|
Date de création de la ligne. |
| modifie_le |
timestamp with time zone |
now() |
false |
|
|
Date de la dernière modification, tenue par un déclencheur. |
| publie_par |
uuid |
|
true |
|
|
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. |
| Name |
Type |
Definition |
| pack_version_check |
CHECK |
CHECK (((statut = ‘brouillon’::text) = (publie_le IS NULL))) |
| pack_version_sha256_check |
CHECK |
CHECK ((sha256 ~ ‘^[0-9a-f]{64}$’::text)) |
| pack_version_statut_check |
CHECK |
CHECK ((statut = ANY (ARRAY[‘brouillon’::text, ‘publie’::text, ‘retire’::text]))) |
| pack_version_version_check |
CHECK |
CHECK ((version ~ ‘^[0-9]+.[0-9]+.[0-9]+$’::text)) |
| pack_version_pack_id_fkey |
FOREIGN KEY |
FOREIGN KEY (pack_id) REFERENCES app.pack(id) |
| pack_version_pkey |
PRIMARY KEY |
PRIMARY KEY (id) |
| pack_version_pack_id_version_key |
UNIQUE |
UNIQUE (pack_id, version) |
| Name |
Definition |
| pack_version_pkey |
CREATE UNIQUE INDEX pack_version_pkey ON app.pack_version USING btree (id) |
| pack_version_pack_id_version_key |
CREATE UNIQUE INDEX pack_version_pack_id_version_key ON app.pack_version USING btree (pack_id, version) |
| Name |
Definition |
| journal |
CREATE TRIGGER journal AFTER INSERT OR DELETE OR UPDATE ON app.pack_version FOR EACH ROW EXECUTE FUNCTION journal.tg_journaliser() |
| modifie_le |
CREATE TRIGGER modifie_le BEFORE UPDATE ON app.pack_version FOR EACH ROW EXECUTE FUNCTION app.tg_modifie_le() |
| pack_version_fige |
CREATE TRIGGER pack_version_fige BEFORE UPDATE ON app.pack_version FOR EACH ROW EXECUTE FUNCTION app.tg_pack_version_fige() |
erDiagram
"app.campagne" }o--|| "app.pack_version" : "FOREIGN KEY (pack_version_id) REFERENCES app.pack_version(id)"
"app.produit" }o--o| "app.pack_version" : "FOREIGN KEY (pack_version_id) REFERENCES app.pack_version(id)"
"app.variable_dictionnaire" }o--o| "app.pack_version" : "FOREIGN KEY (pack_version_id) REFERENCES app.pack_version(id)"
"app.regle_decision" }o--|| "app.pack_version" : "FOREIGN KEY (pack_version_id) REFERENCES app.pack_version(id)"
"app.point_controle" }o--|| "app.pack_version" : "FOREIGN KEY (pack_version_id) REFERENCES app.pack_version(id)"
"app.noeud_activite" }o--|| "app.pack_version" : "FOREIGN KEY (pack_version_id) REFERENCES app.pack_version(id)"
"app.organisation_onboarding" }o--o| "app.pack_version" : "FOREIGN KEY (pack_version_id) REFERENCES app.pack_version(id)"
"app.pack_version" }o--|| "app.pack" : "FOREIGN KEY (pack_id) REFERENCES app.pack(id)"
"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."
}
"app.campagne" {
uuid id "Identifiant stable (UUID v7)."
uuid organisation_id FK "Organisation propriétaire. Sert à l'isolation par RLS (EC-032)."
text code "Code de campagne inséré dans le numéro officiel. Unique par organisation, toutes années confondues (EC-031)."
text nom "Nom de la campagne."
date date_ouverture_prevue "Date d'ouverture prévue. Détermine « AA » tant que la campagne est en préparation."
date date_cloture_prevue "Date de clôture prévue. Jamais avant la date d'ouverture prévue."
date date_ouverture "Date d'ouverture réelle, renseignée à l'ouverture puis figée."
date date_cloture "Date de clôture réelle, renseignée à la clôture."
smallint annee "Année d'ouverture (réelle, sinon prévue), calculée. Ses deux derniers chiffres forment « AA » du numéro (EC-023)."
uuid pack_version_id FK "Version du pack de la filière. Figée à l'ouverture, qui exige une version publiée."
integer modele_numerotation_version FK "Version du modèle de numérotation de l'organisation. Obligatoire et figée à l'ouverture ; la clé vers le modèle est posée à la séquence A3."
text statut "`preparation`, `ouverte` ou `cloturee`. Pas de retour en préparation."
timestamp_with_time_zone cree_le "Date de création de la ligne."
timestamp_with_time_zone modifie_le "Date de dernière modification."
}
"app.produit" {
uuid id "Identifiant stable (UUID v7)."
uuid organisation_id FK "Organisation propriétaire. Sert à l'isolation par RLS (EC-032)."
text code "Code du produit, inséré dans le numéro officiel (segment « produit »). Unique par organisation (EC-063)."
text nom_fr "Nom en français."
text nom_en "Nom en anglais."
text unite_code FK "Unité de saisie et d'affichage."
boolean est_matiere_premiere "Vrai pour une matière première, faux pour un produit fini."
uuid matiere_premiere_liee_id FK "Matière première dont le produit fini est issu. Réservé aux produits finis, de la même organisation."
text code_modele "Code du modèle de produit du pack qui a servi à créer la ligne. Nul pour un produit créé à la main."
uuid pack_version_id FK "Version de pack d'origine. Nulle pour un produit créé à la main ; nulle exactement quand code_modele l'est."
boolean actif "Faux quand le produit n'est plus utilisé. Un produit n'est jamais supprimé."
timestamp_with_time_zone cree_le "Date de création de la ligne."
timestamp_with_time_zone modifie_le "Date de dernière modification."
}
"app.variable_dictionnaire" {
uuid id "Identifiant stable (UUID v7)."
text nom "Nom pointé de la variable, lu par les conditions (reception.quantite_g)."
text type "Type : entier, texte, booléen, liste de textes, table texte → texte. Jamais de décimal."
text unite "Unité de la valeur (g, cp…) ; vide pour un texte ou un booléen."
text origine "Origine : noyau (code), pack (mesure déclarée par une étape), indicateur (calcul du noyau)."
boolean hors_ligne "Vrai si la variable est disponible sur le téléphone ; sinon la ligne qui la lit est évaluée au serveur (AM-10)."
text module_code FK "Module qui déclare la variable ; exclusif de pack_version_id."
uuid pack_version_id FK "Version de pack qui déclare la variable ; exclusif de module_code."
timestamp_with_time_zone cree_le "Date de création de la ligne."
timestamp_with_time_zone modifie_le "Date de dernière modification (par migration seulement)."
}
"app.regle_decision" {
uuid id "Identifiant stable (UUID v7)."
uuid pack_version_id FK "Version du pack référentiel qui publie la ligne."
text code "Identifiant de la ligne dans le pack, stable d'une version à l'autre."
text accroche "Point d'accroche où la ligne est évaluée (reception.avant_validation…), déclaré par un manifeste de module."
jsonb contexte "Facteurs cités et leurs valeurs acceptées (produit, référentiel…) ; {} : tous les contextes."
text condition "Condition CEL booléenne sur les variables du dictionnaire ; les seuils passent par param('clé'), jamais en dur."
text__ parametres "Clés de paramètres citées par la condition, résolues par le moteur de paramètres."
text issue "Issue d'une condition vraie, parmi six, de la plus faible à la plus forte : signaler, exiger une note, exiger une pièce, créer une non-conformité, mettre en quarantaine, bloquer l'action."
text source "Texte, article ou règle d'où vient la ligne. Obligatoire (PC-06)."
date date_effet "Date d'effet, incluse (AM-11)."
date date_fin "Date de fin, exclue ; vide si la ligne reste en vigueur."
text date_reference "Date de l'objet comparée à la période d'effet : opération, récolte, création du lot ou émission du certificat (AM-11)."
text evaluation "locale (téléphone et serveur) ou serveur (données absentes du téléphone ; issue connue à la synchronisation, AM-10)."
jsonb mesure "Pour un écart chiffré : variable constatée et paramètre attendu (EC-098)."
timestamp_with_time_zone cree_le "Date de publication de la ligne."
}
"app.point_controle" {
uuid id "Identifiant stable (UUID v7)."
uuid pack_version_id FK "Version du pack référentiel qui publie le point."
text code "Code du point, unique dans la version du pack (par exemple CER-39)."
text libelle_fr "Libellé en français."
text libelle_en "Libellé en anglais."
text theme "Thème d'affichage du tableau « prêt pour l'audit ». Texte libre fourni par le pack, provisoire (EC-104)."
text source "Texte, article ou citation courte dont le point est tiré."
text__ activites "Activités du catalogue `app.activite` auxquelles le point s'applique. Vide : toutes les activités. Le point est « non applicable » si l'organisation n'en exerce aucune."
text objet "Ce sur quoi porte le point : opération, lot, site, organisation…"
text preuve_attendue "Type de pièce attendue, en texte. Vide : le point n'exige aucune pièce. Sans pièce liée, un point autrement satisfait est « preuve manquante »."
text echeance "Échéance ou fréquence, en texte. Stockée, non évaluée avant un besoin avéré (EC-104)."
text mode "`automatique` : une règle du moteur le juge. `manuel` : une personne le coche, avec pièce."
text regle_code FK "Ligne de décision de la même version de pack qui juge le point. Obligatoire si le mode est automatique, interdit sinon."
text module_code FK "Module dont dépend le point. Vide : noyau. Si le module est inactif, le point est « non applicable »."
date date_effet "Premier jour où le point s'applique (AM-11)."
date date_fin "Premier jour où le point ne s'applique plus. La date de fin est exclue."
text date_reference "Date à laquelle le point se juge : opération, récolte, création du lot ou émission du certificat (AM-11)."
timestamp_with_time_zone cree_le "Date de publication du point."
}
"app.noeud_activite" {
uuid id "Identifiant stable (UUID v7)."
uuid organisation_id FK "Organisation propriétaire. Sert à l'isolation par RLS (EC-032)."
text chemin "Chemin pointé du nœud, un segment par niveau, trois niveaux au plus. Au premier niveau, il vaut le code de l'activité."
text activite_code FK "Type du nœud, pris dans le catalogue fermé app.activite ; sa profondeur est celle du nœud."
text libelle_fr "Libellé en français, défini par le pack."
text libelle_en "Libellé en anglais, défini par le pack."
boolean obligatoire "Vrai : le nœud ne se désactive pas tant que son parent est actif."
boolean critique "Vrai : étape critique (OSP-05), donc obligatoire."
boolean sous_traitable "Vrai : le nœud peut être confié à un sous-traitant."
smallint ordre "Rang parmi les nœuds frères."
uuid pack_version_id FK "Version du pack d'où le nœud a été copié."
timestamp_with_time_zone cree_le "Date de création de la ligne."
timestamp_with_time_zone modifie_le "Date de dernière modification de la ligne."
jsonb contrat "Contrat facultatif du nœud (AM-04, EC-118) : entrées et sorties typées (codes produit), mesures (code, libellé, unité, type) et clés de paramètres, tel que publié par le pack et validé par packs.validerArbre. Absent : le nœud accepte tout (pas de contrat défini). Les intrants cités par AM-04 restent en écart (EC-119)."
}
"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.pack" {
uuid id "Identifiant du pack (UUID v7)."
text code "Code du pack (ex. fruits)."
text libelle "Libellé du pack."
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 type "Type de pack (AM-06) : filiere (produits, paramètres, arbre d'activités) ou referentiel (états de qualité, grilles, tables de décision)."
}
Generated by tbls