client-core (0.1.0)

Published 2026-06-21 16:56:22 +00:00 by xavier

Installation

pip install --index-url  client-core

About this package

Brique réutilisable CRM clients finaux (CDC-CLIENT-CORE-v1) — embarquée par chaque app, données par app, GDPR first-class. Symétrique de fin-core.

client-core

Brique logicielle réutilisableCRM clients finaux : registre client générique, identité/ déduplication, moteur de consentement (GDPR), segmentation, historique relationnel, journal d'audit inviolable, et contrat de consolidation vers le Cockpit.

Spécifiée par CDC-CLIENT-CORE-v1 (Holding MAPFARM ; docs/). Symétrique de fin-core : fin-core gère l'argent, client-core gère la relation (qui est le client, son histoire, son consentement) — liées par l'ordre (OMS), jamais fusionnées. Chaque application embarque la brique et possède ses propres données (store par app) ; le Cockpit consolide une vue 360 par read-model HTTP et n'écrit jamais dans les stores des apps.

Ce dépôt = Livrable 0 du CDC : la brique seule (modèle §5, identité §6.1, consentement §6.2/§7, effacement §6/G4, audit G2, contrat de consolidation §3.3/§6.5). Le câblage consommateur (Harvest L1, Cockpit L2, reconnaissance 360 L3) est hors de ce dépôt.

Principes (non négociables — CDC §7/§8)

# Règle
R1 Tout objet client tagué entite_id + societe_id + marque_id (canon référentiel).
R2/R3 Chaque app propriétaire de ses clients ; aucun store partagé en écriture (séparabilité).
R5 Identité dédoublonnée, jamais de doublon fabriqué (freeze-au-write).
R6 Contrat de consolidation standardisé émis vers le Cockpit.
R7 / G1 GDPR fail-closed : doute consentement/effacement → ne pas envoyer / effacer.
R8 Pas de fusion client ↔ tiers (fin-core) ; pas de copie (références only).
G2 Auditable : tout accès/écriture/export tracé (chaîne de hash inviolable).
G4 Droit à l'effacement honoré + propagé (y compris read-model 360).

GDPR by design : consentement gouverné par canal × finalité, horodaté, avec preuve ; la garde ConsentEngine.can_contact est l'unique point d'autorisation de contact, fail-closed.

Installation (registre PyPI Gitea)

pip install client-core --extra-index-url https://git.mapfarm.cloud/api/packages/mapfarm/pypi/simple/

Usage (brique embarquée par une app)

from client_core import ConsentEngine, Canal, Finalite
from client_core.schema import apply_schema   # extra [db]

apply_schema(conn, "xavier__monapp__crm")     # DDL idempotent sur le schéma de l'app
engine = ConsentEngine()
if engine.can_contact(consents=consents, canal=Canal.EMAIL, finalite=Finalite.MARKETING, now=now):
    ...                                        # envoi marketing autorisé (sinon fail-closed)

Développement

make install      # pip install -e ".[test]"
make lint         # ruff check + format --check
make test         # pytest (purs + intégration DB si Docker/CLIENT_CORE_TEST_DSN)
make build        # sdist + wheel

Requirements

Requires Python: >=3.11
Details
PyPI
2026-06-21 16:56:22 +00:00
351
Holding MAPFARM
Proprietary
47 KiB
Assets (2)
Versions (1) View all
0.1.0 2026-06-21