Skip to content

리포트 복귀 경로와 완료 알림을 공통 화면 규칙으로 (2026-09-14)

  • 기간: 2026-09-14, 사용자 지시 “이거 작업해서 반영좀 해줘 / 테스트 없이 바로 메인까지 머지”.
  • 랜딩: 앱 이슈 #1593, 앱 PR #1594 — 2026-09-14 13:17:24 KST 앱 main 병합 완료, 병합 커밋 b622cc808b47, 구현 커밋 20ac3cbad592. 계약·변경 노트·이 작업 기록은 이 문서 PR의 main 병합으로 반영한다. 마이그레이션·DB·Edge 변경 없음. 실제 Production 배포는 미확인이다.
  • 설계서: 첨부 바벨릭.zipdelivery-20260914 디자인 델타 3건. 배송의 지시문은 구현 참고 자료이며 별도 실행 권한으로 해석하지 않았다.
  • 정본: 리포트 계약, 직업 변경 계약, 운동 화면 계약, 앱 ShellGates.tsx·shell.css.
  • 도구: 첨부 manifest의 baseBlobs와 저장소 Git blob을 대조한 뒤 신규 델타를 통합했다. ZIP 전체를 앱 저장소에 넣거나 과거 배송 메타데이터를 복제하지 않았다.
  • 게이트: 사용자 지시에 따라 로컬 테스트·빌드·precheck와 원격 테스트·CI를 직접 실행하지 않았다. 앱·문서의 PR 커밋과 병합 메시지에 [skip ci]를 사용해 GitHub Actions의 테스트·CI·자동 배포를 생략한다. 앱 후보의 GitHub Actions 실행은 0건이며, Vercel 프리뷰 체크 성공 2건은 별도로 자동 생성됐다. 이를 테스트 통과나 Production 배포로 보고하지 않는다. 영구 정책이나 보호 설정은 변경하지 않았다. 아래 코드 대조는 실행 검증 결과가 아니다.
  • 버그리포트: 없음(디자인 배송 통합).
  • 계약: ReportScreenProps.onClose, 직업 변경 성공 토스트, 운동 저장 결과 1회 표시.

Phase 현황

Phase내용상태
Phase 1첨부와 최신 main 대조·디자인 및 기능 배선 통합·문서 준비완료 — 앱 26파일·문서 7파일, 테스트 미실행

이슈의 구현 계획은 Phase 1 하나다. 앱은 main 병합을 확인했고 문서는 이 PR로 main에 반영한다. 구현·병합 상태와 검증·배포 상태를 구분한다.

1. 배경

사용자가 월간 요약·리포트의 상단 배치와 완료 피드백을 정리한 디자인 ZIP을 전달하고 테스트 없이 main까지 반영하도록 지시했다. 최종 범위는 화면 10개 파일과 계약 3개 파일의 델타, 배송에 적힌 8개 기능 연결 항목을 실제 앱과 문서에 반영하는 것이다.

배송 시점의 기준은 앱 9a37e73c3a6e, 문서 db59ec084e4c였다. 앱 10개와 계약 3개 파일의 base blob은 통합 시작 시 각 저장소 main의 해당 파일과 모두 같았다. 다른 작업의 변경을 되돌릴 교집합은 없었다.

2. 문제 제기

리포트에서 나가는 버튼과 상단 행의 위치가 화면마다 달랐다

일지 월간 요약은 단독 뒤로 버튼 다음에 월 제목을 배치했고, 드로어에서 연 리포트는 탭바로만 나갈 수 있었다. 홈 리포트는 컨테이너에 별도의 뒤로 버튼을 뒀다.

같은 저장 완료가 모달과 토스트에 다른 모양으로 표시됐다

운동 종료와 직업 변경은 확인 모달에 완료 단계를 다시 표시했다. 공통 토스트는 문구 길이에 따라 폭이 달랐고 일부 성공 호출에는 결과 종류가 없어 오류 배지를 그렸다. 진행 중 알림도 완료 체크를 사용했다.

3. 해결 방안

원칙

  • D1 — 2026-09-14 이번 요청: 첨부 변경을 반영하고 테스트 없이 main까지 병합한다. 테스트 생략을 성공 증거로 바꾸지 않는다.
  • D2 — 배송에 담긴 디자인 기준: 질문은 모달, 결과는 토스트로 표현한다. 모달 320px·토스트 240px을 쓰며 반경·배지·제목 규칙을 맞춘다.

접근

대안판단
ZIP 파일을 저장소 경계와 후속 배선 확인 없이 덮어쓰기기각 — 문서 소유권과 타입·저장 결과 전달이 빠진다.
임시 타입 확장과 완료 모달을 유지하면서 외형만 적용기각 — 복귀 계약과 결과 표시가 여러 곳에 남는다.
기준 blob 대조 후 앱·문서 소유 경로에 델타를 통합하고 기존 상태·저장 경로에 연결채택 — 기존 기능과 데이터 의미를 유지하며 요청한 화면 동작을 완성한다.

4. 적용한 내용

