Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 37 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@

<hr>

아웃소싱 형태로 진행된 백엔드 프로젝트입니다.
아웃소싱 형태로 진행된 백엔드 프로젝트입니다.

클라이언트 측에서 프론트엔드 개발을 완료한 상태에 참여하였으며,

REST API 기반으로 프론트엔드와 안정적으로 연동되는 백엔드 서버를 설계 및 구축하였습니다.

요구사항 분석부터 API 설계, 예외처리까지 전바적인 서버 개발을 수행한 프로젝트입니다.
요구사항 분석부터 API 설계, 예외처리까지 전반적인 서버 개발을 수행한 프로젝트입니다.

> **내일배움캠프 1조**
>
>
> **개발기간 : 2025-06-13 ~ 2025-06-20**

<hr>
Expand All @@ -38,13 +38,15 @@ REST API 기반으로 프론트엔드와 안정적으로 연동되는 백엔드

<hr>

## 📜 API 명세서
## 📜 API 명세서

API 명세서는 [OutSourcing Project API 문서](https://teamsparta.notion.site/API-2112dc3ef51480a9a21cf45c77d1e85f)를 클릭해주세요
API
명세서는 [OutSourcing Project API 문서](https://teamsparta.notion.site/API-2112dc3ef51480a9a21cf45c77d1e85f)
를 클릭해주세요

<hr>

## 👥 Team Member
## 👥 Team Member

- **이의현 (팀장)**
테스크 도메인 전반 (테스크 생성, 수정 ,조회, 상태변경, 삭제) 담당
Expand Down Expand Up @@ -81,71 +83,82 @@ API 명세서는 [OutSourcing Project API 문서](https://teamsparta.notion.site

<hr>

## ✨운영 환경 변수

```json
DB_URL=jdbc:mysql: //localhost:3306/yourdb
DB_USERNAME=yourusername
DB_PASSWORD=youruserpassword
SECRET_KEY=your_jwt_secret_key
```

<hr>

## 🪄 트러블 슈팅

### USER 도메인
### USER 도메인

- **406 ERROR (회원가입, 로그인)**

- **응답 할 때 OffsetDateTime 역직렬화 불가 → 의존성을 추가하여 해결**
- **응답 할 때 OffsetDateTime 역직렬화 불가 → 의존성을 추가하여 해결**


- **JWT 예외처리**

- **`@ControllerAdvice`를 이용한 JWT 예외를 원하는 응답 형태로 변경 → Controller 보다 먼저 실행 되어 수동으로 응답 형태 생성**
- **`@ControllerAdvice`를 이용한 JWT 예외를 원하는 응답 형태로 변경 → Controller 보다 먼저 실행 되어 수동으로 응답 형태 생성**


- **CORS**

- **docker 이용하여 프론트엔드 연결 후 백엔드 로직 실행 → CORS 문제 발생하여 CORS 설정하여 해결**
- **docker 이용하여 프론트엔드 연결 후 백엔드 로직 실행 → CORS 문제 발생하여 CORS 설정하여 해결**

### TASK 도메인

- **DB 정규화 지키기 위한 과도한 설계**

- **불필요하게 테이블의 복잡성 상승 → Enum을 사용하여 불필요한 분리를 줄이고 타입의 안정성 상승**
- **불필요하게 테이블의 복잡성 상승 → Enum을 사용하여 불필요한 분리를 줄이고 타입의 안정성 상승**


- **TestCode**

- **테스트 코드 작성하여 Sturbing 후 실행하였지만 값을 반환하지 않음**
- **테스트 코드 작성하여 Sturbing 후 실행하였지만 값을 반환하지 않음**

- **반환값을 직접 지정하여 해결**
- **반환값을 직접 지정하여 해결**

### COMMNET 도메인

- **협업의 어려움**

- **각 도메인 파트별로 개발 → 나중에 연관이 있는 부분을 공통적으로 통일해야하는 문제 발생**
- **각 도메인 파트별로 개발 → 나중에 연관이 있는 부분을 공통적으로 통일해야하는 문제 발생**

- **팀원과 소통하며 기본적인 틀에서 조금씩 수정하여 해결**
- **팀원과 소통하며 기본적인 틀에서 조금씩 수정하여 해결**


- **프론트엔드 API를 이용한 개발의 어려움**

- **API 설계를 도메인 위주로 하였으나 프론트 엔드 API와 달라 기능이 구현되지 않음**
- **API 설계를 도메인 위주로 하였으나 프론트 엔드 API와 달라 기능이 구현되지 않음**

- **프론트엔드 API에 맞추어 API를 일부 수정하여 해결**
- **프론트엔드 API에 맞추어 API를 일부 수정하여 해결**

### DASHBOARD

- **Priority task 정렬**

- **Priority`(Enum)` high-medium-low로 정렬하기 위해 `Enum`에 정수 필드를 추가 방식과 `Map<>`을 사용하여 정렬하는 방식을 고민**

- **`Map<>`을 사용하는것으로 결정 → 순서를 정렬하는 로직이 이 경우밖에 없어서 결정**
- **Priority`(Enum)` high-medium-low로 정렬하기 위해 `Enum`에 정수 필드를 추가 방식과 `Map<>`을 사용하여 정렬하는 방식을 고민**

- **`Map<>`을 사용하는것으로 결정 → 순서를 정렬하는 로직이 이 경우밖에 없어서 결정**

- **추가적으로 순서를 정렬하는 로직이 있을 경우 `Enum`에 정수 필드를 추가하여 사용하는 방향으로 선택**
- **추가적으로 순서를 정렬하는 로직이 있을 경우 `Enum`에 정수 필드를 추가하여 사용하는 방향으로 선택**

### LOG

- **AOP 도입 및 책임 분리의 어려움**

- **로직 분리의 기준을 정하는데 어려움 → 공통 처리와 비즈니스 로직 사이의 경계가 모호**
- **로직 분리의 기준을 정하는데 어려움 → 공통 처리와 비즈니스 로직 사이의 경계가 모호**

- **AOP → 요청 메서드, URL, 로그인 한 유저ID 공통 정보 추출**
- **AOP → 요청 메서드, URL, 로그인 한 유저ID 공통 정보 추출**

- **추출한 데이터를 서비스 계층으로 전달하여 가공 및 DB 저장을 담당하도록 구조 설계함**
- **추출한 데이터를 서비스 계층으로 전달하여 가공 및 DB 저장을 담당하도록 구조 설계함**



Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ spring:
url: ${DB_URL}
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
driver-class-name: com.mysql.cj.jdbc.Driver

jwt:
secret:
key: ${SECRET_KEY}

expiration : 3600000
expiration: 3600000