Aller au contenu

app.rendement_parcelle

Rendement de référence d’une parcelle ou d’une zone, en g/ha. En ajout seul : chaque révision ajoute une ligne avec son motif (RG-023). Aucune valeur par défaut : sans ligne, pas de capacité (EC-007).

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 app.parcelle app.zone_cueillette Organisation propriétaire. Sert à l’isolation par RLS (EC-032).
groupement_id uuid false app.parcelle app.zone_cueillette Groupement de la cible, repris d’elle par la base. Le téléphone filtre dessus.
parcelle_id uuid true app.parcelle Parcelle cible. Exactement une cible entre parcelle et zone de cueillette.
zone_cueillette_id uuid true app.zone_cueillette Zone de cueillette cible.
version integer false Numéro de version de la cible, à partir de 1, attribué par la base. La plus élevée est en vigueur.
valeur_g_ha bigint false Rendement de référence en grammes par hectare (EC-030), strictement positif.
motif text false Justification écrite de la valeur, obligatoire à chaque ligne (RG-023).
cree_par uuid false app.utilisateur Utilisateur qui a fixé ou révisé le rendement.
cree_le timestamp with time zone now() false Date de création de la version.
Name Type Definition
rendement_parcelle_check CHECK CHECK (((parcelle_id IS NULL) <> (zone_cueillette_id IS NULL)))
rendement_parcelle_motif_check CHECK CHECK ((motif <> ‘’::text))
rendement_parcelle_valeur_g_ha_check CHECK CHECK ((valeur_g_ha > 0))
rendement_parcelle_version_check CHECK CHECK ((version > 0))
rendement_parcelle_organisation_id_fkey FOREIGN KEY FOREIGN KEY (organisation_id) REFERENCES app.organisation(id)
rendement_parcelle_organisation_id_cree_par_fkey FOREIGN KEY FOREIGN KEY (organisation_id, cree_par) REFERENCES app.utilisateur(organisation_id, id)
rendement_parcelle_organisation_id_groupement_id_parcelle__fkey FOREIGN KEY FOREIGN KEY (organisation_id, groupement_id, parcelle_id) REFERENCES app.parcelle(organisation_id, groupement_id, id)
rendement_parcelle_organisation_id_groupement_id_zone_cuei_fkey FOREIGN KEY FOREIGN KEY (organisation_id, groupement_id, zone_cueillette_id) REFERENCES app.zone_cueillette(organisation_id, groupement_id, id)
rendement_parcelle_pkey PRIMARY KEY PRIMARY KEY (id)
rendement_parcelle_organisation_id_id_key UNIQUE UNIQUE (organisation_id, id)
rendement_parcelle_parcelle_id_version_key UNIQUE UNIQUE (parcelle_id, version)
rendement_parcelle_zone_cueillette_id_version_key UNIQUE UNIQUE (zone_cueillette_id, version)
Name Definition
rendement_parcelle_pkey CREATE UNIQUE INDEX rendement_parcelle_pkey ON app.rendement_parcelle USING btree (id)
rendement_parcelle_organisation_id_id_key CREATE UNIQUE INDEX rendement_parcelle_organisation_id_id_key ON app.rendement_parcelle USING btree (organisation_id, id)
rendement_parcelle_parcelle_id_version_key CREATE UNIQUE INDEX rendement_parcelle_parcelle_id_version_key ON app.rendement_parcelle USING btree (parcelle_id, version)
rendement_parcelle_zone_cueillette_id_version_key CREATE UNIQUE INDEX rendement_parcelle_zone_cueillette_id_version_key ON app.rendement_parcelle USING btree (zone_cueillette_id, version)
Name Definition
journal CREATE TRIGGER journal AFTER INSERT OR DELETE OR UPDATE ON app.rendement_parcelle FOR EACH ROW EXECUTE FUNCTION journal.tg_journaliser()
ajout_seul CREATE TRIGGER ajout_seul BEFORE DELETE OR UPDATE ON app.rendement_parcelle FOR EACH ROW EXECUTE FUNCTION app.tg_ajout_seul()
calcul CREATE TRIGGER calcul BEFORE INSERT ON app.rendement_parcelle FOR EACH ROW EXECUTE FUNCTION app.tg_rendement_parcelle_calcul()
erDiagram

