Aller au contenu

Récap recertification KYC

Source unique : Neon bricks-prod, état actuel de customers.investorIdentityStatus. Pas Datadog, pas de flux webhook.

Contexte métier : kyc-recertif.md. SQL : queries.md.

Prérequis

MCP Outils Usage
Neon run_sql project jolly-rain-97989621, database bricks, branch main stock
Slack slack_read_channel, slack_send_message delta vs dernier récap + publication

run_sql tape le primary (pas de compute_id sur cet outil). Agrégat COUNT, plus la liste des échus non outdated (max 10). Jamais un dump de customers.

Constantes

Ressource Valeur
#feature-recertification-wallet-lw C0B3BTWBJ5A
Neon project jolly-rain-97989621, branch br-rough-tooth-a2jeitjr (main), database bricks

Firehose #lemonway-kyc-recertif-webhook-updates (C0BQMDSG9NH) : ne jamais y publier.

Deux axes (ils se recoupent)

requested + outdated ne s'additionnent pas. Deux questions :

  1. Peuvent-ils investir ? verified (oui) vs outdated (non, bloqué).
  2. Où en est le dossier ? requested / underAnalysis / declined.

Workflow

  1. SQL stock (queries.md).
  2. Si echus_pas_outdated > 0 : liste email + id + dueDate (max 10), même fichier.
  3. 20 derniers messages C0B3BTWBJ5A → ligne snapshot. Delta d'une clé uniquement contre la même clé (verified vs verified, bloques vs bloques). Clé absente ou null → pas de delta pour cette ligne.
  4. Publier.

Automation planifiée : slack_send_message sur C0B3BTWBJ5A, même si tout est à zéro.

Run interactif : coller le récap dans la réponse et attendre. Interdit d'appeler slack_send_message tant que l'utilisateur n'a pas écrit « poste » / « ok Slack ».

Format du message

Une personne = un compteur. Pas de couple n · n. Snapshot = dernière ligne.

*Recertification KYC — {JJ/MM/AAAA}*

*{total}* investisseurs en recertif — {verified} peuvent encore investir · {outdated} bloqués

*Peuvent-ils investir ?*
• verified : *{n}* ({delta}) — recertif ouverte, peut encore investir
• outdated : *{n}* ({delta}) — KYC périmé, compte bloqué

*Où en est le dossier ?*
• requested : *{n}* ({delta}) — docs à envoyer
• underAnalysis : *{n}* — chez Lemonway
• declined : *{n}* — refusé, à corriger

*Échéances*
{n} déjà dépassées · {n} d'ici 7 j · {n} d'ici 30 j (inclut les 7 j)

{alertes — échus non outdated : `• {email} `{id}` — due {JJ/MM}`}

{alertes}

`snapshot {"date":"AAAA-MM-JJ","ouvertes":0,"verified":0,"aSoumettre":0,"enAnalyse":0,"refusees":0,"bloques":0}`

ouvertes = total · verified = peuvent encore investir · aSoumettre = requested · bloques = outdated. Ne jamais dériver le delta verified depuis ouvertes.

Seuils d'alerte

:rotating_light: + une phrase d'impact.

Condition Alerte
Échéances dépassées > 0 Investisseurs en retard — vérifier s'ils sont outdated
échus non outdated > 0 Lister email + id + échéance — date passée, pas bloqués dans Bricks
outdated +20 % vs snapshot Accélération des blocages

Pièges

  • Pas d'historique en base : investorIdentityStatus est écrasé. Tendance = ligne snapshot.
  • dueDate = ISO du GET /accounts, pas le DueDate YYYY-MM-DD du webhook 53.
  • « d'ici 30 j » contient « d'ici 7 j ».

Déclenchement

Automation :

Exécute le skill .cursor/skills/recertif-kyc-recap/SKILL.md et publie le récap
dans #feature-recertification-wallet-lw (C0B3BTWBJ5A).
Publie même si tous les compteurs sont à zéro. N'ouvre ni PR ni commit.

À la demande : « récap recertif ». Coller le message ici, ne poster qu'après validation.