db6e7e1a5c
demo-final 에서도 clinical mode 테스트 중인데 매 세션마다 Upload 버튼을 눌러야 반영되는 문제. tab-navigation / cloud-mvp 브랜치의 자동 재시도 로직을 demo-final 구조에 맞춰 축소 이식. 원인: - demo-final ClinicalSessionStore.endMeasurement 자체에 자동 업로드 로직이 아예 없었음 (주석: "labdb 업로드는 자동 X — Upload 버튼으로 수동 트리거"). - recentFinalizedFolders / capturedCount 히스토리 구조도 없어 단순 cherry-pick 은 불가. 수정: - endMeasurement: isRegistered (apiKey 존재) 면 uploadAsync 자동 호출. - LabdbAutoRetry object 신설 (services/labdb/LabdbAutoRetry.kt): demo-final 은 lastFinalizedFolder 단일 값만 있으므로 listOfNotNull(lastFinalizedFolder) 로 축소. tab-nav/cloud-mvp 는 recentFinalizedFolders 리스트 사용 (그쪽 브랜치 코드는 그대로). - ClinicalHomeView LaunchedEffect(Unit) 에서 자동 트리거 + 상단 배너 UI: * 진행 중: "자동 업로드 진행 중 · 남은 세션 N · <name>" (파랑, spinner) * 완료: "N uploaded, M failed" (초록/주황) + 확인 버튼 효과: - 세션 종료 후 뒤로가기 → 자동 업로드 시도 → 실패해도 Clinical Home 재진입 시 재시도. 사용자 개입 0. - 여러 세션 밀린 상황도 사용자가 다음 세션 진입할 때마다 이전 세션이 하나씩 재시도됨 (demo-final 구조 특성). - 기존 폴더 구조 / measurement.json 포맷 100% 유지. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>