"app.rendement_parcelle" }o--|| "app.organisation" : "FOREIGN KEY (organisation_id) REFERENCES app.organisation(id)"
"app.rendement_parcelle" }o--|| "app.utilisateur" : "FOREIGN KEY (organisation_id, cree_par) REFERENCES app.utilisateur(organisation_id, id)"
"app.rendement_parcelle" }o--|| "app.parcelle" : "FOREIGN KEY (organisation_id, groupement_id, parcelle_id) REFERENCES app.parcelle(organisation_id, groupement_id, id)"
"app.rendement_parcelle" }o--|| "app.zone_cueillette" : "FOREIGN KEY (organisation_id, groupement_id, zone_cueillette_id) REFERENCES app.zone_cueillette(organisation_id, groupement_id, id)"

"app.rendement_parcelle" {
  uuid id "Identifiant stable (UUID v7)."
  uuid organisation_id FK "Organisation propriétaire. Sert à l'isolation par RLS (EC-032)."
  uuid groupement_id FK "Groupement de la cible, repris d'elle par la base. Le téléphone filtre dessus."
  uuid parcelle_id FK "Parcelle cible. Exactement une cible entre parcelle et zone de cueillette."
  uuid zone_cueillette_id FK "Zone de cueillette cible."
  integer version "Numéro de version de la cible, à partir de 1, attribué par la base. La plus élevée est en vigueur."
  bigint valeur_g_ha "Rendement de référence en grammes par hectare (EC-030), strictement positif."
  text motif "Justification écrite de la valeur, obligatoire à chaque ligne (RG-023)."
  uuid cree_par FK "Utilisateur qui a fixé ou révisé le rendement."
  timestamp_with_time_zone cree_le "Date de création de la version."
}
"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.parcelle" {
  uuid id "Identifiant stable (UUID v7)."
  uuid organisation_id FK "Organisation propriétaire. Sert à l'isolation par RLS (EC-032)."
  uuid groupement_id FK "Groupement de la parcelle, identique à celui de son producteur (clé composée) : un producteur qui a des parcelles ne change pas de groupement."
  uuid producteur_id FK "Producteur propriétaire de la parcelle (de la même organisation)."
  uuid produit_id FK "Produit cultivé (de la même organisation)."
  text code "Code de la parcelle, unique par organisation."
  text type_surface "`cultures`, `serres` ou `prairies` : sert aux seuils d'éligibilité au groupe (RG-024)."
  bigint surface_declaree_m2 "Surface déclarée par le producteur, en m² (EC-030). Jamais la base d'une capacité : c'est la surface mesurée (AV1-01)."
  text region_facteur FK "Constante `region` : nom du facteur de la clé étrangère composée vers facteur_valeur."
  text region FK "Région (valeur du facteur `region`), facultative."
  text mode_culture_facteur FK "Constante `mode_culture` : nom du facteur de la clé étrangère composée vers facteur_valeur."
  text mode_culture FK "Mode de culture (`pluvial` ou `irrigue`), facultatif."
  text type_sol_facteur FK "Constante `type_sol` : nom du facteur de la clé étrangère composée vers facteur_valeur."
  text type_sol FK "Type de sol (valeur du facteur `type_sol`), facultatif."
  boolean actif "Faux quand la parcelle n'est plus utilisée. Une parcelle n'est jamais supprimée."
  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.zone_cueillette" {
  uuid id "Identifiant stable (UUID v7)."
  uuid organisation_id FK "Organisation propriétaire. Sert à l'isolation par RLS (EC-032)."
  uuid groupement_id FK "Groupement qui exploite la zone (de la même organisation)."
  uuid produit_id FK "Produit cueilli (de la même organisation)."
  text code "Code de la zone, unique par organisation."
  text nom "Nom de la zone."
  boolean actif "Faux quand la zone n'est plus utilisée. Une zone n'est jamais supprimée."
  timestamp_with_time_zone cree_le "Date de création de la ligne."
  timestamp_with_time_zone modifie_le "Date de dernière modification."
}

Generated by tbls