기능
로스팅의 매 단계, 모든 디테일.
실시간 BT/ET 모니터링
하드웨어가 멈추지 않는 한 데이터도 멈추지 않습니다.
Python collector가 BT(Bean Temperature)와 ET(Environmental Temperature)를 1초 간격으로 읽어 TCP NDJSON 스트림으로 코어 서비스에 전송합니다. UI는 Canvas API로 직접 렌더링하여 60fps의 부드러운 곡선을 유지합니다. RoR(Rate of Rise)은 30초 롤링 윈도우로 계산되어 차트와 함께 표시됩니다.
페이즈 자동 감지
Turning Point, Dry End, First Crack까지.
도메인 로직이 BT 곡선의 변곡점과 임계 온도 교차를 분석합니다. Turning Point는 최저점 후 상승 추세 확인, Dry End는 150°C 교차 + 히스테리시스, First Crack은 192°C 교차로 자동 마킹됩니다. 수동으로도 언제든지 조정할 수 있습니다.
QC 커핑 세션
다수의 테이스터, 하나의 결과.
SCA 평가 프로토콜 기반 10개 항목 (aroma, flavor, aftertaste, acidity, body, balance, uniformity, clean cup, sweetness, overall) 각 0-10점. Blind 모드와 Open 모드를 지원하며, QR 코드로 참여자를 초대해 모바일에서 동시에 평가할 수 있습니다. 점수는 AppSync GraphQL을 통해 실시간 동기화됩니다.
클라우드 동기화 + 로컬-퍼스트
네트워크 없이도 흐름이 끊기지 않습니다.
모든 데이터는 우선 로컬 SQLite에 저장됩니다. 백그라운드 워커가 sync_outbox 큐를 통해 클라우드로 미러링하며, ETag/If-Match 기반 충돌 감지가 동시 편집을 안전하게 처리합니다. 네트워크가 끊겨도 작업은 계속됩니다.