Skip to content

#565 [Feat] 이용 종료 후 30일 지난 클래스 원문·AI 대화·리포트 파기 - #566

Merged
si-zero merged 1 commit into
devfrom
feat/#565
Oct 22, 2026
Merged

si-zero merged 1 commit into
devfrom
feat/#565

Conversation

@si-zero

@si-zero si-zero commented Oct 22, 2026

Copy link
Copy Markdown
Member

#️⃣ 연관된 이슈

📝 작업 내용

✨ Feat

내용 파일
파기 대상 조회: 이용권 expires_at + 30일(읽기 유예)이 지났고 purged_at 이 비어 있는 클래스 (삭제된 클래스 포함) ClassroomRepository.java, ClassDataPurgeService.java
클래스별 파기(한 트랜잭션): 클래스 의견·댓글과 그 좋아요·신고 → AI 토론 메시지·세션 → 클래스 리포트 순으로 삭제 후 purged_at 기록. 이미 파기했거나 유예 중이면 건너뜀 ClassDataPurgeService.java, Classroom.java
스케줄러: 매일 04:00 KST, 50개씩 최대 20묶음. 실패한 클래스는 로그를 남기고 다음 실행에서 다시 시도 ClassDataPurgeScheduler.java
설정 picke.class-retention.purge-enabled(CLASS_PURGE_ENABLED, 기본 false), purge-cron(CLASS_PURGE_CRON) application.yml
classes.purged_at 컬럼 SQL + rollback, ERD 노트 V20261022_01__classes_purged_at.sql, docs/erd/class.puml

📌 공유 사항

  1. 데이터를 실제로 지우는 작업이라 기본값은 꺼져 있습니다. 운영에서 쓰려면 CLASS_PURGE_ENABLED=true 를 설정해야 합니다. 켜기 전에 처리방침의 보관 기간 문구(PRD §18)와 맞는지 확인 부탁드립니다.
  2. 지우는 것: 참여 원문(클래스 의견·댓글, 좋아요·신고 포함), AI 토론 대화, 클래스 리포트(통계 스냅샷·개인 피드백·인사이트).
    남기는 것: 원문이 없는 투표·진행 단계·멤버·클래스 행, ai_jobs(토큰·오류만 있고 원문 없음), 커스텀 주제 초안·버전(운영자 입력).
  3. 결과 API 는 이미 유예 이후 409 로 막혀 있습니다. 클래스 상세·의견 목록 같은 읽기 API 는 유예 이후에도 열려 있어서, 파기 뒤에는 빈 목록이 보입니다. 이 부분을 막을지는 별도로 정하면 됩니다.
  4. 운영 DB 에는 V20261022_01__classes_purged_at.sql 을 먼저 적용해야 합니다 (ddl-auto 로도 컬럼은 추가됨).
  5. 테스트: 유예 중 미대상 → 유예 경과 후 파기 → 재처리 없음을 확인하는 통합 테스트 1건 추가, 전체 576건 통과.

✅ 체크리스트

  • Assignees에 본인을 선택했나요?
  • 컨벤션에 맞는 Type을 선택했나요?
  • Development에 이슈를 연동했나요?
  • Merge 하려는 브랜치가 올바르게 설정되어 있나요?
  • 컨벤션을 지키고 있나요?
  • 로컬에서 실행했을 때 에러가 발생하지 않나요?

@si-zero si-zero added the ✨ Feat (기능 추가) 새로운 기능을 추가할 때 사용합니다. label Oct 22, 2026
@si-zero si-zero self-assigned this Oct 22, 2026
@si-zero si-zero linked an issue Oct 22, 2026 that may be closed by this pull request
3 tasks
@si-zero
si-zero merged commit c44e672 into dev Oct 22, 2026
1 check passed
@si-zero
si-zero deleted the feat/#565 branch October 22, 2026 04:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feat (기능 추가) 새로운 기능을 추가할 때 사용합니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ Feat: 이용 종료 후 30일 지난 클래스 원문·AI 대화·리포트 파기

1 participant