docs(event): 누락 필드 보존 요구사항과 검증 결과를 기록한다

This commit is contained in:
2026-11-06 13:55:16 +09:00
parent 882ac30046
commit 8a94c1f20e
3 changed files with 144 additions and 0 deletions
@@ -0,0 +1,27 @@
# 이벤트 수정 누락 필드 보존 PRD
## 문서 정보
- 작성일: 2026-11-06
- 상태: 구현 및 기능 범위 검증 완료
- 결정권자: 사용자. 두 API 모두 파라미터 미전송 시 기존 값을 유지하도록 명시 승인.
- 구현 계획: [plan-task.md](plan-task.md)
## 문제와 목표
`PUT /event`, `PUT /admin/event/banner`에서 `link`, `isAdult`를 생략하면 기존 값이 null로 덮어써진다. 부분 수정 시 생략된 값을 보존하고, 명시적으로 전달한 값은 기존 방식으로 반영한다.
## 요구사항과 수용 기준
| ID | 상태 | 요구사항 | 수용 기준 |
|---|---|---|---|
| EVENT-001 | 확정 | 두 API의 link 생략은 변경하지 않는다. | 제목만 수정한 뒤 DB 재조회에서 기존 링크가 유지된다. |
| EVENT-002 | 확정 | 두 API의 isAdult 생략은 변경하지 않는다. | 기존 true, false, null 각각이 유지된다. |
| EVENT-003 | 확정 | 명시한 값의 기존 동작을 유지한다. | 새 링크 및 isAdult=true/false가 저장된다. |
| EVENT-004 | 확정 | 빈 링크의 기존 API별 동작을 유지한다. | /event는 빈 문자열·공백을 그대로 저장하고 관리자 API는 null로 저장한다. |
| EVENT-005 | 확정 | 다른 생략 필드와 API 계약을 유지한다. | 이미지·isPopup·기간·lang·isActive는 제목만 수정해도 유지되고 응답 성공 형식과 ADMIN 권한은 변하지 않는다. |
## 범위 밖
- 새 삭제 파라미터, JSON PATCH, DTO·스키마 변경, 서비스 통합/리팩터링.
- 기존 데이터 복원, 관리자 프런트엔드 변경, 운영 DB 접근, 날짜 처리 변경.
- isAdult를 null로 초기화하는 새 기능. 생략은 이제 보존이며 true/false 전송은 기존대로 지원한다.
## 검증 경계
기존 SpringBootTest/MockMvc와 H2 재조회로 요청 바인딩부터 저장까지 검증한다. S3는 기존 mock을 유지한다. 실제 관리자 UI 및 운영 MySQL 검증과 전체 테스트는 별도이며, 전체 테스트 실행 명령은 `./gradlew test`이다.