2026-07-20 PulseUp 작업일지입니다. 오늘은 4건의 작업을 진행했습니다.

단일 트레이닝 Electron 가로·세로 재생

현상/기능

  • 월간프로그램 SINGLE 가로·세로 Play를 Electron 전용 화면으로 전달하고 리모컨 인트로·분할 변경을 제한
  • 모니터 1대는 단일 운동 영상, 2대 이상은 운동 영상+기존 타이머/심박 화면만 사용
  • 세로 3영상 캐러셀과 가로 전체영상·우하단 다음 영상 프리뷰 구현
  • 세로 SINGLE 영상 미표시를 수정하고 3단 영상·상하 정보 영역 및 보조 모니터 심박 전체 화면 구성
  • SINGLE 모니터 수별 창 배치 회귀 검증

작업

  • SINGLE payload에 presentation·방향·scope·인트로 사용 여부를 추가하고 직접/릴레이 경로를 통일했으며, 리모컨 세션 상태에 따라 인트로와 3/5분할 변경을 비활성화
  • `main/`, `main/`, `main/`, `main/`
  • SINGLE 전용 창 배치와 presentation 전환 readiness 대기를 추가하고, 단일 재생에서는 멀티 그리드 큐·프리로드를 생략하며 인트로 명령을 차단
  • `renderer/components/`
  • 세로는 이전/현재/다음 중 중앙만, 가로는 본 영상만 재생하고 휴식·물보충에는 다음 영상을 선재생하도록 구성. 방향별 헤더·푸터·로고·시간 표시와 pause/resume/stop을 기존 세션 이벤트에 연동
  • `renderer/components/`, , `circuits/shared/`
  • 다양한 Vimeo 필드와 숫자 ID를 정규화해 영상을 로드하고, 동일 높이 3단 영상 위에 Main/Rest/Water Break·SET/RND·MOVE와 현재/운동시간 정보를 오버레이. SINGLE 타이머 모니터에서는 좌측 카운터와 준비 카운트다운을 제거하고 심박 패널만 전체 화면으로 표시
  • 모니터별 창 배치와 운동→휴식·물보충 다음 영상 1회 이동, 다음 운동 재진입, 마지막 빈 화면을 단위 테스트로 확인
  • **Web** · `MonthProgram/components/`, , , `services/`
  • **Test** · `main/`, `renderer/components/`

1Monitor EMOM Stress 저장 (Singleexercises)

현상/기능

  • 1모니터(Singleexercises) EMOM-Stress 저장을 `workout_exercises_logic.md` §10(MOVE 고정·SET 순환·6MOVE 물보충) 규칙에 맞춤
  • Single scope EMOM-STRESS 기본값을 §10(3/2/1분·Set3 물보충 5분·reps 10)에 맞춤

작업

  • linear EMOM-Stress 생성 시 grid와 동일하게 6MOVE마다 물보충·SET 간 휴식 없음을 적용하고, stress 전용 시간 합산·화면 표시에 `circuitType`을 전달. 단위 테스트 추가
  • `SINGLE_EMOM_STRESS_DEFAULT_ROWS` 추가 및 Single 트레이닝 설정 초기값·`getDefaultRowsForMethod` 분기 연동
  • **Web** · `shared/save-workout/`
  • **Web** · `WorkoutSettings/components/`

1Monitor EMOM Loop 저장 (Singleexercises)

현상/기능

  • 1모니터(Singleexercises) EMOM-Loop 저장을 `workout_exercises_logic.md` §11(6MOVE·RND 순환·lap 1,2,3,6,5,4·RND3 물보충) 규칙에 맞춤
  • Single scope EMOM-LOOP 기본값을 §11(3/2/1분·RND3 물보충 5분·reps 10)에 맞춤

작업

  • linear EMOM-Loop 생성 시 6MOVE 블록마다 RND1→3·블록 내 lap 역순(B/D) 정렬·전반 RND3 끝 물보충을 적용하고 loop 시간 합산을 6MOVE 블록 물보충 기준으로 수정. 단위 테스트 추가
  • `SINGLE_EMOM_LOOP_DEFAULT_ROWS` 추가 및 Single 트레이닝 설정 초기값·`getDefaultRowsForMethod` 분기 연동
  • **Web** · `shared/save-workout/`
  • **Web** · `WorkoutSettings/components/`

Singleexercises EMOM 저장 연동

현상/기능

  • Singleexercises에서 EMOM-Stress(§10)·EMOM-Loop(§11) 저장 API 연동 및 검증

작업

  • handleSave EMOM 분기에 패널·메인 운동 검증 추가, `saveEMOM`에 linear sequenceMode·circuitType(stress|loop) 전달, 시간 합산에 method_type 반영. 저장 후 originalCircuitType 추적 보강
  • **Web** · `Singleexercises/`, `shared/save-workout/`