Files
lien/engine.py

39 lines
1.4 KiB
Python

"""
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