Skip to content

[IC2_BE] 신동민 - 설문조사 서비스 과제#20

Open
evan-dongmin wants to merge 47 commits into
FC-InnerCircle-ICD2:mainfrom
evan-dongmin:develop
Open

[IC2_BE] 신동민 - 설문조사 서비스 과제#20
evan-dongmin wants to merge 47 commits into
FC-InnerCircle-ICD2:mainfrom
evan-dongmin:develop

Conversation

@evan-dongmin

@evan-dongmin evan-dongmin commented Nov 25, 2024

Copy link
Copy Markdown

체크리스트

기능별 체크리스트

1. 설문조사 생성 API

  • 기본 기능 구현
    • 설문조사 이름설명 받기
    • 설문 받을 항목 받기 (1~10개)
      • 항목 이름
      • 항목 설명 (선택)
      • 항목 입력 형태: 단답형, 장문형, 단일 선택 리스트, 다중 선택 리스트
      • 항목 필수 여부

2. 설문조사 수정 API

  • 기본 기능 구현
    • 설문조사 이름설명 수정 가능
    • 설문 받을 항목 추가/변경/삭제 (응답의 버전을 구분하여 저장)
    • 기존 응답 유지 (항목이 수정되어도 기존 응답은 그대로 유지)

3. 설문조사 응답 제출 API

  • 기본 기능 구현
    • 응답 값 제출
      • 설문 항목에 맞는 응답만 제출 가능
      • 항목 입력 형태에 맞는 값 제출
        • 단답형: 텍스트
        • 장문형: 텍스트
        • 단일 선택 리스트: 하나의 값
        • 다중 선택 리스트: 여러 값

4. 설문조사 응답 조회 API

  • 기본 기능 구현
    • 설문조사 식별자로 전체 응답 조회 가능
  • 확장 기능 구현 (개발예정)
    • 응답 항목 이름과 값을 기준으로 검색 가능

공통 추가 개발 체크리스트

  • 예외 처리
  • 단위 테스트 구현
  • 통합 테스트
  • 코드 리팩토링(가독성 및 의도 전달력 향상)

프로젝트 설명

Swagger

Swagger UI 접속 주소

빌드 결과물

다운로드 링크

DB 모델링

image

개요

설문조사 서비스를 개발하기 위해 데이터베이스를 모델링했습니다. 주요 요구사항은 다음과 같습니다:

  • 설문조사 생성, 수정, 응답 제출, 응답 조회 기능을 지원해야 합니다.
  • 설문조사 수정 시 기존 응답이 유지되어야 하므로 버전 관리가 필요합니다.
  • 설문 항목은 다양한 입력 형태를 가지며, 선택형의 경우 선택 후보를 포함해야 합니다.
  • 응답 조회 시 설문 항목의 이름과 응답 값을 기반으로 검색할 수 있어야 합니다.

엔티티 설명

주요 엔티티는 다음과 같습니다:

  1. Survey: 설문조사의 기본 정보
  2. SurveyVersion: 설문조사의 버전 관리
  3. SurveyItem: 설문 항목(질문)
  4. SurveyItemOption: 선택형 항목의 선택지
  5. Response: 설문 응답
  6. ResponseItem: 각 설문 응답의 개별 항목 응답

엔티티 관계도 (ERD)

Survey (1) ──── (N) SurveyVersion
SurveyVersion (1) ──── (N) SurveyItem
SurveyItem (1) ──── (N) SurveyItemOption
SurveyVersion (1) ──── (N) Response
Response (1) ──── (N) ResponseItem
SurveyItem (1) ──── (N) ResponseItem
  • Survey - SurveyVersion: 1 대 N 관계 (하나의 설문조사는 여러 버전을 가질 수 있음)
  • SurveyVersion - SurveyItem: 1 대 N 관계 (하나의 설문 버전은 여러 설문 항목을 가질 수 있음)
  • SurveyItem - SurveyItemOption: 1 대 N 관계 (하나의 설문 항목은 여러 선택지를 가질 수 있음)
  • SurveyVersion - Response: 1 대 N 관계 (하나의 설문 버전에 여러 응답이 있을 수 있음)
  • Response - ResponseItem: 1 대 N 관계 (하나의 응답은 여러 응답 항목을 가짐)
  • SurveyItem - ResponseItem: 1 대 N 관계 (하나의 설문 항목에 여러 응답이 있을 수 있음)

주요 고려 사항

1. 버전 관리

  • 설문조사 수정 시 버전 번호를 증가시켜 관리함으로써 응답 데이터의 일관성을 유지합니다.
  • 각 응답은 해당 시점의 SurveyVersion에 연결되어 과거 응답이 변경되지 않습니다.

2. 선택형 항목의 선택지 관리

  • 선택형 항목의 경우 SurveyItemOption 테이블에서 선택지를 관리합니다.
  • 선택지의 순서와 내용을 저장하여 응답 시 정확한 매칭이 가능합니다.

3. 응답 데이터의 유효성 검사

  • 향후 서버에서 추가적인 검증을 통해 데이터 무결성을 보장합니다.

4. 고급 검색 기능 구현(예정)

  • 응답 조회 시 ResponseItemSurveyItem을 조인하여 항목 이름 기반으로 검색합니다.
  • 향후 인덱스를 적절히 활용하여 검색 성능을 향상시킵니다.

컨벤션

브랜치 관리 전략

⚙️ github-flow

image

  • main(master): 서비스을 직접 배포하는 역할을 하는 브랜치입니다.
  • feature(기능): 각 기능 별 개발 브랜치입니다.
  • develop(개발): feature에서 개발된 내용을 가지고 있는 브랜치입니다.
  • release(배포): 배포를 하기 전 내용을 QA(품질 검사)하기 위한 브랜치입니다.
  • hotfix(빨리 고치기): main 브랜치로 배포를 하고 나서 버그가 생겼을 때 빨리 고치기 위한 브랜치입니다.

git 커밋 컨벤션

1. Commit Type

타입은 태그와 제목으로 구성되고, 태그는 영어로 쓰되 첫 문자는 대문자입니다.

태그 : 제목의 형태이며, :뒤에만 space가 있습니다.

  • feat : 새로운 기능 추가
  • fix : 버그 수정
  • docs : 문서 수정
  • style : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
  • refactor : 코드 리펙토링
  • test : 테스트 코드, 리펙토링 테스트 코드 추가
  • chore : 빌드 업무 수정, 패키지 매니저 수정

@evan-dongmin evan-dongmin added the WIP 작업을 진행중일 때 사용 label Nov 25, 2024
evan-dongmin and others added 24 commits November 26, 2024 22:07
Feature/설문조사 생성 유효성적용 및 글로벌 에러 핸들러 기능 구현
Feature/설문조사 관련 기능 모듈화 및 설문조사 수정 기능 구현
feat : 설문조사 응답 제출 기능 기본 구현
@evan-dongmin evan-dongmin added Needs Review 작업이 완료되어 리뷰가 필요할 때 사용 and removed WIP 작업을 진행중일 때 사용 labels Dec 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs Review 작업이 완료되어 리뷰가 필요할 때 사용

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant