- User Domain: 사용자 계정, 소셜 로그인, 프로필 관리
- Emotion Domain: 감정 분석, 일기 기능, 감정 지수 산출
- Auth: 인증/인가 시스템
- Pet Domain: 펫 아바타 생성, 커스터마이징, 상태 관리
- Room Domain: 방 꾸미기, 아이템 배치, 테마 설정
- Item Domain: 포인트 시스템, 아이템 상점, 경제 시스템
- Social Domain: 친구 관계, 방문, 댓글, 방명록
- Community Domain: 이벤트, 그룹, 콘테스트
- Privacy Domain: 권한 관리, 차단, 신고 시스템
src/main/java/com/duriahnrian/
├── domain/ # 도메인 모델 (공통)
│ ├── user/ # 사용자 관련 (진호)
│ ├── pet/ # 펫 관련 (형준)
│ ├── room/ # 방 관련 (형준)
│ ├── social/ # 소셜 기능 (정현)
│ ├── item/ # 아이템/포인트 (형준)
│ └── emotion/ # 감정 분석 (진호)
├── application/ # 애플리케이션 서비스
├── infrastructure/ # 인프라스트럭처
└── presentation/ # 컨트롤러
// Entity
@Entity
public class User { }
public class Pet { }
public class Room { }
// Repository
public interface UserRepository extends JpaRepository<User, Long> { }
// Service
@Service
public class UserService { }
// Controller
@RestController
public class UserController { }
// DTO
public class UserCreateRequest { }
public class UserResponse { }// CRUD 기본 패턴
public User createUser(UserCreateRequest request) { }
public User getUserById(Long id) { }
public User updateUser(Long id, UserUpdateRequest request) { }
public void deleteUser(Long id) { }
// 비즈니스 로직
public void addFriend(Long userId, Long friendId) { }
public EmotionAnalysis analyzeEmotion(String diaryContent) { }
public Pet customizePet(Long petId, PetCustomizeRequest request) { }// 기본 CRUD
GET /api/users/{id}
POST /api/users
PUT /api/users/{id}
DELETE /api/users/{id}
// 도메인별 특화 API
POST /api/users/{id}/friends/{friendId} # 친구 추가
POST /api/pets/{id}/customize # 펫 꾸미기
POST /api/rooms/{id}/items # 방에 아이템 배치
POST /api/emotions/analyze # 감정 분석- 단수형 사용:
user,pet,room,friendship - 스네이크 케이스:
emotion_analysis,room_item
- 스네이크 케이스:
user_id,created_at,pet_name - Boolean:
is_active,is_public
// 공통 예외 클래스
public class DuriAhnRianException extends RuntimeException { }
public class UserNotFoundException extends DuriAhnRianException { }
public class PetNotFoundException extends DuriAhnRianException { }@Getter
@AllArgsConstructor
public class ApiResponse<T> {
private boolean success;
private String message;
private T data;
}@MappedSuperclass
@Getter
public abstract class BaseEntity {
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
}public class UserServiceTest { }
public class PetControllerTest { }
public class EmotionAnalysisServiceTest { }@Test
void createUser_ValidRequest_ReturnsUser() { }
@Test
void getUserById_NonExistentId_ThrowsUserNotFoundException() { }main # 메인 브랜치
develop # 개발 브랜치
feature/user-auth # 진호: 사용자 인증 기능
feature/pet-customize # 형준: 펫 커스터마이징 기능
feature/social-friend # 정현: 친구 기능
feat: 사용자 소셜 로그인 기능 추가
fix: 펫 상태값 업데이트 버그 수정
refactor: 감정 분석 로직 리팩토링
docs: API 문서 업데이트
- feat: 새로운 기능 추가
- fix: 버그 수정
- refactor: 코드 리팩토링
- docs: 문서 수정
- style: 코드 스타일 변경 (formatting 등)
- test: 테스트 코드 추가/수정
- chore: 빌드 프로세스나 도구 설정 변경
- Entity 클래스 정의
- Repository 인터페이스 생성
- 기본 CRUD 서비스 구현
- 소셜 로그인 연동
- 사용자 프로필 관리
- 감정 분석 API 연동
- 펫 커스터마이징 시스템
- 방 꾸미기 기능
- 포인트 및 아이템 상점
- 친구 시스템
- 커뮤니티 기능
- 권한 관리 시스템
- 도메인 간 연동 테스트
- 통합 테스트 작성
- API 문서 작성
- Swagger 문서 완성
- 프론트엔드 API 연동
- 최종 테스트
- Swagger 사용: 모든 API에 대한 상세한 문서화
- 예시 포함: 요청/응답 예시 필수 포함
- 에러 케이스: 가능한 에러 상황과 응답 코드 명시
/**
* 사용자의 펫을 커스터마이징합니다.
*
* @param petId 펫 ID
* @param request 커스터마이징 요청 정보
* @return 업데이트된 펫 정보
* @throws PetNotFoundException 펫을 찾을 수 없는 경우
*/
public Pet customizePet(Long petId, PetCustomizeRequest request) {
// 구현 내용
}- 비즈니스 로직 검증: 도메인 규칙 준수 여부
- 성능: N+1 문제, 쿼리 최적화
- 보안: 인증/인가, 입력값 검증
- 테스트: 테스트 커버리지, 테스트 품질
- 코드 품질: 가독성, 유지보수성
- 24시간 내 리뷰: 모든 PR은 24시간 내에 리뷰 완료
- 2명 승인: 최소 2명의 승인 후 머지
- 자가 리뷰: PR 생성 전 본인이 먼저 코드 검토
- Local: 개발자 로컬 환경
- Dev: 개발 서버 환경
- Staging: 스테이징 환경
- Production: 운영 환경
# application-dev.yml
spring:
datasource:
url: jdbc:h2:mem:testdb
# application-prod.yml
spring:
datasource:
url: jdbc:mysql://prod-db:3306/duriahnrian- 시간: 매일 오전 10시
- 형식: 어제 한 일 / 오늘 할 일 / 블로커
- 시간 제한: 1인당 3분 이내
- 시간: 매주 금요일 오후 5시
- 형식: 잘한 점 / 개선할 점 / 다음 주 목표
- 기록: 회고 내용은 문서로 기록
- Slack: 일반적인 소통
- 전화: 긴급한 이슈 발생시
- 이슈 트래킹: GitHub Issues 활용
- 컨벤션 준수 확인
- 테스트 코드 작성 완료
- 로컬 테스트 통과
- 문서 업데이트 완료
- Self 리뷰 완료
- 모든 테스트 통과
- 코드 리뷰 완료
- API 문서 업데이트
- 환경 설정 확인
- 롤백 계획 수립
이 컨벤션을 통해 3명이 효율적으로 협업하며 일관성 있는 코드를 작성할 수 있습니다! 🎉