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

SINGLE 영상 멈춤 자동 재생 복구

현상/기능

  • 영상 멈춤 발생 시 자동으로 재생되도록 수정
  • 자동 복구 회귀 방지

작업

  • 기존 MULTI 워치독에 `shouldBePlaying` 옵션을 추가해 paused/ended도 복구하고, SINGLE 현재 슬롯(autoPlay=true)에 워치독을 부착해 stall·의도치 않은 정지를 seek+play로 자동 재개
  • 재생 기대 중 paused 복구·정책적 pause skip·SINGLE 워치독 부착/destroy 단위 테스트 추가
  • **Test**

Electron 로그 영상 멈춤 분석 (store-10 / master-4c1227d5)

현상/기능

  • 한동안 영상이 멈춰 있던 원인 확인

작업

  • EMOM 메인 타이머는 180초 간격으로 정상 진행됐으나, 세션 중 `비디오 재생 시작`이 사용자 개입(23:21:19 재개/스킵) 전까지 전무. Vimeo postMessage origin 오류·포커스 변경 후 수동 next/prev 흔적이 있어, 타이머와 무관하게 Vimeo 재생/루프가 멈춘 상태로 판단
  • **분석** · `uploads/electron-logs/2026-07-26/store-10/.../sent-20260726-232259.json`

1Monitor EMOM Loop MOVE 1/12 표시 수정

현상/기능

  • EMOM-Loop 실행 시 상단 MOVE가 1/12로 나오던 문제 / 다음 클릭 시 1/6→1/5→1/4로 줄던 문제
  • MOVE 분모 6 유지·중간 index 진입 검증

작업

  • 연속 6MOVE 블록 기준으로 MOVE x/6 표시하고, 다음/이전으로 블록 중간에 들어와도 블록 시작을 뒤로 찾아 분모 6·분자 순번을 유지
  • 전반 RND1 연속 블록·중간 index(3/6)에서 totalMoves=6 단위 테스트 추가
  • **Test**

1Monitor EMOM Loop/Stress 모듈 파일 분리

현상/기능

  • Single Main Loop처럼 EMOM도 Stress/Loop를 SINGLE 전용 파일로 분리
  • 모듈 선택·SINGLE broadcast 회귀 검증

작업

  • SINGLE은 전용 Loop/Stress 모듈·main-round를 선택하고, MULTI 공용 `EmomModule`/`EmomStressModule`에서 SINGLE 분기를 제거
  • Runner가 SingleEmom* 모듈을 고르는지와 MOVE 1개 broadcast·벨 억제 테스트를 분리 검증
  • **Test**

EMOM Loop 상단 카테고리 라벨

현상/기능

  • EMOM-Loop 실행 시 상단 좌측이 `EMOM`만 나오던 것을 `EMOM(loop)`로 표시
  • Loop 라벨 회귀 검증

작업

  • SINGLE·MULTI(타이머/그리드) Loop 라벨을 `EMOM(loop)`로 통일. Stress는 기존 `EMOM (Stress)` 유지
  • EMOM Loop → `EMOM(loop)` 기대값으로 단위 테스트 갱신
  • **Test**

리모컨 Single 선택보기 탭 숨김

현상/기능

  • SINGLE presentation일 때 리모컨 「선택보기」탭 숨김

작업

  • 세션 폴링의 presentationMode를 페이지로 전달하고, single이면 탭바·선택보기 패널 없이 기본 제어 화면만 표시
  • **Web**

1Monitor EMOM Stress 헤더 카테고리 표시

현상/기능

  • EMOM Stress 실행 시 상단이 Main-Train/MAIN으로 나오던 문제 수정
  • 카운트 위 운동명이 여전히 Main으로 표시됨

작업

  • `resolveSingleCategoryMethod`로 EMOM (Stress) 등 카테고리 라벨을 판별해 하드코딩된 Main-Train을 대체
  • `resolveSingleSegmentLabel`로 메인 구간은 MULTI와 같이 EMOM 등 카테고리명을 표시 (Rest/Water/DS/CD는 구간명 유지)

