1. 요구사항 분석
✅ Lv 1. 일정 CRUD
- 일정 생성(Create), 조회(Read), 수정(Update), 삭제(Delete) 기능 구현
- 필드:
- 작성 유저명, 할일 제목, 할일 내용, 작성일, 수정일
- JPA Auditing을 활용해 작성일 및 수정일 자동 관리
✅ Lv 2. 유저 CRUD
- 유저 생성, 조회, 수정, 삭제 기능 구현
- 필드:
- 유저명, 이메일, 작성일, 수정일 (JPA Auditing 적용)
- 일정과 유저 연관관계 설정
- 작성 유저명 대신 유저 고유 식별자로 매핑
✅ Lv 3. 회원가입
- 유저 테이블에 비밀번호 필드 추가
- 비밀번호는 평문 저장(암호화는 Lv 6에서 수행)
✅ Lv 4. 로그인(인증)
- Cookie/Session 기반 로그인 구현
- 필터 기반 인증 처리
- @Configuration을 활용하여 필터 등록
- 이메일과 비밀번호를 검증하여 로그인 처리 (일치하지 않을 경우 401 반환)
- 회원가입, 로그인 요청은 인증에서 제외
✅ Lv 5. 다양한 예외처리
- @Valid 및 @Pattern을 활용한 유효성 검사
- 예제:
- 할일 제목은 10글자 이내
- 유저명은 4글자 이내
- 이메일 정규식 적용
✅ Lv 6. 비밀번호 암호화
- PasswordEncoder를 직접 만들어 비밀번호 암호화 저장
✅ Lv 7. 댓글 CRUD
- 일정에 댓글 추가 가능
- 댓글 생성, 조회, 수정, 삭제 기능 구현
- 연관관계 설정 (유저 ↔ 댓글, 일정 ↔ 댓글)
- 필드:
- 댓글 내용, 작성일, 수정일, 유저 식별자, 일정 식별자 (JPA Auditing 적용)
✅ Lv 8. 일정 페이징 조회
- Spring Data JPA의 Pageable과 Page 인터페이스 활용
- PageRequest로 페이징 요청 처리 (기본 페이지 크기: 10)
- 일정 수정일 기준 내림차순 정렬
- 조회 필드:
- 할일 제목, 할일 내용, 댓글 개수, 일정 작성일, 수정일, 일정 작성 유저명
2. 인터페이스 및 클래스 정리
📌 엔티티(Entity)
- User: 유저 정보 관리
- Schedule: 일정 정보 관리
- Comment: 일정의 댓글 정보 관리
📌 DTO (Data Transfer Object)
- UserDTO: 유저 관련 요청/응답 데이터
- ScheduleDTO: 일정 관련 요청/응답 데이터
- CommentDTO: 댓글 관련 요청/응답 데이터
- LoginRequestDTO: 로그인 요청 데이터
📌 서비스(Service)
- UserService: 유저 관련 비즈니스 로직 처리
- ScheduleService: 일정 관련 비즈니스 로직 처리
- CommentService: 댓글 관련 비즈니스 로직 처리
- AuthService: 로그인/인증 관련 로직 처리
📌 컨트롤러(Controller)
- UserController: 유저 관련 엔드포인트 제공
- ScheduleController: 일정 관련 엔드포인트 제공
- CommentController: 댓글 관련 엔드포인트 제공
- AuthController: 로그인 관련 엔드포인트 제공
📌 레포지토리(Repository)
- UserRepository
- ScheduleRepository
- CommentRepository
📌 기타
- PasswordEncoderUtil: 비밀번호 암호화 기능 제공
- CustomFilter: 로그인 필터 적용
3. 엔드포인트 정리(api=localhost8080을 생략예정)
🔹 유저 관련 (UserController)
HTTP Method URL 설명
POST | /api/users | 유저 생성 |
GET | /api/users/{id} | 유저 조회 |
PUT | /api/users/{id} | 유저 수정 |
DELETE | /api/users/{id} | 유저 삭제 |
🔹 일정 관련 (ScheduleController)
HTTP Method URL 설명
POST | /api/schedules | 일정 생성 |
GET | /api/schedules/{id} | 일정 조회 |
GET | /api/schedules | 일정 목록 조회 (페이징) |
PUT | /api/schedules/{id} | 일정 수정 |
DELETE | /api/schedules/{id} | 일정 삭제 |
🔹 로그인 관련 (AuthController)
HTTP Method URL 설명
POST | /api/auth/signup | 회원가입 |
POST | /api/auth/login | 로그인 |
POST | /api/auth/logout | 로그아웃 |
🔹 댓글 관련 (CommentController)
HTTP Method URL 설명
POST | /api/comments | 댓글 추가 |
GET | /api/comments/{id} | 댓글 조회 |
PUT | /api/comments/{id} | 댓글 수정 |
DELETE | /api/comments/{id} | 댓글 삭제 |
4. 목적 정리
기능 목적
일정 CRUD | 일정의 생성, 조회, 수정, 삭제 기능을 제공하여 사용자가 일정을 관리할 수 있도록 함 |
유저 CRUD | 유저 정보를 생성, 조회, 수정, 삭제할 수 있도록 관리 |
회원가입 | 새로운 사용자가 서비스를 이용할 수 있도록 회원가입 기능 제공 |
로그인 | 사용자가 인증을 통해 시스템을 이용할 수 있도록 지원 |
인증 필터 | 로그인한 사용자만 특정 기능을 사용할 수 있도록 제한 |
비밀번호 암호화 | 보안 강화를 위해 비밀번호를 안전하게 저장 |
댓글 CRUD | 일정에 대한 피드백이나 의견을 댓글로 남길 수 있도록 제공 |
일정 페이징 조회 | 일정이 많아질 경우 효율적인 데이터 조회를 위해 페이징 처리 |
언제든지 변경가능 합니다 ㅎㅎ