Initial commit: Platform Lien - Moteur de Confiance pour Compagnons Animaux (Loi P-38.1 QC)

This commit is contained in:
2026-10-07 18:11:30 -04:00
commit 99c9e64b37
7 changed files with 345 additions and 0 deletions

39
engine.py Normal file
View 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