📝 작업 개요
기존 문서 삭제 정책을 hard delete + 별도 휴지통 기능으로 분리하고, 휴지통 이동/복구/조회/자동 영구 삭제까지 포함한 문서 휴지통 기능을 구현한다.
🎯 배경 / 문제 정의
기존 문서 삭제는 soft delete / restore 중심으로 동작했지만, 기본 삭제와 휴지통 기능의 역할이 분리되어 있지 않아 API 의미가 모호했다.
사용자가 문서를 완전히 삭제하는 경우와, 잠시 보관 후 복구 가능한 휴지통으로 보내는 경우를 명확히 구분할 필요가 있다.
휴지통에 들어간 문서는 일정 시간 안에는 복구 가능해야 하고, 시간이 지나면 자동으로 정리되어야 한다.
문서는 하위 문서와 블록 트리를 함께 가지므로, 휴지통 이동 / 복구 / 자동 영구 삭제 범위가 일관되게 정의되지 않으면 데이터 정합성이 깨질 수 있다.
휴지통 목록에서는 제목만으로 문서를 구분하려고 하므로, 같은 워크스페이스 안에서 문서 제목 중복 정책도 함께 정리할 필요가 있다.
📌 요구 사항 (Acceptance Criteria)
기존 DELETE /v1/documents/{documentId} 는 문서, 하위 문서, 각 문서 소속 블록을 즉시 물리 삭제하도록 동작한다.
문서를 휴지통으로 이동하는 PATCH /v1/documents/{documentId}/trash API를 제공한다.
휴지통 이동 시 대상 문서에 deletedAt 이 기록된다.
휴지통 이동 시 하위 문서와 각 문서 소속 블록도 함께 soft delete 된다.
기존 POST /v1/documents/{documentId}/restore 는 휴지통 복구 API로 동작한다.
휴지통 문서만 복구 가능하다.
현재 테스트 기준 deletedAt + 5분 이전 문서만 복구 가능하다.
부모 문서가 삭제 상태이면 자식 문서 단독 복구는 실패한다.
휴지통 문서는 현재 테스트 기준 deletedAt + 5분 이 지나면 자동 영구 삭제된다.
자동 영구 삭제 시 대상 문서, 하위 문서, 각 문서 소속 블록이 함께 물리 삭제된다.
특정 워크스페이스 기준 휴지통 문서 목록 조회 API를 제공한다.
휴지통 목록 응답에는 최소한 documentId, title, parentId, deletedAt, purgeAt 이 포함된다.
휴지통 목록은 제목만 보고 어떤 문서인지 구분할 수 있도록, 같은 워크스페이스 안에서는 활성 문서와 휴지통 문서를 포함해 문서 제목 중복을 허용하지 않는다.
문서 제목 중복 금지는 create, update, restore 에 모두 적용된다.
휴지통 문서는 일반 문서 목록/단건 조회/내용 조회의 기본 결과에서 제외된다.
관련 요구사항 문서, discussion, roadmap, prompt 로그를 함께 갱신한다.
📚 상세 설명 (선택)
기본 삭제와 휴지통을 분리한다.
DELETE /v1/documents/{documentId}: hard delete
PATCH /v1/documents/{documentId}/trash: 휴지통 이동
POST /v1/documents/{documentId}/restore: 휴지통 복구
자동 영구 삭제 시간은 현재 테스트 기준 5분이며, 추후 정책에 따라 변경 가능하다는 점을 문서에 남긴다.
휴지통 조회 API는 워크스페이스 단위 컬렉션 조회로 제공한다.
🚧 범위 - 포함(In Scope)
문서 기본 삭제를 hard delete 로 전환
문서 휴지통 이동 API 추가
문서 휴지통 복구 API 보강
휴지통 자동 영구 삭제 스케줄러 추가
휴지통 문서 목록 조회 API 추가
서비스 / 컨트롤러 / 통합 테스트 보강
docs/REQUIREMENTS.md, discussion, roadmap, prompt 로그 갱신
✅ 테스트 / 검증 항목
📝 작업 개요
기존 문서 삭제 정책을
hard delete + 별도 휴지통 기능으로 분리하고, 휴지통 이동/복구/조회/자동 영구 삭제까지 포함한 문서 휴지통 기능을 구현한다.🎯 배경 / 문제 정의
📌 요구 사항 (Acceptance Criteria)
DELETE /v1/documents/{documentId}는 문서, 하위 문서, 각 문서 소속 블록을 즉시 물리 삭제하도록 동작한다.PATCH /v1/documents/{documentId}/trashAPI를 제공한다.deletedAt이 기록된다.POST /v1/documents/{documentId}/restore는 휴지통 복구 API로 동작한다.deletedAt + 5분이전 문서만 복구 가능하다.deletedAt + 5분이 지나면 자동 영구 삭제된다.documentId,title,parentId,deletedAt,purgeAt이 포함된다.create,update,restore에 모두 적용된다.📚 상세 설명 (선택)
DELETE /v1/documents/{documentId}: hard deletePATCH /v1/documents/{documentId}/trash: 휴지통 이동POST /v1/documents/{documentId}/restore: 휴지통 복구🚧 범위 - 포함(In Scope)
docs/REQUIREMENTS.md, discussion, roadmap, prompt 로그 갱신✅ 테스트 / 검증 항목