Aller au contenu

app.regle_decision

Lignes des tables de décision publiées par les packs référentiels (AM-09), en ajout seul : une correction passe par une nouvelle version du pack. Toutes les lignes vraies s’appliquent ; l’issue la plus forte décide.

Name Type Default Nullable Children Parents Comment
id uuid app.uuid_v7() false app.constat Identifiant stable (UUID v7).
pack_version_id uuid false app.point_controle app.pack_version Version du pack référentiel qui publie la ligne.
code text false app.point_controle Identifiant de la ligne dans le pack, stable d’une version à l’autre.
accroche text false Point d’accroche où la ligne est évaluée (reception.avant_validation…), déclaré par un manifeste de module.
contexte jsonb ‘{}’::jsonb false Facteurs cités et leurs valeurs acceptées (produit, référentiel…) ; {} : tous les contextes.
condition text false Condition CEL booléenne sur les variables du dictionnaire ; les seuils passent par param(‘clé’), jamais en dur.
parametres text[] ‘{}’::text[] false Clés de paramètres citées par la condition, résolues par le moteur de paramètres.
issue text false 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.
source text false Texte, article ou règle d’où vient la ligne. Obligatoire (PC-06).
date_effet date false Date d’effet, incluse (AM-11).
date_fin date true Date de fin, exclue ; vide si la ligne reste en vigueur.
date_reference text false 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).
evaluation text false locale (téléphone et serveur) ou serveur (données absentes du téléphone ; issue connue à la synchronisation, AM-10).
mesure jsonb true Pour un écart chiffré : variable constatée et paramètre attendu (EC-098).
cree_le timestamp with time zone now() false Date de publication de la ligne.
Name Type Definition
regle_decision_accroche_check CHECK CHECK ((accroche ~ ‘^[a-z][a-z0-9_].[a-z][a-z0-9_]$’::text))
regle_decision_check CHECK CHECK (((date_fin IS NULL) OR (date_fin > date_effet)))
regle_decision_code_check CHECK CHECK ((code ~ ‘^[A-Za-z0-9_.-]+$’::text))
regle_decision_condition_check CHECK CHECK ((condition <> ‘’::text))
regle_decision_contexte_check CHECK CHECK ((jsonb_typeof(contexte) = ‘object’::text))
regle_decision_date_reference_check CHECK CHECK ((date_reference = ANY (ARRAY[‘operation’::text, ‘recolte’::text, ‘creation_lot’::text, ‘emission_certificat’::text])))
regle_decision_evaluation_check CHECK CHECK ((evaluation = ANY (ARRAY[‘locale’::text, ‘serveur’::text])))
regle_decision_issue_check CHECK CHECK ((issue = ANY (ARRAY[‘signaler’::text, ‘exiger_note’::text, ‘exiger_piece’::text, ‘creer_non_conformite’::text, ‘quarantaine’::text, ‘bloquer’::text])))
regle_decision_mesure_check CHECK CHECK (((mesure IS NULL) OR ((mesure ? ‘constatee’::text) AND (mesure ? ‘attendue’::text))))
regle_decision_source_check CHECK CHECK ((btrim(source) <> ‘’::text))
regle_decision_pack_version_id_fkey FOREIGN KEY FOREIGN KEY (pack_version_id) REFERENCES app.pack_version(id)
regle_decision_pkey PRIMARY KEY PRIMARY KEY (id)
regle_decision_pack_version_id_code_key UNIQUE UNIQUE (pack_version_id, code)
Name Definition
regle_decision_pkey CREATE UNIQUE INDEX regle_decision_pkey ON app.regle_decision USING btree (id)
regle_decision_pack_version_id_code_key CREATE UNIQUE INDEX regle_decision_pack_version_id_code_key ON app.regle_decision USING btree (pack_version_id, code)
regle_decision_accroche_idx CREATE INDEX regle_decision_accroche_idx ON app.regle_decision USING btree (accroche)
Name Definition
journal CREATE TRIGGER journal AFTER INSERT OR DELETE OR UPDATE ON app.regle_decision FOR EACH ROW EXECUTE FUNCTION journal.tg_journaliser()
ajout_seul CREATE TRIGGER ajout_seul BEFORE DELETE OR UPDATE ON app.regle_decision FOR EACH ROW EXECUTE FUNCTION app.tg_ajout_seul()
erDiagram

"app.constat" }o--o| "app.regle_decision" : "FOREIGN KEY (regle_decision_id) REFERENCES app.regle_decision(id)"
"app.regle_decision" }o--|| "app.pack_version" : "FOREIGN KEY (pack_version_id) REFERENCES app.pack_version(id)"
"app.point_controle" }o--|| "app.regle_decision" : "FOREIGN KEY (pack_version_id, regle_code) REFERENCES app.regle_decision(pack_version_id, code)"

"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.constat" {
  uuid id "Identifiant stable (UUID v7)."
  uuid organisation_id FK "Organisation concernée. Sert à l'isolation par RLS (EC-032)."
  uuid regle_decision_id FK "Ligne de décision évaluée."
  text regle_code "Code de la ligne, recopié pour la lecture (instantané, PC-08)."
  text version "Version du pack de la ligne, recopiée (instantané, PC-08)."
  text source "Source de la ligne, recopiée (instantané, PC-08)."
  text accroche "Point d'accroche de l'évaluation."
  text objet_type "Nature de l'objet concerné (reception, lot, collecte…)."
  uuid objet_id "Identifiant de l'objet concerné."
  text resultat "ecart (condition vraie) ou a_verifier (variable, paramètre ou date absents, erreur d'évaluation : jamais de valeur par défaut, PC-07)."
  text issue "Issue de la ligne pour un écart ; vide pour « à vérifier »."
  text motif "Raison d'un « à vérifier » ; vide pour un écart."
  jsonb valeurs "Valeurs lues par la ligne et paramètres utilisés, au moment de l'évaluation."
  bigint constatee "Valeur constatée, si la ligne déclare une mesure (entier, unité de la variable)."
  bigint attendue "Valeur attendue, si la ligne déclare une mesure."
  bigint ecart "Écart constatée − attendue, si la ligne déclare une mesure."
  uuid controle_id FK "Entrée de la file de contrôle liée, quand l'issue met une commande en contrôle (EC-091)."
  text statut "ouvert, justifie (note exigée), leve, clos (final)."
  text note "Justification écrite (RG-308), obligatoire pour « justifié »."
  uuid statut_par FK "Auteur du dernier changement de statut."
  timestamp_with_time_zone statut_le "Date du dernier changement de statut, posée par la base."
  uuid cree_par FK "Utilisateur à l'origine de l'évaluation ; vide pour une évaluation du serveur."
  timestamp_with_time_zone cree_le "Date du constat."
  timestamp_with_time_zone modifie_le "Date de la dernière modification, tenue par un déclencheur."
  text origine "Origine de la règle : pack (ligne d'une table de décision, regle_decision_id renseigné) ou processus (règle codée comme RG-014 ou RG-172, sans ligne de décision)."
}
"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.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."
}

Generated by tbls