Aller au contenu

app.activite

Catalogue fermé et versionné des types d’activité, sur trois niveaux (AM-04). Défini par BioTrace : un pack crée des instances typées, jamais de nouveau type. Les normes, les portées de certificat et les modules citent ces types.

Name Type Default Nullable Children Parents Comment
id uuid app.uuid_v7() false Identifiant stable (UUID v7).
code text false app.activite app.module_activite app.organisation_activite app.certificat_portee app.noeud_activite Code stable du type, cité par les packs, les grilles et les modules.
niveau smallint false Niveau dans l’arbre : 1 activité, 2 sous-activité, 3 étape. Trois niveaux au plus.
parent_code text true app.activite Type parent indicatif du catalogue (affichage) ; non vérifié contre l’arbre réel d’une organisation (app.noeud_activite), où seul le niveau du type doit correspondre à la profondeur du chemin.
regroupement text false Regroupement affiché à l’écran : les cinq activités élémentaires du cahier v1.2, §2.2.
libelle_fr text false Libellé en français.
libelle_en text false Libellé en anglais.
ordre smallint false Ordre d’affichage parmi les types du même parent.
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 dernière modification (par migration seulement).
provisoire boolean false false Vrai pour un type de niveau 2 ou 3 posé avant la validation du catalogue avec l’organisme de certification (Q1, EC-108). Le code reste stable ; le libellé et le rangement peuvent changer.
Name Type Definition
activite_check CHECK CHECK (((niveau = 1) = (parent_code IS NULL)))
activite_code_check CHECK CHECK ((code ~ ‘^[a-z][a-z0-9_]*$’::text))
activite_libelle_en_check CHECK CHECK ((libelle_en <> ‘’::text))
activite_libelle_fr_check CHECK CHECK ((libelle_fr <> ‘’::text))
activite_niveau_check CHECK CHECK (((niveau >= 1) AND (niveau <= 3)))
activite_regroupement_check CHECK CHECK ((regroupement = ANY (ARRAY[‘production’::text, ‘achat’::text, ‘nettoyage_triage’::text, ‘transformation’::text, ‘vente_export’::text])))
activite_pkey PRIMARY KEY PRIMARY KEY (id)
activite_code_key UNIQUE UNIQUE (code)
activite_parent_code_fkey FOREIGN KEY FOREIGN KEY (parent_code) REFERENCES app.activite(code)
Name Definition
activite_pkey CREATE UNIQUE INDEX activite_pkey ON app.activite USING btree (id)
activite_code_key CREATE UNIQUE INDEX activite_code_key ON app.activite USING btree (code)
Name Definition
journal CREATE TRIGGER journal AFTER INSERT OR DELETE OR UPDATE ON app.activite FOR EACH ROW EXECUTE FUNCTION journal.tg_journaliser()
modifie_le CREATE TRIGGER modifie_le BEFORE UPDATE ON app.activite FOR EACH ROW EXECUTE FUNCTION app.tg_modifie_le()
erDiagram

"app.activite" }o--o| "app.activite" : "FOREIGN KEY (parent_code) REFERENCES app.activite(code)"
"app.module_activite" }o--|| "app.activite" : "FOREIGN KEY (activite_code) REFERENCES app.activite(code)"
"app.organisation_activite" }o--|| "app.activite" : "FOREIGN KEY (activite_code) REFERENCES app.activite(code)"
"app.certificat_portee" }o--o| "app.activite" : "FOREIGN KEY (activite_code) REFERENCES app.activite(code)"
"app.noeud_activite" }o--|| "app.activite" : "FOREIGN KEY (activite_code) REFERENCES app.activite(code)"

"app.activite" {
  uuid id "Identifiant stable (UUID v7)."
  text code "Code stable du type, cité par les packs, les grilles et les modules."
  smallint niveau "Niveau dans l'arbre : 1 activité, 2 sous-activité, 3 étape. Trois niveaux au plus."
  text parent_code FK "Type parent indicatif du catalogue (affichage) ; non vérifié contre l'arbre réel d'une organisation (app.noeud_activite), où seul le niveau du type doit correspondre à la profondeur du chemin."
  text regroupement "Regroupement affiché à l'écran : les cinq activités élémentaires du cahier v1.2, §2.2."
  text libelle_fr "Libellé en français."
  text libelle_en "Libellé en anglais."
  smallint ordre "Ordre d'affichage parmi les types du même parent."
  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)."
  boolean provisoire "Vrai pour un type de niveau 2 ou 3 posé avant la validation du catalogue avec l'organisme de certification (Q1, EC-108). Le code reste stable ; le libellé et le rangement peuvent changer."
}
"app.module_activite" {
  uuid id "Identifiant stable (UUID v7)."
  text module_code FK "Module proposé."
  text activite_code FK "Activité déclarée qui le propose."
  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.organisation_activite" {
  uuid id "Identifiant stable (UUID v7)."
  uuid organisation_id FK "Organisation concernée. Sert à l'isolation par RLS (EC-032)."
  uuid site_id FK "Site concerné ; vide pour toute l'organisation."
  text noeud "Nœud de l'arbre d'activités : code d'activité au premier niveau, chemin pointé du pack (noeud_activite.chemin) aux niveaux 2 et 3."
  text activite_code FK "Type du nœud, pris dans le catalogue fermé."
  text etat "Nouvel état : active ou désactivée. Un changement sans effet est refusé (etat_inchange)."
  text motif "Motif du changement, obligatoire."
  uuid cree_par FK "Utilisateur qui a fait le changement."
  timestamp_with_time_zone cree_le "Horodatage du changement, qui vaut date d'effet."
}
"app.certificat_portee" {
  uuid id "Identifiant stable (UUID v7)."
  uuid organisation_id FK "Organisation propriétaire. Sert à l'isolation par RLS (EC-032)."
  uuid certificat_id FK "Certificat dont la ligne précise la portée (de la même organisation)."
  text dimension "`activite`, `produit`, `site` ou `unite`. Détermine la seule colonne d'élément renseignée."
  text activite_code FK "Activité du catalogue fermé (dimension `activite`)."
  uuid produit_id FK "Produit du catalogue de l'organisation (dimension `produit`). Les produits sont listés un à un : le catalogue n'a pas de catégorie (EC-102)."
  uuid site_id FK "Site de l'organisation (dimension `site`)."
  uuid producteur_id FK "Unité producteur (dimension `unite`). Exactement une unité entre producteur, parcelle et zone de cueillette."
  uuid parcelle_id FK "Unité parcelle (dimension `unite`)."
  uuid zone_cueillette_id FK "Unité zone de cueillette (dimension `unite`)."
  boolean inclus "Vrai : l'élément est couvert par le certificat. Faux : il est exclu expressément, et l'exclusion l'emporte sur une inclusion plus large."
  uuid cree_par FK "Utilisateur qui a déclaré la ligne."
  timestamp_with_time_zone cree_le "Date de création de la ligne."
}
"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)."
}

Generated by tbls