volontariapp-user-account-deletion
Suppression de compte en deux temps (PENDING_DELETION): requestDeletionWithUserDeleted, finalizeDeletion, fan-out de user.deleted vers les domaines et gather ws. A utiliser pour tout changement de domain-user touchant la suppression, le statut ou le cycle de vie d'un user.
- License 许可
- MIT
- 最近更新
- 2026-11-10
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- volontariapp-user-account-deletion
- tags
- [ "user-account-deletion" ]
- type
- Domain Reference
- paths
- [ "npm-packages/packages/domain-user/src/**" ]
- title
- User Account Deletion
- status
- stable
- sources
- [ { "id": "badge-points-migration", "title": "Migration des points de badges et de la deduplication de progression", "resource": "ms-user/src/migrations/domain/1793970000000-AddBadgePointsAndProgressDedup.ts" } ]
- verified
- [ { "at": "2026-10-17T12:32:08Z", "by": "claude-code/agent", "digest": "f72b7f94d3a033ce" }, { "at": "2026-10-23T14:44:32Z", "by": "claude-code/agent", "digest": "42ff7c20c027a49a" }, { "at": "2026-10-30T10:54:45Z", "by": "claude-code/agent", "digest": "b63f31dbf26972ff" }, { "at": "2026-11-04T20:26:39Z", "by": "claude-code/agent", "digest": "9ff504371c918857" }, { "at": "2026-11-08T12:02:24Z", "by": "claude-code/agent", "digest": "478b23700fbfdb45" } ]
- generated
- { "at": "2026-10-11T16:59:33Z", "by": "claude-code/agent" }
- mesh_keys
- [ "PENDING_DELETION", "requestDeletionWithUserDeleted", "finalizeDeletion", "USER_DELETED" ]
- description
- Suppression de compte en deux temps (PENDING_DELETION): requestDeletionWithUserDeleted, finalizeDeletion, fan-out de user.deleted vers les domaines et gather ws. A utiliser pour tout changement de domain-user touchant la suppression, le statut ou le cycle de vie d'un user.
02 资源文件 3
- 参考文档index.md669 B
- 参考文档log.md2.8 KB
- 参考文档references/lessons.md2.3 KB
03 SKILL.md 正文
User Account Deletion
Quand utiliser cette skill
Ce document spécifie les invariants de domaine et règles d'architecture pour la suppression de compte utilisateur en deux temps (PENDING_DELETION).
[!NOTE] Cette fiche est une référence d'invariants de domaine (
Domain Reference). Pour exécuter, implémenter ou modifier le pipeline technique asynchrone de bout en bout (émission outbox, stream fan-out, gather WebSocket et compensation), utilise le playbook opérationnel déterministevolontariapp-implement-async-event-flow.
Règles
UserService.requestDeletionappellePostgresUserRepository.requestDeletionWithUserDeleted: dans une seule transaction, le user passePENDING_DELETION(deletion_requested_atrenseigné) etuser.deletedest écrit dansevent_queue. Il n'y a aucunDELETEà ce stade.targetServicesdeuser.deleted:USER_DELETED(ws-service, créateur du gather),SOCIAL_USER,USER_DELETED_POST,USER_DELETED_EVENT,USER_DELETED_STORAGE,USER_DELETED_RANKING(ajouté par npm-packages@91040d72,postgres-user.repository.ts:116; le test d'intégrationuser-deletion.int.spec.tsliste les mêmes streams). Le pusher fait unXADDpar stream, donc un stream par consommateur.UserService.finalizeDeletionne supprime que les users encorePENDING_DELETION(idempotent) et n'est appelé qu'après le succès du gatheruser.deletedcôté ws-service.- Ne jamais supprimer un compte avec
IUserRepository.delete(hérité deBaseRepository,DELETEphysique sans événement). - Un user
PENDING_DELETIONdoit être refusé au login et au refresh (côtéms-user, viaUserEntity.status). - La migration réelle de
statusetdeletion_requested_atvit dansms-user;domain-user/src/test/migrationsne sert qu'aux tests d'intégration. - Les lignes de
impact_score_credits(ImpactScoreCreditModel, dédup du crédit de score par(event_id, user_id)) ont une FKON DELETE CASCADEsurusers:finalizeDeletionles supprime avec le user, sans purge dédiée. La migration de la table vit dansms-user. Il en va de même pourbadge_point_credits(points crédités par badge, FKON DELETE CASCADEsuruserset surbadges) etbadge_progress_dedup(déduplication de la progression, FKON DELETE CASCADEsurusers)[^badge-points-migration]. - Voir la skill
volontariapp-implement-async-event-flowpour le gather et les pièges des post-processors de purge.
Références
Scripts
- Aucun script pour l'instant. Tests:
yarn test(unitaires) etyarn test:integration(Postgresms_userrequis) dansnpm-packages/packages/domain-user.
[^badge-points-migration]: Migration des points de badges et de la deduplication de progression
04 同仓库更多 Skills
volontariapp-proto-contract-evolution
Modifier un contrat Protobuf de proto-registry (champ, message, enum, RPC) sans casser la compatibilité wire, puis suivre la cascade proto-registry, PR automatique dans npm-packages, publication, consommateurs. À utiliser avant toute édition d'un .proto.
volontariapp-meta-scripts
Utiliser et faire evoluer la CLI Node de meta (setup, doctor, migrate, certs, repos, bump) et le manifeste repos.json, source unique des repos et unites du workspace.
volontariapp-implement-async-event-flow
Guide pas-à-pas pour concevoir et implémenter un flux asynchrone complet (messaging -> outbox -> post-processors -> ws-service -> client).
research
Investigate a question against high-trust primary sources and capture the findings as a Markdown file in the repo. Use when the user wants a topic researched, docs or API facts gathered, or reading legwork delegated to a background agent.
prototype
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
grilling
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.