2026-06-09 PulseUp 작업일지입니다. 오늘은 1건의 작업을 진행했습니다.
개인별 운동심박수 저장/조회
현상/기능
- 개인별 운동심박수 저장/조회 개발 계획 수립
- 개인별/그룹수업 심박 데이터 저장 스키마 정합화
- 매핑 기반 심박 저장·참가자 조회 API
- 심박 업로드·실패 큐 세션 컨텍스트 보존
- 그룹 수업 개인별 심박계 배정 UI
- 심박 저장 정책 검증
- 심박수 기능 연동 메뉴 시드
- 운동기록 심박 미리보기에서 상세 페이지 분리
- 수업예약 시 하루에 여러 수업 예약 지원
- 수업예약 관리에서 같은 날 여러 수업 등록 방법 개선
- 사용자 관리 조회에 지점별 필터
- 같은 시간대 수업 중복 저장 차단
- 심박 화면 확인용 가상 데이터
작업
- 운동 구성 저장과 심박 저장 분리 구조 분석. `MemberWorkoutRecords` 개인 조회 화면 재사용, 그룹 수업 매핑 필요성 정리
- `heart_rate_data`에 `device_id VARCHAR(255)`, `device_name`, UPSERT UNIQUE 반영. `workout_heart_rate_participants` 매핑 테이블 추가
- 회원-기기 매핑 CRUD, `device_id` 기준 `user_id` 결정 저장, 참가자별 심박 요약 API 추가. 매핑 없을 때 1:1 fallback 유지
- 업로드 payload에 `slotNumber` 포함. 실패 큐에 `userId`, `workoutHistoryMasterId` 저장 후 동일 세션 기준 재전송
- 출석체크 다이얼로그에 운동기록 ID 기준 심박계 배정 패널 추가. 타입·API 서비스 모듈 분리
- 매핑 기반 저장·미매핑 1:1 fallback 저장 단위 테스트 추가
- 기존 `운동기록`·`수업예약 관리` 메뉴 설명 보강(심박 그래프·심박계 배정). idempotent INSERT 및 `user`/`branch_adminuser_menu_items` 백필
- `points` 배지를 `더보기`로 교체. `/account/workout-records/:workoutId/heart-rate` 상세 페이지에 확대 그래프·zone 분포·측정값 테이블 추가
- 같은 날 시간 겹침만 차단하고 다건 예약 허용. 캘린더에 내 예약·일별 수업/예약 건수 표시, 셀 내 스크롤로 다건 수업 노출
- 저장 후 계속 등록 버튼 추가, 기존 수업 종료 후 15분 뒤 다음 시간대 자동 제안, 당일 등록 수업 목록 안내
- 슈퍼관리자용 지점 필터 UI 추가. API `GET /admin/users?branchId=` 지원(모든 지점/지점 미지정/특정 지점)
- 프론트 시간 겹침 검증·경고 표시, API `createSlot`/`updateSlot`에서 지점 슬롯 시간 중복 검사 추가
- `workout_history_master.id = 000001` 데모 운동기록·상세·심박 60포인트 시드 추가. `user` 역할 첫 활성 회원에 연결
- **분석** · 심박 저장 흐름 전반
- **DB** · `_v2-schema.sql`, `_v2_heart_rate_participants.sql`
- **API**
- **Web** · `AttendanceDialog`, `HeartRateParticipantPanel`
- **Test**
- **DB** · `_v2_heart_rate_menu_seed.sql`
- **Web** · `MemberWorkoutHeartRateDetail`, `HeartRateChartCard`, `heartRateChartShared`
- **Web** · `ClassBookingCalendar`, `BookingMonthCalendar`, `bookingCalendarUtils`
- **Web** · `ClassBookingManagement`, `SlotFormDialog`, `bookingCalendarUtils`
- **Web/API** · `UserManagement`, `BranchFilterSelect`
- **DB** · `_v2_heart_rate_demo_seed.sql`