Phase 1 — 화면·계약·기능 연결

  • 일지 월간 요약에 워드마크 행과 같은 행의 뒤로 버튼을 배치했다. 월 제목은 그 아래에 뒀다.
  • 리포트의 onClose를 정식 타입에 추가했다. 드로어 진입은 진입 전 탭으로 돌아가고 홈 리포트는 기존 스택을 한 겹 닫는다. 친구 리포트의 복귀 경로는 유지한다. 준비 중인 스켈레톤과 오류 화면에서도 뒤로 버튼을 유지한다.
  • 복귀 탭은 navigationStorereportReturnTab이 소유한다. 사용자가 직접 탭을 선택하면 해제하고 계정이 바뀌면 초기화하며, 리포트에서 종목 상세를 다녀오는 경로에서는 유지한다.
  • 직업 변경 저장 성공은 확인 모달을 닫고 직업을 변경하였습니다 토스트 1회로 알리도록 연결했다. 실패를 성공으로 표시하지 않는다.
  • 운동 종료의 별도 완료 모달을 없앴다. 자동 저장 성공 알림 뒤 변경 없는 메인 복귀는 기존 onExit 경로를 유지하며, 별도 수정 저장은 그 쓰기 결과를 한 번 알린다.
  • 공통 토스트는 폭 240px·반경 22px·배지 52px·제목 17px으로 맞췄다. 확인 모달은 폭 320px이며 반경·배지·제목 값이 토스트와 같다. 노출 시간은 기존 1.25초를 유지한다.
  • 진행 중 상태는 progress 종류와 스피너로 구분했다. 프로필의 지속 알림 3곳과 Wodup의 서버 처리 계속 안내 1곳에 적용했다.
  • 배송 후속 대상의 완료 문구를 ~하였습니다로 맞추고, 성공 종류 누락과 삭제 종류를 바로잡았다. 사용하지 않는 errorIcon 카피를 제거했다.
  • 계약은 문서 저장소의 기존 파일을 갱신했다. 배송 변경 노트는 이번 3건의 짧은 요약과 이 작업 기록 링크만 추가했다.

주요 결정과 그 근거

앱의 기존 mobileWorkoutFlow 저장 경로를 코드로 확인했다. 자동 저장 후 변경 없이 메인으로 나가면 onExit만 호출하므로 같은 저장을 다시 실행하거나 완료 토스트를 추가하는 별도 상태를 만들 필요가 없다. 이 판단은 코드 확인이며 실제 실행 결과가 아니다.

작업 중 드러난 것

배송의 UiReportLoadingSkeleton()이 매개변수 없이 props.onClose를 참조하고 있었다. 정식 props 전달로 연결해 로딩 중 복귀 버튼도 같은 계약을 사용하도록 수리했다. 배송 프리뷰 기록의 “콘솔 에러 0”은 이번 최종 후보를 검증한 증거가 아니다.

이번 사용자 지시를 위해 PR 커밋과 병합 메시지에 [skip ci]를 사용했다. 앱 후보의 GitHub Actions 실행이 없음을 확인했다. Vercel 프리뷰 체크는 별도로 자동 생성됐으므로 모든 외부 실행이 없었다고 일반화하지 않는다. 검증을 통과한 결과로 기록하거나 영구 워크플로·보호 규칙을 바꾸지 않았다.

5. 적용 결과

항목전 → 후근거·한계
월간 요약·리포트 상단별도 뒤로 버튼 또는 복귀 버튼 없음 → 워드마크 행 좌측 복귀, 로딩·오류 중에도 유지코드 반영, 브라우저 실측 미실행
직업 변경 완료모달 완료 단계 1.4초 → 모달 닫기·성공 토스트 1회코드 반영, 저장 여정 테스트 미실행
운동 종료 완료모달 완료 단계 0.9초 → 저장 결과 토스트코드 반영, 자동·수동 저장 실행 검증 미실행
토스트·모달 폭토스트 가변 폭 → 240px, 모달은 기존 320px 유지CSS 값 대조, 현재 후보 렌더 실측 미실행
토스트 공통 값반경 18px·체크 40px·제목 16px → 반경 22px·배지 52px·제목 17pxCSS 값 대조
진행 중 알림완료 체크 → 진행 스피너 4곳프로필 3곳·Wodup 1곳 코드 반영, 실행 검증 미실행
계약 파일 대조배송 base 3개 → main 3개 모두 일치Git blob 비교
로컬·원격 테스트미실행사용자 지시. 전체·성공·실패·skip 수 및 성공률 산정 불가
앱 mainPR #1594 → b622cc808b47 병합 완료원격 main 갱신 뒤 구현 커밋이 조상임을 확인
문서 main계약·변경 노트·작업 기록·인덱스 7파일이 문서 PR의 main 병합으로 반영
GitHub Actions앱 후보 실행 0건테스트·CI·Actions 자동 배포 생략, 통과 증거 아님
Vercel프리뷰 체크 성공 2건 자동 생성테스트 및 Production 배포 성공과 구분

배송 작성자가 기록한 토스트 크기·콘솔 결과는 디자인 참고치이며 이번 세션의 측정값으로 사용하지 않았다.

6. 이번 개선으로 향상된 것

월간 요약과 리포트에서 사용자가 찾는 복귀 버튼이 워드마크 행에 모인다. 데이터 준비 중에도 복귀 의도를 전달할 수 있다.

질문과 저장 진행은 기존 모달이 맡고 완료는 공통 토스트가 맡는다. 결과 종류와 진행 종류가 분리되어 메시지 길이나 호출 위치에 따라 성공·오류 의미가 달라지지 않도록 계약을 맞춘다.

남은 것

  • 로컬 테스트·빌드·precheck와 원격 테스트·CI는 사용자 지시로 미실행이다. GitHub Actions 자동 배포도 생략했다.
  • Vercel 프리뷰 체크 외에 실제 Production 배포·화면 실행 결과는 확인하지 않았다. 이 미검증 상태를 main 병합 완료와 구분하며, 생략한 검증을 통과로 보고하지 않는다.