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 :
- Peuvent-ils investir ?
verified(oui) vsoutdated(non, bloqué). - Où en est le dossier ?
requested/underAnalysis/declined.
Workflow¶
- SQL stock (queries.md).
- Si
echus_pas_outdated> 0 : liste email + id + dueDate (max 10), même fichier. - 20 derniers messages
C0B3BTWBJ5A→ lignesnapshot. Delta d'une clé uniquement contre la même clé (verifiedvsverified,bloquesvsbloques). Clé absente ounull→ pas de delta pour cette ligne. - 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 :
investorIdentityStatusest écrasé. Tendance = lignesnapshot. dueDate= ISO du GET/accounts, pas leDueDateYYYY-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.