Initial commit: Platform Lien - Moteur de Confiance pour Compagnons Animaux (Loi P-38.1 QC)
This commit is contained in:
39
engine.py
Normal file
39
engine.py
Normal file
@@ -0,0 +1,39 @@
|
||||
"""
|
||||
Module : lien.engine.certificate_engine.py
|
||||
Description : Moteur de génération de certificat conforme Loi P-38.1 QC
|
||||
"""
|
||||
from ..models.animal import AnimalSchema, TierLevel, AnimalStatus
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
def validate_and_upgrade(animal: AnimalSchema) -> bool:
|
||||
"""Vérifie les paliers requis pour l'animal avant la transaction légale"""
|
||||
|
||||
# Règle 1 : Tout animal doit avoir une microchippée selon la loi
|
||||
if not animal.microchip_id:
|
||||
raise ValueError("L'ID de puce électronique est requis (Loi P-38.1)")
|
||||
return True
|
||||
|
||||
|
||||
def generate_certificate(animal: AnimalSchema) -> dict:
|
||||
"""Génère un certificat transactionnel signé pour le transfert d'animaux"""
|
||||
|
||||
if not validate_and_upgrade(animal):
|
||||
raise ValueError("L'animal ne remplit pas les obligations légales Québec")
|
||||
|
||||
cert_template = {
|
||||
"issuer": "Platform Lien (Mantha TI / Sanctech Pro)",
|
||||
"subject_id": animal.id,
|
||||
"current_tier": animal.current_tier.value,
|
||||
"date_of_certification": datetime.now().isoformat(),
|
||||
"status": "CERTIFIED",
|
||||
"legal_compliance": {
|
||||
"microchip_verified": animal.microchip_id is not None,
|
||||
"vaccines_complete": True if animal.current_tier != TierLevel.TELE else False
|
||||
}
|
||||
}
|
||||
|
||||
# Création d'une empreinte de signature unique
|
||||
cert_template["signature"] = hash(str(cert_template) + str(datetime.now().isoformat()))
|
||||
|
||||
return cert_template
|
||||
Reference in New Issue
Block a user