Point de la grille de conformité d’un référentiel (AM-06), publié par une version de pack référentiel. Global, en ajout seul : une correction passe par une nouvelle version du pack. Un point automatique s’appuie sur une ligne de décision de la même version ; un point manuel est déclaré par une personne.
| Name |
Type |
Default |
Nullable |
Children |
Parents |
Comment |
| id |
uuid |
app.uuid_v7() |
false |
app.evaluation_point app.preuve |
|
Identifiant stable (UUID v7). |
| pack_version_id |
uuid |
|
false |
|
app.pack_version app.regle_decision |
Version du pack référentiel qui publie le point. |
| code |
text |
|
false |
|
|
Code du point, unique dans la version du pack (par exemple CER-39). |
| libelle_fr |
text |
|
false |
|
|
Libellé en français. |
| libelle_en |
text |
|
false |
|
|
Libellé en anglais. |
| theme |
text |
|
false |
|
|
Thème d’affichage du tableau « prêt pour l’audit ». Texte libre fourni par le pack, provisoire (EC-104). |
| source |
text |
|
false |
|
|
Texte, article ou citation courte dont le point est tiré. |
| activites |
text[] |
‘{}’::text[] |
false |
|
|
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. |
| objet |
text |
|
false |
|
|
Ce sur quoi porte le point : opération, lot, site, organisation… |
| preuve_attendue |
text |
|
true |
|
|
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 ». |
| echeance |
text |
|
true |
|
|
Échéance ou fréquence, en texte. Stockée, non évaluée avant un besoin avéré (EC-104). |
| mode |
text |
|
false |
|
|
automatique : une règle du moteur le juge. manuel : une personne le coche, avec pièce. |
| regle_code |
text |
|
true |
|
app.regle_decision |
Ligne de décision de la même version de pack qui juge le point. Obligatoire si le mode est automatique, interdit sinon. |
| module_code |
text |
|
true |
|
app.module |
Module dont dépend le point. Vide : noyau. Si le module est inactif, le point est « non applicable ». |
| date_effet |
date |
|
false |
|
|
Premier jour où le point s’applique (AM-11). |
| date_fin |
date |
|
true |
|
|
Premier jour où le point ne s’applique plus. La date de fin est exclue. |
| date_reference |
text |
|
false |
|
|
Date à laquelle le point se juge : opération, récolte, création du lot ou émission du certificat (AM-11). |
| cree_le |
timestamp with time zone |
now() |
false |
|
|
Date de publication du point. |
| Name |
Type |
Definition |
| point_controle_check |
CHECK |
CHECK (((date_fin IS NULL) OR (date_fin > date_effet))) |
| point_controle_code_check |
CHECK |
CHECK ((code ~ ‘^[A-Za-z0-9_.-]+$’::text)) |
| point_controle_date_reference_check |
CHECK |
CHECK ((date_reference = ANY (ARRAY[‘operation’::text, ‘recolte’::text, ‘creation_lot’::text, ‘emission_certificat’::text]))) |
| point_controle_echeance_check |
CHECK |
CHECK (((echeance IS NULL) OR (btrim(echeance) <> ‘’::text))) |
| point_controle_libelle_en_check |
CHECK |
CHECK ((btrim(libelle_en) <> ‘’::text)) |
| point_controle_libelle_fr_check |
CHECK |
CHECK ((btrim(libelle_fr) <> ‘’::text)) |
| point_controle_mode_check |
CHECK |
CHECK ((mode = ANY (ARRAY[‘automatique’::text, ‘manuel’::text]))) |
| point_controle_objet_check |
CHECK |
CHECK ((objet ~ ‘^[a-z][a-z0-9_]*$’::text)) |
| point_controle_preuve_attendue_check |
CHECK |
CHECK (((preuve_attendue IS NULL) OR (btrim(preuve_attendue) <> ‘’::text))) |
| point_controle_source_check |
CHECK |
CHECK ((btrim(source) <> ‘’::text)) |
| point_controle_theme_check |
CHECK |
CHECK ((btrim(theme) <> ‘’::text)) |
| point_controle_pack_version_id_fkey |
FOREIGN KEY |
FOREIGN KEY (pack_version_id) REFERENCES app.pack_version(id) |
| point_controle_module_code_fkey |
FOREIGN KEY |
FOREIGN KEY (module_code) REFERENCES app.module(code) |
| point_controle_pack_version_id_regle_code_fkey |
FOREIGN KEY |
FOREIGN KEY (pack_version_id, regle_code) REFERENCES app.regle_decision(pack_version_id, code) |
| point_controle_pkey |
PRIMARY KEY |
PRIMARY KEY (id) |
| point_controle_pack_version_id_code_key |
UNIQUE |
UNIQUE (pack_version_id, code) |
| Name |
Definition |
| point_controle_pkey |
CREATE UNIQUE INDEX point_controle_pkey ON app.point_controle USING btree (id) |
| point_controle_pack_version_id_code_key |
CREATE UNIQUE INDEX point_controle_pack_version_id_code_key ON app.point_controle USING btree (pack_version_id, code) |
| point_controle_pack_idx |
CREATE INDEX point_controle_pack_idx ON app.point_controle USING btree (pack_version_id) |
| Name |
Definition |
| journal |
CREATE TRIGGER journal AFTER INSERT OR DELETE OR UPDATE ON app.point_controle FOR EACH ROW EXECUTE FUNCTION journal.tg_journaliser() |
| ajout_seul |
CREATE TRIGGER ajout_seul BEFORE DELETE OR UPDATE ON app.point_controle FOR EACH ROW EXECUTE FUNCTION app.tg_ajout_seul() |
| coherent |
CREATE TRIGGER coherent BEFORE INSERT ON app.point_controle FOR EACH ROW EXECUTE FUNCTION app.tg_point_controle_coherent() |
erDiagram
"app.evaluation_point" }o--|| "app.point_controle" : "FOREIGN KEY (point_controle_id) REFERENCES app.point_controle(id)"
"app.preuve" }o--|| "app.point_controle" : "FOREIGN KEY (point_controle_id) REFERENCES app.point_controle(id)"
"app.point_controle" }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.point_controle" }o--o| "app.module" : "FOREIGN KEY (module_code) REFERENCES app.module(code)"
"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.evaluation_point" {
uuid id "Identifiant stable (UUID v7)."
uuid organisation_id FK "Organisation propriétaire. Sert à l'isolation par RLS (EC-032)."
uuid point_controle_id FK "Point évalué."
text objet_type "Type de l'objet évalué (lot, site…). Vide : le point est évalué pour toute l'organisation."
uuid objet_id "Identifiant de l'objet évalué. Renseigné avec `objet_type`, ou pas du tout."
text statut "`satisfait`, `preuve_manquante`, `ecart_ouvert`, `a_verifier` ou `non_applicable`. Une personne ne déclare jamais « preuve manquante » : il se déduit des pièces."
text source "`regle` : résultat d'une règle du moteur. `manuelle` : déclaration d'une personne."
uuid constat_id FK "Constat d'écart ouvert par la règle (AM-15), pour une évaluation issue d'une règle."
text motif "Justification de la déclaration. Obligatoire pour déclarer un point satisfait ou non applicable."
uuid evalue_par FK "Utilisateur qui a déclaré. Vide pour un résultat de règle."
timestamp_with_time_zone evalue_le "Date de l'évaluation."
}
"app.preuve" {
uuid id "Identifiant stable (UUID v7)."
uuid organisation_id FK "Organisation propriétaire. Sert à l'isolation par RLS (EC-032)."
uuid fichier_id FK "Fichier déposé (de la même organisation)."
uuid point_controle_id FK "Point de contrôle que la pièce appuie."
text objet_type "Type de l'objet appuyé. Vide : toute l'organisation."
uuid objet_id "Identifiant de l'objet appuyé. Renseigné avec `objet_type`, ou pas du tout."
uuid evaluation_point_id FK "Évaluation que la pièce a motivée, si elle a été liée à ce moment."
uuid depose_par FK "Utilisateur qui a lié la pièce."
timestamp_with_time_zone cree_le "Date de liaison."
}
"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.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.module" {
uuid id "Identifiant stable (UUID v7)."
text code "Code du module ; préfixe de ses permissions (EC-092)."
text libelle_fr "Libellé en français."
text libelle_en "Libellé en anglais."
boolean toujours_actif "Vrai pour le noyau : il ne s'active ni ne se désactive."
smallint ordre "Ordre d'affichage."
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)."
}
Generated by tbls