리모컨 Single 운동 종료 후 상태 복귀

현상/기능

  • Single monitor 운동 종료 후 리모컨 상태·버튼이 대기/시작으로 돌아오지 않음
  • 카운트다운 race와 종료 후 ready 복귀 구분 검증

작업

  • 시작 카운트다운 grace(8초) 안의 `ready`만 playing 유지하고, grace 이후·`completed`의 `ready`는 종료로 처리해 인트로/운동 시작 버튼으로 복귀
  • grace 구간 유지·grace 이후 종료·`completed` 종료 케이스 단위 테스트로 확인
  • **Web**
  • **Test**

1Monitor EMOM Stress 공용 모듈화

현상/기능

  • Main Stress처럼 SINGLE/MULTI가 같은 EmomStressModule을 쓰되 MULTI 기존 동작은 유지
  • SINGLE MOVE 1개 broadcast·벨 억제·모듈 선택 검증 유지

작업

  • 공용 main-round에 `!allowsBulkPreload` SINGLE 분기만 추가하고 SingleEmomStressModule·전용 main-round를 제거. Runner는 registry 공용 모듈을 선택
  • SINGLE 시나리오를 공용 테스트로 이관하고 Runner가 EmomStressModule을 반환하는지 확인
  • **Test**

1Monitor Main Loop rest 다음 영상

현상/기능

  • RND 변경 rest에서 CD 영상이 나오는 문제 확인·수정
  • Loop에서 A1→rest→A2 진행 시 rest 구간에 다음 운동(A2, A3…) 영상이 나오게
  • rest에서 나온 다음 영상이 실제 MOVE 진입 시 다시 로딩되지 않게
  • Loop rest 다음 영상 / rest→exercise 재로딩 스킵 / Stress rest 유지 검증

작업

  • Loop rest 미리보기를 중복제거 타임라인 `index+1` 대신 원본 시퀀스 다음 exercise→MOVE 매핑으로 변경해 RND1→RND2에서 A1이 나오게 수정
  • Loop 모드만 rest마다 다음 MOVE로 인덱스를 미리보기하고 메인을 전환. Stress SET 사이 rest KEEP_VIDEO 유지는 그대로 둠
  • rest/water preview 이어가기(`continueFromBreakPreview`)면 video pool activate를 스킵해 같은 player를 그대로 재생
  • `isLoopMode`·`continueFromBreakPreview` 기준 keep/skip·인덱스 이동 단위 테스트 추가 및 통과
  • **Test**

1Monitor Main Stress SET 영상 재로딩

현상/기능

  • 동일 운동 SET1→휴식→SET2→SET3 동안 영상이 다시 로딩되지 않게

작업

  • KEEP_VIDEO SET 이어가기에서 video pool activate를 스킵하고, 동일 MOVE일 때 next 승격으로 현재 player가 파괴되지 않도록 수정

디바이스 재등록 유도 원인 분석

현상/기능

  • 새 디바이스 등록 에러 / 기존 등록인데도 등록을 물어보는 이유
  • 등록 코드 표시·오프라인 목록·스낵바 `유효하지 않거나 만료된 등록 코드` 확인

작업

  • Electron 로컬 토큰이 초기화되고 WebSocket 연결 수=0이라 웹이 온라인 디바이스로 인식하지 못함. DB 등록과 실시간 연결이 분리되어 재등록 UI가 뜬다
  • Electron은 기본 API가 `pulsebox.co.kr`인데 웹 등록은 로컬 `서버:3001`이라 코드 DB가 달라 검증 실패. 오프라인 항목은 로컬 DB의 이전 등록분
  • **분석** · `terminals/1.txt`, `terminals/2.txt`
  • **분석** · , `device-config.json`, `web-app/`