AGENT SKILL

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
所属仓库
Volontariapp/meta
最近更新
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

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éterministe volontariapp-implement-async-event-flow.

Règles

  • UserService.requestDeletion appelle PostgresUserRepository.requestDeletionWithUserDeleted : dans une seule transaction, le user passe PENDING_DELETION (deletion_requested_at renseigné) et user.deleted est écrit dans event_queue. Il n'y a aucun DELETE à ce stade.
  • targetServices de user.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égration user-deletion.int.spec.ts liste les mêmes streams). Le pusher fait un XADD par stream, donc un stream par consommateur.
  • UserService.finalizeDeletion ne supprime que les users encore PENDING_DELETION (idempotent) et n'est appelé qu'après le succès du gather user.deleted côté ws-service.
  • Ne jamais supprimer un compte avec IUserRepository.delete (hérité de BaseRepository, DELETE physique sans événement).
  • Un user PENDING_DELETION doit être refusé au login et au refresh (côté ms-user, via UserEntity.status).
  • La migration réelle de status et deletion_requested_at vit dans ms-user; domain-user/src/test/migrations ne 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 FK ON DELETE CASCADE sur users : finalizeDeletion les supprime avec le user, sans purge dédiée. La migration de la table vit dans ms-user. Il en va de même pour badge_point_credits (points crédités par badge, FK ON DELETE CASCADE sur users et sur badges) et badge_progress_dedup (déduplication de la progression, FK ON DELETE CASCADE sur users)[^badge-points-migration].
  • Voir la skill volontariapp-implement-async-event-flow pour le gather et les pièges des post-processors de purge.

Références

Scripts

  • Aucun script pour l'instant. Tests: yarn test (unitaires) et yarn test:integration (Postgres ms_user requis) dans npm-packages/packages/domain-user.

[^badge-points-migration]: Migration des points de badges et de la deduplication de progression

04 同仓库更多 Skills