
이번 주는 FE 리펙토링과 인프라 정리에 집중한 주였다. Calendar 기능을 Bulletproof 구조로 리팩토링하고, 레거시 코드(Python 백엔드, 푸딩캠프 브랜딩)를 정리했다. EC2 배포 관련 이슈도 여러 개 해결했다.
이제 드디어 서비스 다운 서비스가 되어가고 있다 !
PR 목록: 5주차 마일스톤
GET /calendar/{slug} - 호스트 캘린더 정보GET /calendar/{slug}/bookings - 월별 예약 목록GET /calendar/{slug}/bookings/stream - NDJSON 스트림components/calendar/ → features/calendar/로 이동BookingResponseDTO는 timeSlotId(flat)만 반환하는데, FE는 nested timeSlot 객체가 필요BookingPublicResponseDTO를 별도 생성하여 기존 DTO에 영향 없이 대응/{slug}와 /v1이 같은 컨트롤러에 공존/v1)을 PathVariable보다 우선 매칭하므로 충돌 없음fetch + ReadableStream 파싱 방식에 맞춰 NDJSON 선택NoResourceFoundException 에러 발생 → 호다닥 만듦bootRun{jvmArgs = ['-Dfile.encoding=UTF-8']} 추가 (#152)components/, hooks/, libs/, types/ 등 여러 폴더에 분산features/calendar/ 하위로 통합 (34 files changed)features/calendar/
├── api/ # bookings, calendar, createBooking
├── components/ # Body, Navigator, Timeslots, BookingForm
├── hooks/ # useBookings, useCalendarNavigation 등
├── types/ # IBooking, ITimeSlot, ICalendar
├── utils/ # checkAvailableBookingDate, getCalendarDays
└── index.ts # Public API barrel export
~/types/base.d.ts)과 공용 함수(~/libs/utils.ts)는 그대로 유지*-deploy-prod.yml 2개만 유지docker system prune -af --volumes를 빌드 전에 실행하도록 추가redis:7-alpine + --appendonly yes + 볼륨으로 데이터 영속성 확보/home/ec2-user/cohi-chat이 하드코딩되어 있었음ubuntu/home/ec2-user/ 디렉토리가 존재하지 않아 Permission Denied/home/ec2-user/ → ~(홈 디렉토리)로 변경backend-python/ 디렉토리 전체 삭제.claude/commands/, .claude/skills/ 추가.gitignore 450줄 → 127줄로 정리| 실수 | 원인 | 해결 |
|---|---|---|
| Login 안됨 | 비번 까먹음 | - |
| BE endpoint 없음 | FE 먼저 만들고 BE 안 만듦 | 호다닥 만듦 |
| CLI 한글 깨짐 | Windows 기본 인코딩 문제 | JVM UTF-8 옵션 |
| EC2 Permission Denied | ec2-user vs ubuntu 혼동 | ~ 경로 사용 |
| Docker 빌드 멈춤 | 디스크 공간 부족 | prune 명령 추가 |
| pnpm install 실패 | lockfile과 package.json 불일치 | happy-dom 의존성 명시 |
| ESLint 에러 62개 | CI에 린트 검증 추가 후 발견 | 들여쓰기 통일, 미사용 변수 정리 |