Skip to content

wanted-pre-onboarding-frontend-6/pre-onboarding-assignment-week-4-1-team-5-A

Repository files navigation

투자 관리 서비스

📌 프로젝트 소개

목표

투자 관리 서비스의 관리자 기능 구현

개발 기간

2022/09/20 ~ 2022/09/25


📌 배포

http://d12r37ezbodeiz.cloudfront.net

test id: test@test.com

password: test


📌 프로젝트 설치 및 시작

프로젝트 클론

$ git clone https://github.com/wanted-pre-onboarding-frontend-6/pre-onboarding-assignment-week-4-1-team-5-B.git

패키지 설치

$ yarn add

서버 실행

$ yarn start

📌 팀원 소개


김성용(팀장) 성민규 임상빈 이재하 박세리
FE Developer FE Developer FE Developer FE Developer FE Developer

📌프로젝트 과정 소개


📌 프로젝트 구조

open
수정

📌기술 스택

TypeScript React Query Recoil


📌 요구 사항

✔️ 사용자 목록

  • 표기되어야 하는 정보
    • 고객명(name) : 가운데 글자 마스킹 필요, 두글자일 경우 성을 제외한 이름 마스킹 처리, 4글자 이상일 경우 마스킹 처리 후 앞뒤 한글자만 표기
      • 고객명을 누를 경우 사용자 상세화면으로 이동합니다.
    • 보유중인 계좌수(account_count) : (해당 API 호출 후 데이터를 정제하여 표기)
    • 이메일 주소 (email)
    • 주민등록상 성별코드 (gender_origin)
    • 생년월일 (yyyy-mm-dd) (birth_date)
    • 휴대폰 번호 (가운데 4자리 *** 로 마스킹 필요) (phone_number)
    • 최근로그인 (last_login)
    • 혜택 수신 동의 여부 (해당 API 호출 후 데이터를 정제하여 표기) (allow_marketing_push)
    • 활성화 여부 (해당 API 호출 후 데이터를 정제하여 표기) (is_active)
    • 가입일 (created_at)
  • 구현되어야 하는 기능
    • 목록에서는 활성화 여부, 임직원 계좌 여부를 필터링 할 수 있어야 합니다.
    • 리스트 페이지에서는 검색이 가능해야 합니다.
    • 페이지네이션이 되어야 합니다.
    • 임의로 신규 사용자를 추가할 수 있어야 합니다.
    • 잘못 생성한 사용자를 삭제할 수 있어야 합니다.
    • 개명을 한 사용자를 위해 사용자명을 변경할 수 있어야 합니다.

✔️ 계좌 목록

  • 표기되어야 하는 정보
    • 고객명(user_name) : 고객ID 를 참조하여 실제 이름으로 보여져야 합니다.
      • 고객명을 누를 경우 사용자 상세화면으로 이동합니다.
    • 브로커명(broker_name) : 예시) OO증권, brokers.json 를 참조하여 실제 이름으로 보여져야 합니다.
    • 계좌번호(number) : 앞 뒤 각각 두글자를 제외하고 나머지는 글자수에 맞게 * 글자로 마스킹 처리가 필요합니다.
    • 계좌상태(status) : 예시) 운용중, accountStatus.json 를 참조하여 실제 이름으로 보여져야 합니다.
    • 계좌명(name) : 계좌명입니다.
    • 평가금액(assets) : 예시) 123,123,123
    • 입금금액(payments) : 예시) 123,123,123
    • 계좌활성화여부(is_active) : 계좌 활성화 여부
    • 계좌개설일(created_at) :
  • 구현되어야 하는 기능
    • 목록에서는 브로커명, 계좌 활성화 여부, 계좌 상태를 필터링 할 수 있어야 합니다.
    • 리스트 페이지에서는 검색이 가능해야 합니다.
    • 페이지네이션이 되어야 합니다.

✔️ 상세

  • 각 사용자, 계좌의 상세 페이지는 획득 가능한 대부분의 정보를 표시해주시면 됩니다.

✔️ 조건

  • Sider 메뉴에서는 현재 보고 있는 화면에 해당하는 메뉴가 하이라이트 되어야 합니다.
  • 새로고침을 해도 로그인 상태가 유지되어야 하며, 상태에 따라 기존에 머무르던 화면이 그대로 보여야 합니다.
  • 계좌 리스트에서 계좌번호를 누르면 계좌상세 화면으로 이동합니다.
  • 계좌 리스트에서 사용자 이름을 누르면 사용자 상세로 이동합니다.
  • 사용자 상세에서 사용자의 계좌목록이 보여야 합니다.
  • 계좌 목록에서 각 계좌 상태별로 필터링이 가능해야 합니다.
  • 수익률이 플러스인 계좌의 총자산 금액은 빨간색, 원금과 동일한 경우 검정색, 마이너스일 경우 파란색으로 보여줘야 합니다.
  • 계좌 목록에서 broker_id 에 해당하는 실제 브로커명 (OO투자증권) 이 보여야 합니다.

📌 Best Practice

💡 A팀과 B팀으로 나누어 동료 학습을 진행했습니다.

A팀, B팀으로 나누어 개발 후 각 팀의 코드를 비교했습니다.
✔️ A팀 REPO

💡 react query & recoil을 사용했습니다.

redux-toolkit과 thunk, react query와 recoil 중 어떤 기술 스택을 사용할지 고민했습니다. redux-toolkit을 사용하면 보일러 템플릿을 많이 작성해야 한다는 단점을 해결 할 수 있으나, redux의 store는 서버의 복사본일 가능성이 있으며, 최신 상태로 관리되지 않을 수 있습니다. 그러나 react-query는 client, server가 같은 정보를 가지고 있는지 관리할 수 있습니다. stale과 fresh 상태를 관리할 수 있는 기능을 지원하기 때문에, 가지고 있는 정보가 stale한 상태가 되었을 때, 업데이트 요청을 할 수 있습니다. 이 외에도 직접 만들어야 했던 기능들을 react query에서 지원해주기 때문에 손쉽게 개발할 수 있습니다.

그러나 react-query는 redux와 같은 전역 상태 관리 라이브러리가 아니고, 비동기 작업을 손 쉽게 할 수 있도록 도와주는 라이브러리이기 때문에 전역 상태를 관리할 수 있는 라이브러리를 같이 사용해야 합니다. 이의 대안으로 recoil을 주로 많이 사용합니다. recoil은 상대적으로 배우기 쉽고, 아주 간단하게 전역 상태를 관리할 수 있기 때문에 저희 팀 또한 recoil를 채택했습니다.

💡 route object로 route를 관리하고, path를 상수화 해서 관리했습니다.

<Route>, <Routes>와 같은 element를 작성하는 것보다 객체로 route를 관리하는 것이 더 가독성이 좋다고 생각 되었습니다. 그리고 path를 상수화 시키면 유지 보수에도 좋고, 오타의 위험을 줄일 수 있어 상수로 관리했습니다.

About

4주차 기업과제 A (투자 관리 서비스의 관리자 기능 구현)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages