Skip to content

06 ‐ 02 ‐ My Page (Profile) ‐ my portfolio Wiki

Ryu(Paul) edited this page Jan 18, 2024 · 1 revision

목적

  • 본 내용은 My Portfolio 기능 추가와 Profile Module 의 개선 전 기록을 위해 남기는 용도이다.
  • 본 내용을 기반으로 Profile 에 나의 작업물 보기 기능이 구현될 예정이며, 향후 해당 내용은 Profile 내용에 추가 통합 되어야 한다.

구조

설계 개요

  • 작업물은 기본적으로 팀 페이지를 기준으로, 모집글, 쇼케이스, 피어로그로의 리다이렉션을 제공할 수 있어야 한다.
  • 이를 팀 기준으로 탐새하는 구조를 접근하게 되면 팀 -> 팀 유저 -> 유저 로 간 뒤, 팀 쇼케이스 글, 팀 피어로그 글이런 형태로 방사형으로 접근이 필요해진다.
  • 이에 단독적으로 User-portfolio 로 연결되는 테이블을 단독으로 구성하며, 거기서 필요한 정보들을 업데이트 하는 방식으로 가도록 구성하게 되었다.

작동 방식

  1. 팀의 상태가 변경되어 완료 상태가 되는 순간, 팀에 대한, 즉 모집글을 기반으로하여 포트폴리오로 기본적으로 데이터가 들어가게 된다.
  2. 이후 쇼케이스, 피어로그가 팀에서 완성되는 순간 자동으로 본인의 포트폴리오에 해당 글이 갱신되며 접근이 가능해진다.
  3. User 속성으로 전체 포트폴리오 공개, 비공개를 정할 수 있으나, 향후를 고려하여 내부적으로도 각 요소 별 공개 여부를 지정해둬야 한다.

데이터 구조

UserPorfolio Table

  • id: Long, PK
  • userId : Long, user의 Id
  • User user : User, 1:N fetch.LAZY 전략
  • teamId : Long, team의 Id
  • Team : team, 1: N fetch.LAZY 전략
  • List teamTagList : fetch.EAGER 전략
  • teamName : string
  • teamLogo : string
  • recruitImage : string
  • recruitId : Long
  • recruit : recruit 타입 객체에 연결되는 용도. fetch.LAZY 전략
  • showcaseId : Long
  • Post : 게시글, 1:N 으로 게시글에 연결되어 있다. fetch.LAZY 전략
  • peerlogId : Long // 일단은 peerlog 기능 전까지는 임시로 존재만한다.
  • visibility : boolean, default 는 true다. user 의 속성을 따라 지정된다.

User Table

  • List myPortfolios 객체 매핑

API

  • user의 folio의 공개여부를 결정한다.
  • folio 를 제공한다(무한스크롤)
  • 상대방의 folio를 제공한다(무한스크롤)