Skip to content

코스 태그 관련 기능 구현 #138

@recoma96

Description

@recoma96

배경

  • 현재 단순히 코스 리스트 및 코스 조회만 가능한 상태
  • 하지만 여러 코스들 사이에서도 서로 공통점들이 있다.
    • (예: 사당능선 코스와 케이블카능선 코스는 관악산이라는 카테고리 안에 포함된다)
  • 따라서, 태그 관련 기능을 추가해 유저가 코스를 검색할 때 특정 테마 또는 태그를 위주로 볼 수 있게 한다

작업 내용

  • 데이터 구조 관련
    • 태그 관련 데이터 구조를 추가
    • 이때 태그는 타입이 크게 두개다
      • 산을 나타내는 산악형
      • 공식화된 명칭을 가진 시리즈(해파랑길 등, 금오도 비렁길 등...)을 나타내는 루트형
      • 초보용, 관악산히든스트리트 같은 테마형
  • 웹 페이지
    • 태그 관련 페이지 추가
      • 산, 루트, 테마
    • 특정 태그에 대한 상세정보 페이지 추가
    • 코스 조회 페이지에서 각 코스 아이템 마다 태그 리스트 추가
    • 코스 상세 페이지 상단에 태그 노출
  • 어드민 페이지에 태그 관리 기능 추가

구현 세부사항 (Implementation Details)

  • DB

    • 코스와 카테고리는 다대다 관계. 즉, 하나의 코스는 여러 카테고리를 가질 수 있다.
    • 추가 테이블
      • 코스 태그 (course_tag)
        • 태그명 (name)
        • 설명 (description)
        • 태그 타입 (type)
          • MOUNTAIN (산악형), ROUTE (루트형), THEME(테마형)
      • 코스 태그 이미지 (course_tag_image)
        • URL
        • order (사진 노출 순서)
      • 중간 테이블 (course_tag_course)
  • API Server

    • 추가
      • 코스 태그 조회 API: GET /course-tags
        • 요청
          • 태그명 연관검색 (name)
          • 타입 (type)
        • 응답
          • 코스 태그에 대한 정보
          • 대표 이미지 (order 최상위)
      • 코스 상세 API: GET /course-tags/{tag-id}
      • 요청
        • 페이지네이션 (코스 개수에 대한)
      • 응답
        • 코스 태그에 대한 정보
        • 이미지 리스트
        • 집계 데이터
          • 난이도별 코스 개수
          • 코스 타입별 코스 개수
        • 코스 리스트
    • 수정
      • 코스 상세정보 조회: GET /courses/{course-id}
        • 응답
          • 해당 코스에 해당하는 태그 추가
  • 웹 페이지

    • 페이지를 세개 추가한다 (산, 지역, 테마). 단 내용물은 동일하다, (이 세개를 "태그"라는 이름으로 가정)
    • 태그 리스트 페이지
      • 태그들을 페이지네이션을 나열한다
      • 연관검색어를 이용한 태그 검색
    • 태그 상세 페이지
      • 태그 이름, 태그 연관 이미지, Markdown 기반의 설명 배치
      • 코스 타입(하이킹, 트레킹) 개수 집계
      • 난이도 (1~7) 집계, 히스토그램 형태로 노출
      • 해당 태그에 해당하는 코스들을 페이지네이션 형태로 출력 (이때 페이지네이션 크기를 가능한 크게 (30개 이상))
        • 난이도 별로 고정 정렬
        • 반대로 정렬이 가능
    • 코스 검색 리스트 기능 변경
      • 리스트 출력 시, 태그 관련 정보 간단하게 추가
      • (검색시 태그 추가 검색 기능의 경우 검색쿼리 최적화 후 진행 예정)
    • 코스 상세 정보
      • 태그 관련 정보를 추가하고, 그 태그를 누르면 해당 태그 상세 페이지로 이동
  • 어드민 페이지 관련

    • 태그 관리 페이지 추가
    • 태그와 코스를 연결하는 페이지 추가
    • 태그 이미지를 업로드 하는 페이지 추가

Metadata

Metadata

Assignees

Labels

BACKEND백엔드 파트FRONTEND프론트엔드 파트✨ feature새로운 기능을 만들었어요

Projects

Status

Todo

Relationships

None yet

Development

No branches or pull requests

Issue actions