보유기간 정책
보유기간의 단일 기준은 백엔드 상수 파일 apps/backend/src/privacy/retention.constants.ts이며, 이용자에게 공개되는 값은 개인정보 처리방침 제4조와 항상 일치해야 합니다. 값을 바꾸려면 방침을 먼저 개정합니다.
보유기간 표
대상 | 기간 | 상수 | 근거 |
|---|---|---|---|
학생·교직원 계정·생성 정보 | 이용 자격 상실 후 1년 |
| 처리방침 §4 (학교 확정값) |
학부모 계정 | 연결 해제 후 6개월 |
| 처리방침 §4 |
파기 예약 유예 | 예약 후 7일 |
| 오승인 취소 여유 |
감사 기록(접속기록) | 2년 |
| 안전성 확보조치 기준 제8조 |
웹서버 접속 로그 | 3개월 |
| 통신비밀보호법 제15조의2 |
시트 동기화 변경 스냅샷 | 1년 후 스크럽 |
| 내부 최소화 |
알림 | 1년 |
| 내부 최소화 |
검색 기록 | 180일 |
| 내부 최소화 |
실패 로그 | 1년 |
| 내부 최소화 |
만료 토큰·코드·패스키 챌린지 | 만료 후 30일 |
| 내부 최소화 |
파기 절차 (자동)
파기는 하드 삭제가 아닌 제자리 익명화(스크럽) 방식입니다. 하드 삭제는 수십 개 관계를 연쇄 삭제하여 다른 이용자의 게시물·수업 자료까지 파괴하므로, 계정 행을 익명화(purged-<id>@deleted.invalid, '탈퇴한 사용자')하고 개인정보 위성 데이터(비밀번호·패스키·토큰·기기 토큰·알림·검색 기록·바코드·학부모 이메일 등)만 삭제합니다.
파기 대상 지정: 이메일(/contact)로 접수된 삭제 요청을 관리자가 확인한 뒤 파기를 예약 (→
scheduledPurgeAt설정). 모든 학생 연결이 해제된 학부모는 자동으로 6개월 후 파기가 예약됩니다.주간 크론
privacy-purge-users(월요일 02:00 KST):scheduledPurgeAt이 지난 계정을 스크럽합니다. 임시 이용 배제(ghost) 계정은 예약 표시가 없으면 절대 건드리지 않습니다.일간 크론
privacy-purge-logs(01:45 KST): 위 표의 TTL을 집행합니다.두 크론 모두
?dryRun=true를 지원하며, 실행 결과는 감사 기록에 남습니다.학부모 계정 즉시 삭제(본인 요청·관리자)는 기존 하드 삭제 경로를 사용합니다(연쇄 삭제 범위가 좁음).
분리 보관에 관하여
학사 기록의 원천 시스템은 NEIS이며, 법정 보존 의무가 있는 항목 중 이 서비스에만 존재하는 것은 없습니다. 따라서 별도 분리 보관 테이블은 두지 않으며, 학교가 법정 보존 항목을 지정하는 경우에만 추가합니다.