모든 글

【TECH】MonoPump의 로컬 우선 건강 데이터 설계

MonoPump가 심박 기록을 유용하게 유지하면서 개인 측정 데이터를 클라우드 데이터나 의료 판단으로 만들지 않는 방식입니다.

개인정보로컬 우선건강 데이터iOS
【TECH】MonoPump의 로컬 우선 건강 데이터 설계

심박 앱에는 서로 다른 방향으로 당기는 두 책임이 있습니다. 기록을 충분히 남겨야 유용하지만, 개인 건강 데이터를 일반 분석 데이터처럼 다루면 안 됩니다. MonoPump는 이 균형에서 로컬 우선을 선택합니다.

로컬 보호 파일로 표현된 스마트폰 심박 기록
로컬 우선 설계는 기본 측정 경로를 비공개이고 단순하게 유지합니다.

측정 알고리즘이 주목받기 쉽지만, 결과 화면이 사라진 뒤 제품이 믿을 만한지는 데이터 층이 결정합니다.

기록은 의도적으로 작게 유지한다

한 번의 심박 기록이 의료 차트처럼 커질 필요는 없습니다. MonoPump는 날짜, BPM, 사용자, 선택적 상황, 품질, 신뢰도, 측정 시간, 출처, 메모 정도만 저장합니다.

Entity relationship diagram Preparing diagram
View diagram source
erDiagram
    USER ||--o{ HEART_RATE_RECORD : owns
    USER {
        uuid id
        string name
        string avatar
    }
    HEART_RATE_RECORD {
        uuid id
        date measuredAt
        int bpm
        double qualityScore
        double confidenceScore
        string context
        string source
    }

절제는 의도된 설계입니다. 경험을 개선하지 않고 사용자가 요구하지 않은 필드는 쉽게 모을 수 있다는 이유만으로 모으지 않습니다.

로컬 저장은 제품 경계를 바꾼다

MonoPump는 Application Support 아래 JSON 파일에 기록을 저장하고, 원자적 쓰기와 iOS 파일 보호를 사용합니다. UserDefaults는 가벼운 설정과 마이그레이션 호환에 남겨 둡니다.

Flow diagram Preparing diagram
View diagram source
flowchart LR
    A[측정 결과] --> B[HeartRateViewModel]
    B --> C[JSON 인코딩]
    C --> D[원자적 쓰기]
    D --> E[Application Support]
    E --> F[iOS file protection]

기본 흐름에 계정, 서버, 동기화 한도, 네트워크 권한이 필요 없다는 뜻입니다.

추세는 진단이 아니라 설명이어야 한다

분석 층은 일부러 겸손합니다. 평균, 중앙값, 최소, 최대, 최근 윈도우 비교, 활성 일수, 품질 요약을 계산합니다. HRV, 스트레스, 수면 품질, 질병 위험, 치료 조언은 추론하지 않습니다.

Flow diagram Preparing diagram
View diagram source
flowchart TD
    R[저장된 BPM 기록] --> S[날짜순 정렬]
    S --> A[평균과 중앙값]
    S --> M[최소와 최대]
    S --> W[최근과 이전 윈도우 비교]
    S --> Q[품질 요약]
    A --> O[설명적 인사이트]
    M --> O
    W --> O
    Q --> O

소비자 카메라 앱은 패턴을 알아차리도록 도울 수 있지만 의사처럼 행동해서는 안 됩니다. 적게 모으고, 로컬에 저장하고, 조심스럽게 설명하고, 사용자가 원할 때 내보낸다. 이것이 MonoPump의 기준입니다.

MonoWare에서

MonoPump에는 이 노트의 더 많은 맥락이 있습니다.

제품 사이트를 열거나 MonoPump로 필터된 노트를 계속 읽으세요.

뉴스레터

개인정보와 제품 엔지니어링 노트를 가끔 보내드립니다.