Coding
PromptBeginner5 minmarkdown
Nano Banana Pro
Agent skill for nano-banana-pro
6
> **CLAUDE.md 최신화 정책**: 새로운 정책, 구조 변경, 컨벤션 추가, 비즈니스 규칙 변경 등이 발생하면 반드시 이 문서를 업데이트할 것. 코드와 문서의 일관성을 유지하는 것이 중요함.
Sign in to like and favorite skills
CLAUDE.md 최신화 정책: 새로운 정책, 구조 변경, 컨벤션 추가, 비즈니스 규칙 변경 등이 발생하면 반드시 이 문서를 업데이트할 것. 코드와 문서의 일관성을 유지하는 것이 중요함.
세무사 사무소 예약 관리 시스템. 관리자/고객 두 인터페이스 제공. 모노레포 구조로 Frontend와 Backend가 분리되어 있음.
sures/ ├── frontend/ # React (FSD 패턴) ├── backend/ # Spring Boot (Clean Layered) ├── docs/ # 상세 아키텍처 문서 │ ├── backend/ # Backend 아키텍처 가이드 │ └── frontend/ # Frontend 아키텍처 가이드 ├── package.json # 루트 워크스페이스 설정 └── CLAUDE.md # 프로젝트 문서
| 문서 | 경로 | 내용 |
|---|---|---|
| Backend 아키텍처 | | Clean Layered, DTO 변환, Mapper 규칙 |
| Frontend 아키텍처 | | FSD 패턴, 레이어 규칙, 컴포넌트 패턴 |
Claude Code 참고: 각 영역 작업 시 해당 문서를 먼저 읽고 규칙을 준수할 것
| 브랜치 | 용도 | 수정 범위 |
|---|---|---|
| 통합 브랜치 | 전체 (머지용) |
| 프론트엔드 개발 | 디렉토리만 |
| 백엔드 개발 | 디렉토리만 |
frontend 브랜치: frontend/ 디렉토리만 수정, backend/ 수정 금지backend 브랜치: backend/ 디렉토리만 수정, frontend/ 수정 금지main 브랜치: 각 브랜치에서 PR/머지로 통합# 프론트엔드 작업 git checkout frontend # frontend/ 디렉토리 작업 후 커밋 git push origin frontend # 백엔드 작업 git checkout backend # backend/ 디렉토리 작업 후 커밋 git push origin backend # 통합 (main으로 머지) git checkout main git merge frontend git merge backend
app → pages → widgets → features → entities → shared
@/shared/ui, @/features/auth 등상세 문서:
docs/backend/ARCHITECTURE.md
presentation → application → domain ← infrastructure
| Layer | 입력 DTO | 출력 DTO |
|---|---|---|
| Presentation | Request | Response |
| Application | Command | Result |
| Domain | Entity | Entity |
domain/ ├── admin/ # Admin, AdminRole, AdminRepository, AdminDomainService ├── reservation/ # Reservation, ReservationStatus, ConsultationType, ... └── common/ # BaseEntity, PageRequest, PageResult
Request → Command → (Entity/파라미터) → Result → Response
toCommand(), Result의 from(Entity), Response의 from(Result)// Controller (Presentation) CreateReservationCommand command = request.toCommand(); ReservationResult result = service.create(command); return ReservationResponse.from(result); // Service (Application) Reservation entity = command.toEntity(adminId); Reservation saved = repository.save(entity); return ReservationResult.from(saved);
| 기능 | Method | URL | 권한 |
|---|---|---|---|
| 로그인 | POST | /api/admin/auth/login | 없음 |
| 회원가입 | POST | /api/admin/auth/register | 없음 |
| 예약 목록 | GET | /api/admin/reservations | ADMIN |
| 예약 등록 | POST | /api/admin/reservations | ADMIN |
| 예약 상세 | GET | /api/admin/reservations/{id} | ADMIN |
| 예약 수정 | PUT | /api/admin/reservations/{id} | ADMIN |
| 예약 삭제 | DELETE | /api/admin/reservations/{id} | ADMIN |
| 상태 변경 | PATCH | /api/admin/reservations/{id}/status | ADMIN |
| 기능 | Method | URL |
|---|---|---|
| 예약 신청 | POST | /api/customer/reservations |
| 예약 인증 | POST | /api/customer/reservations/verify |
| 예약 상세 | GET | /api/customer/reservations/{id} |
| 예약 수정 | PUT | /api/customer/reservations/{id} |
| 예약 취소 | DELETE | /api/customer/reservations/{id} |
// 성공 { "data": { ... }, "message": "성공" } // 에러 { "error": { "code": "VALIDATION_ERROR", "message": "입력값이 올바르지 않습니다", "details": [...] } }
| 용도 | 컬러 | HEX |
|---|---|---|
| 시그니처 (Primary) | 남색 | |
| 포인트 (Accent) | 하늘색 | |
| 배경 | 흰색 | |
| 텍스트 | 다크그레이 | |
| 보조 배경 | 라이트그레이 | |
취소 마감
| 예약 시간대 | 취소 마감 |
|---|---|
| 오전 (09:00~11:00) | 전날 자정(24:00)까지 |
| 오후 (13:00~17:00) | 당일 오전(12:00)까지 |
내용 수정
| 상태 | 코드 | 설명 |
|---|---|---|
| 대기 | | 예약 신청 후 확정 대기 |
| 확정 | | 관리자가 예약 확정 |
| 완료 | | 상담 완료 |
| 취소 | | 예약 취소됨 |
| 노쇼 | | 예약 후 미방문 |
| Role | 코드 | 설명 |
|---|---|---|
| 최고관리자 | | 모든 권한 |
| 일반관리자 | | 예약 관리 등 기본 업무 |
@Entity, @Getter, @NoArgsConstructor(access = PROTECTED)@Service, @Transactional@RestController, @RequestMappingadminId)// Good - Long 타입 FK 필드 @Column(name = "admin_id") private Long adminId; // Bad - JPA 관계 매핑 @ManyToOne @JoinColumn(name = "admin_id") private Admin admin;
[Frontend] React Hook Form / Zod → [Backend] @Valid + BindingResult → [Response] JSON 에러
| 필드 | 규칙 |
|---|---|
| 아이디 | 필수, 4~20자, 영문소문자+숫자 |
| 비밀번호 | 필수, 8자 이상, 영문+숫자+특수문자 |
| 이름 | 필수, 2~20자 |
| 이메일 | 필수, 이메일 형식 |
| 필드 | 규칙 |
|---|---|
| 고객명 | 필수, 2~50자 |
| 연락처 | 필수, 010-0000-0000 형식 |
| 상담일 | 필수 |
| 상담시간 | 필수 |
| 상담유형 | 필수 |
| 메모 | 선택, 최대 500자 |
# 전체 실행 (Frontend + Backend) npm run dev # 개별 실행 npm run dev:frontend # localhost:3000 npm run dev:backend # localhost:8080