Skip to content

06 ‐ 02 ‐ My Page (Profile) Wiki

juhyeonlee edited this page Nov 22, 2023 · 21 revisions

프로필 모듈(마이 페이지) 아키텍처 문서

목차

  1. 비즈니스 요구사항
  2. 아키텍처 설계
  3. API 엔드포인트 설계
  4. 다른 모듈과 상호작용 포인트
  5. 모델 수정 사항

비즈니스 요구사항

목적

  • 사용자의 개인정보와 프로필, 알람, 관심 리스트를 관리한다.

요구사항

기능명세

  • 개인정보 페이지
    • 개인정보(실명, 이메일, 지역, 소속)를 조회할 수 있다.
    • 비밀번호를 수정할 수 있다.
    • 42인증을 진행할 수 있다.
  • 프로필 페이지
    • 프로필 정보(프로필 이미지, 닉네임, 소속집단, 이메일, 자기소개)와 링크(링크 제목, 링크 URL)를 조회할 수 있다.
    • 닉네임 중복을 확인한다.
    • 프로필 정보(프로필 이미지, 닉네임, 자기소개)를 수정할 수 있다.
      • 자기소개는 영문기준 300자, 한글기준 150자이다.
  • 홈페이지 설정 페이지
    • 푸쉬 알람과 이메일 알람을 설정할 수 있다.
    • 등록된 알람 키워드 목록을 조회, 등록, 삭제, 전체삭제 할 수 있다.
  • 관심 리스트 페이지
    • 관심 리스트를 조회, 삭제, 전체삭제 할 수 있다.

성능명세

아키텍처 설계

모듈 구성

  1. Controller : HTTP 요청을 처리한다.
    • PersonalInfoController : 개인정보(비밀번호) 처리
    • ProfileController : 프로필 정보(프로필 이미지, 닉네임, 자기소개, 링크) 처리
    • KeywordAlarmController : 알람 키워드
    • FavoriteController : 관심있는 리스트
  2. Service : 비즈니스 로직 수행
    • PersonalInfoService : 개인정보조회, 42인증, 비밀번호 수정
    • ProfileService : 프로필 조회, 타 사용자 프로필 조회, 닉네임 중복 확인(이는 회원가입 API와 공유), 프로필 정보 수정, 링크 수정
    • KeywordAlarmService : 알람 키워드 조회, 등록, 삭제, 전체 삭제
    • FavoriteService : 관심있는 리스트 조회, 전체 삭제
    • FileService : 파일(여기서는 프로필 이미지)저장, 업로드, 삭제
  3. Repository : 데이터 저장소와 상호작용을 담당한다.
    • UserRepository : 사용자와 관련된 정보들
    • UserLinkRepository : 링크와 관련된 정보들

데이터 모델

  1. User : 사용자에 대한 정보가 저장되는 데이터베이스
    • id : 사용자에 대한 고유 식별자(Long)
    • email : 사용자의 E-mail(String)
    • password : 사용자가 등록한 비밀번호로, 암호화되어 저장(String)
    • name : 사용자의 실명(String)
    • nickname : 사용자의 닉네임(String)
    • isAlarm : 사용자가 설정한 알람(Alarm)
    • address : 사용자가 설정한 지역(String)
    • imageUrl : 사용자가 등록한 프로필 이미지
    • certification : 사용자 본인 인증 여부(boolean)
    • company : 사용자의 소속(String)
    • introducte : 사용자의 자기소개(String)
    • peerLevel : 사용자의 피어 레벨(Long)
    • representAchievement : 사용자의 대표업적(String)
    • keywordAlarm : 사용자가 등록한 알람 키워드(String, ^&%로 구분)
    • PeerOperation : 42 서울에 대한 정보들(PeerOperation)
    • userAchievements : 사용자가 달성한 업적(List-UserAchievement)
    • userLinks : 사용자가 등록한 소개 링크(List-UserLink)
    • teamUsers : 사용자가 속한 팀(List-TeamUser)
    • recruiteFavorites : 사용자가 등록한 관심 목록(List-RecruitFavorite)
    • socialLogins :
    • indexList1 :
    • indexList2 :
    • recruitList : 사용자가 작성한 모집글(List-Recruit)
  2. UserLink : 사용자가 등록한 링크들이 저장되는 데이터베이스
    • id : 사용자가 등록한 링크에 대한 고유 식별자(Long)
    • userId : 해당 링크를 등록한 사용자(User)
    • link : 링크 주소(String)
    • linkName : 링크 이름(String)

에러 처리 전략

API 엔드포인트 설계

  • HTTP 헤더에 JWT 토큰을 추가해서 전달해 주셔야합니다. 해당 토큰을 이용해서 사용자를 찾아 CRUD를 진행합니다. (JWT 토큰을 사용하는 API는 JWT 표시, 사용하지 않는 API는 표시 안함)
  1. 개인정보 조회 : GET /api/v1/info (JWT)
  2. 비밀번호 수정 : PUT /api/v1/info/password (JWT)
  3. 프로필 조회 : GET /api/v1/profile (JWT)
  4. 프로필 수정 : PUT /api/v1/profile/introduction/edit(JWT)
  5. 상대방 프로필 조회 : GET /api/v1/profile/other/?userId=?infoList=
  6. 링크 수정 : PUT /api/v1/profile/link (JWT)
  7. 알람 키워드 조회 : GET /api/v1/alarm (JWT)
  8. 알람 키워드 등록 : POST /api/v1/alarm/add (JWT)
  9. 알람 키워드 삭제 : DELETE /api/v1/alarm/delete?keyword= (JWT)
  10. 알람 키워드 전체 삭제 : DELETE /api/v1/alarm/delete/all (JWT)
  11. 관심 리스트 조회 : GET /api/v1/recruit/favorite?type=&page&pagesize= (JWT)
  12. 관심 리스트 전체 삭제 : DELETE /api/v1/recruit/favorite?type= (JWT)

다른 모듈과 상호작용 포인트

  • 관심 리스트 조회는 recruit 모듈과 관련있습니다.