dnd-side-project / dnd-10th-6-backend

🌲 나무로 보는 남이 써주는 나의 소개서, 남의위키(namui wiki)
8 stars 0 forks source link

RANK 타입 대시보드 응답 타입 수정 #188

Open eun-seong opened 2 months ago

eun-seong commented 2 months ago

기능 설명

요구 사항

랭크 타입의 대시보드는 option이 list 형태로 존재하는데, converting을 string으로 하여 옵션 찾을 수 없다는 에러 발생

특이 사항

eun-seong commented 2 months ago

getAnswer().toString() 인 부분 모두 조사 필요

eun-seong commented 2 months ago

@rlacksgus97 기존에는 질문 당 선택지가 1개라서 textvalue 필드가 각각 존재했는데, RANK 타입이 생기면서 리스트로 응답해야 하는 상황입니다.

RANK의 경우엔 여러 개의 옵션을 한 번에 응답해야 하기 때문에 현재 이 두 필드를 삭제하고, 새로운 필드로 교체해야 할 것 같습니다.

예를 들어, OX인 경우

AS-IS

{
"questionName": "",
"value":  true,
"text": "네",
...
}

TO-BE

{
"questionName": "",
"answer": { // 하나로 묶음
"value": true,
"text": "네",
"optionName": "YES"
}
}

RANK인 경우,

AS-IS

현재 대응 불가능 --> 에러 발생

{
    "questionName": "",
    "value":  true,
    "text": "네",
    ...
}

TO-BE

{
"questionName": "",
"answer": [
{
"value":"돈",
"text": "돈",
"optionName": "MONEY",
"rank": 1,
},
{
"value":"얼굴",
"text": "얼굴",
"optionName": "FACE",
"rank": 4,
},
...
}

생각나는 수정 방안은 아래와 같아요.

  1. Object 타입으로 선언해서 필요할 때 캐스팅하여 응답합니다.
    • 응답할 때만 캐스팅이 필요하기 때문에 구현은 간단할 수 있으나
    • 나중에 유지보수할 때 DashboardComponent처럼 될 가능성 농후함
  2. answer interface를 정의하고 QuestionType 에 따른 구체 클래스를 상속받아 정의합니다.
    • 코드 복잡도 올라갈 수 있으나
    • 유지보수면에서 유리할 듯.