📋

트레이니 대시보드

생성일
2024/08/19 00:07
태그

화면

소개

트레이니 및 트레이너의 대시보드 페이지 트레이니의 대시보드
1.
트레이니의 상세 정보 보기
트레이니 목록 중 특정 트레이니의 이름을 선택하면 해당 트레이니의 상세 정보가 표시됩니다. (나이, 몸무게, 인바디 수치 등)
2.
트레이니의 정보 수정
트레이니의 PT 잔여 횟수, 생년월일, 몸무게, 목표 수치 등을 수정할 수 있습니다.
3.
트레이니의 인바디 정보 추가
해당 트레이니의 인바디 수치 (몸무게, 체지방률, 근골격량 등)를 추가할 수 있습니다.

구현한 기능

FE

트레이니 대시보드 관리
트레이너와 사용자가 트레이니의 개인 정보를 조회하고 수정할 수 있는 대시보드를 제공합니다. 여기에는 트레이니의 기본 정보, 인바디(체성분) 데이터, 목표 수치 등이 포함됩니다.
트레이니 정보 수정 기능
트레이너는 트레이니의 기본 정보를 수정할 수 있습니다. 수정 가능한 항목에는 잔여 횟수, 생년월일, 성별, 키, 목표 설정, 목표 수치, 목표 보상 등이 포함됩니다. 각 필드의 값 변경은 상태 관리와 함께 수행됩니다.
인바디 데이터 관리
인바디 정보를 추가하거나 최신 상태를 조회할 수 있습니다. 트레이너는 인바디 데이터를 추가할 수 있으며, 추가된 데이터는 차트와 목록에 반영됩니다. 사용자는 몸무게, 체지방률, 근골격량의 최신 정보를 확인할 수 있습니다.
Chart.js를 사용한 데이터 시각화
Chart.js 라이브러리를 사용하여 인바디 데이터를 시각적으로 표시합니다. 라인 차트를 사용하여 몸무게, 체지방률, 근골격량의 변화를 시간에 따라 시각적으로 추적할 수 있습니다. 목표 수치도 함께 표시됩니다.

BE

 트레이니 상세 정보 조회

트레이너: PT 계약이 맺어진 트레이니만 조회할 수 있습니다.
트레이니: 본인 정보만 확인할 수 있습니다.
LEFT JOIN FETCH 사용: JPQL을 사용하여 여러 테이블 간의 관계를 최적화하였습니다. LEFT JOIN FETCH를 사용하여 쿼리 수를 6개에서 1개로 줄였습니다. 이를 통해 데이터베이스 접근 성능을 크게 향상시켰습니다.

예시:

@Query("SELECT ptc FROM pt_contract ptc " + "LEFT JOIN FETCH ptc.trainee t " + "LEFT JOIN FETCH t.inBodyRecords ir " + "LEFT JOIN FETCH ptc.trainer tr " + "WHERE t.id = :traineeId AND tr.id = :trainerId AND ptc.isTerminated = false") Optional<PtContractEntity> findWithTraineeAndTrainer(@Param("traineeId") Long traineeId, @Param("trainerId") Long trainerId);
Java
복사

 트레이니 정보 수정

트레이너는 PT 계약을 맺은 트레이니만의 정보를 수정할 수 있습니다.
수정할 수 있는 정보는:
잔여 횟수
생년월일
성별
목표 설정
목표 수치
목표 보상

 트레이니의 인바디 정보 추가

날짜를 선택하여 특정 수치를 추가할 수 있습니다.
추가할 수 있는 수치는:
몸무게
체지방률
근골격량

추가적으로 구현하고 싶은 기능

WebSocket을 이용한 채팅 기능을 넣고 싶었는데 시간 관계상 구현하지 못했습니다.