오프테이블 Wiki

조사 결과 · 실행 계획

탈퇴 삭제·보존 데이터 맵

현재 스키마에서 Auth 삭제가 공동 채팅을 지우는 경로와, hard delete 전에 바꿀 FK·보존 대상을 표로 고정한다.

상태
초안
신뢰도
높음
근거
3개
업데이트

핵심 결론

지금 auth.usersprofiles를 지우면 그 회원이 만든 방과 다른 회원의 메시지까지 cascade로 사라진다. hard delete는 FK를 고친 뒤에만 연다.

지금 지우면 일어나는 일#

profiles.idauth.userson delete cascade다. 그 아래도 cascade다.

대상 현재 FK Auth/프로필 삭제 시
public.profiles users cascade 행 삭제
public.chat_rooms.created_by profiles cascade 방 전체 삭제
public.chat_room_members room·user cascade 멤버십 삭제. 방 삭제면 전원 삭제
public.messages.sender_id profiles cascade 그 방 메시지 삭제. 방 cascade면 타인 메시지도 삭제
private.account_lifecycle users cascade 행 삭제
private.user_consents users cascade 현재 동의 삭제
private.user_consent_events users cascade 이력 삭제
private.admin_grants users cascade 관리자 권한 삭제
private.account_suspensions.user_id users cascade 정지 기록 삭제
private.account_suspensions.suspended_by users, ON DELETE 없음 정지시킨 관리자 삭제 시 실패 가능

백업·로그·Resend·Supabase 외부 사본은 스키마 밖이라 이 표에 없다. runbook에서 따로 적는다.

열기 전에 바꿀 것#

이미 정한 운영안(회원탈퇴 생명주기와 관계 데이터 처리 계획)과 맞춘다.

  1. chat_rooms.created_by를 nullable 또는 tombstone 프로필로. 호스트 탈퇴 시 예정 식사는 취소·공지하고 방을 지우지 않는다.
  2. messages.sender_id를 nullable. 본문은 남기고 표시는 탈퇴한 회원. 식사 종료 후 30일 표시, 90일 삭제.
  3. 멤버십은 탈퇴자만 제거. 다른 참가자 cascade 금지.
  4. 신고 메시지는 복사해 사건 종료 후 1년. 일반 채팅 90일과 분리.
  5. suspended_byon delete set null 또는 시스템 계정.
  6. 동의 이력 보존 기간을 정한 뒤에만 consent event cascade를 유지하거나 익명화한다.
  7. 삭제 job 상태(queued/running)가 생기기 전에는 취소를 withdrawal_requested에서만 허용한다.

아직 열지 않는 것#

  • 마이페이지·관리자의 즉시 Auth 삭제 버튼
  • 광고 메일 발송
  • 전자상거래 보존기간을 계정 전체에 적용

관련: 계정 데이터 기준 · 감사 계획 · 탈퇴 생명주기

제목, 요약, 태그, 본문을 검색합니다.