개요
- 숙박 예약 서비스의 가장 첫 번째 기능 개발로 회원 가입 기능 중 약관 관리 기능을 분석한다
목표
- 최대한 기능을 단계별로 작게 쪼개어, 적절한 작업 범위를 설정한다
회원 가입 기능 흐름
- 회원 가입시 아래와 같은 비니스 흐름이 존재한다
1. 약관 동의
2. 휴대폰 인증
3. 이메일, 비밀번호 작성
- 이미 가입을 해놔서 회원가입 화질이 좋지 못하다..
→ 위와 같이 회원 가입 절차는 매우 간단하게 보인다
하지만 비즈니적으로 중요한 사항들을 제대로 파악하지 않는다면, 매우 불안정한 서비스가 되어버린다
따라서 먼저 약관에 대해 작은 기능 단위로 쪼개어 하나씩 분석해보자
약관 동의
▶ 회원 가입 시 가장 첫 단계로 약관 동의가 필요하다
● 약관 관리 기능의 필수 요구 사항은 다음과 같다
- 약관 관리는 기본적으로 관리자가 담당한다
- 각 약관들은 대표 약관 제목을 나타내야한다
- 각 약관들은 [필수 동의/선택 동의]라는 동의 타입을 나타내야한다
- 각 약관마다 시행일을 나타내야한다
- 같은 시행일에 여러번 업데이트 될 수도 있으니 버전 관리로 확대하는 것이 좋겠다
- 각 약관마다 조문 항목들의 조문 번호 및 제목, 조문 내용등을 나타내야한다
- 약관의 정렬 순서를 고려해서 나타내야한다
- 현재 UI처럼 필수 → 선택 순으로 정렬되거나, 약관 그룹 내에서 순서를 정의해야 할 수도 있다
- 약관 정보는 특정 날짜에 반영되어야 하거나, 또는 반영되지 말아야한다
- 이에 따라 노출일(또는 시행일)과 미노출일이 설정되어야 한다
- 약관의 상태가 관리되어야한다 (ACTIVE, INACTIVE, DEPRECATED)
- 등록해뒀던 사용되지 않아야하는 상황도 올 것이라 판단함
◆ 이제 약관 정보를 시스템에서 관리할 데이터로 정리해본다
📦 약관 정보 (Terms)
필드명 | 설명 |
id | 고유 ID |
code | 고유 코드값 (ex. TERMS_USE) |
title | 약관 제목 |
type | 필수/선택 |
version | 버전 명 (v1.0 등) |
status | 사용 중, 미사용 상태 (ACTIVE, INACITVE, DEPRECATED) |
effectiveDate | 시행일 |
exposedFrom | 노출 날짜 |
exposedTo | 미노출 날짜 |
sortOrder | 노출 순서 |
clauseList | 조문 리스트 (연결된 정보) |
- 시스템 내부에서 약관 정보를 효율적으로 관리하기 위해 약관 정보에 고유 코드 값을 부여했다
📄 조문 정보 (Clause)
필드명 | 설명 |
clauseNo | 조문 번호 (ex. 제 1조) |
clauseTitle | 조문 제목 |
clauseContent | 조문 본문 |
추가 고려 사항
- 약관 동의 과정에서 회원이 약관에 동의한 시점과 약관 버전 정보를 관리해야한다
- 어떤 버전의 어떤 약관에 언제 동의했는지 기록이 남아야 법적 분쟁을 피할 수 있다
✅ 약관 동의 이력 (Agreement)
필드명 | 설명 |
memberId | 회원 ID |
termsCode | 약관 코드 |
version | 동의한 약관 버전 |
agreedAt | 동의 시각 |
- 위 도메인 설계는 회원 가입 기능 v2에서 정리한다
관련 작업 반영
https://github.com/f-lab-edu/hotel-reservation-platform/pull/7
약관 생성 기본 API 구조 세팅 by Pablo730 · Pull Request #7 · f-lab-edu/hotel-reservation-platform
#️⃣연관된 이슈 회원 가입 기능 Flow 정리 #3 기본 레이어 및 패키지 구조 설계 #4 약관 관련 기본 요구 사항 분석 #5 약관 생성 API 기본 구조 세팅 #6 📝작업 내용 약관 생성 기본 API Spec 설계 ad
github.com
https://github.com/f-lab-edu/hotel-reservation-platform/pull/9
약관 & 조항 도메인 모델 설계 by Pablo730 · Pull Request #9 · f-lab-edu/hotel-reservation-platform
#️⃣연관된 이슈 약관 & 조항 도메인 모델 설계 #8 약관 생성 기본 API 구조 세팅 #7 📝작업 내용 common 모듈 JPA 세팅 약관 도메인 엔티티 설계 조항 도메인 엔티티 설계 모듈 순환 참조를 방지하
github.com
'개발 일기' 카테고리의 다른 글
[고찰하기] 필요한 기능만 의존하게 하자 (0) | 2025.04.01 |
---|---|
[고찰하기] 엔티티가 아니라 "도메인"을 설계하기 (0) | 2025.03.31 |
[고찰하기] 레이어 및 패키지 구조 설계 (0) | 2025.03.23 |
[사이드 프로젝트] Spring Boot 멀티 모듈 프로젝트 구성 (0) | 2025.03.19 |
[이해하기] Lock 성능 테스트 (0) | 2025.03.18 |