SFTScast

Public Platform

Client / Industry · 주식회사 바이레온 · 제주대학교 감염내과 (공공 보건 · 감염병 위험 예측)

제주 SFTS 위험 예보 — 기상 자료로 2주 앞 감염병 위험을 알리는 공공 보건 예보 서비스

SFTScast 로고
SFTScast 대표 화면 (PC)

Problem

문제

SFTS는 백신·치료제가 없어 물리지 않는 것이 유일한 예방인데, 주민과 방문객이 "오늘 풀밭에 가도 되는지"를 판단할 지역 단위 정보가 없었습니다.

연구팀이 만든 예측 모델은 2주 전 기상으로 오늘의 확률을 내는 구조라, 이 시간 차를 이해시키지 못하면 숫자가 오해를 낳기 쉬웠습니다.

연구 결과를 논문이나 보고서가 아니라 누구나 매일 보는 서비스로 바꾸고, 공공기관·보건소가 데이터를 가져다 쓸 수 있어야 했습니다.

Solution

해결

확률을 관심·주의·경고·위험 네 단계와 한 문장 행동 요령으로 번역해 첫 화면에 두고, 기반 관측일과 당시 기온·습도를 카드마다 붙여 2주 지연 구조를 그대로 보여 줬습니다.

권역 선택 지도, 14일 막대·표, 권역 비교·추이 차트를 외부 라이브러리 없이 SVG로 그려 가볍게 만들고, 휴대전화에서는 하단 탭으로 같은 흐름을 유지했습니다.

날씨를 바꿔 보는 시뮬레이터로 모델이 무엇에 반응하는지 체감하게 하고, 권역별 CSV와 공개 API로 예측값을 열어 두었습니다.

Scope

수행 범위

  • 기획 · 화면 설계
  • Frontend (Next.js)
  • 예측 API (FastAPI) 연동·배포
  • SVG 지도·차트
  • CSV 내보내기
  • 예측 모델 설계·학습은 고객사 연구팀

Architecture

시스템 구조

Next.js 프런트가 FastAPI 예측 API(/api/v1)에서 권역별 14일 예보·시뮬레이션 결과·모델 메타 정보를 받아 SVG 지도와 차트로 그립니다. 기상청 공공데이터의 4개 관측지점 자료를 매일 모아 2주 지연 구조의 Gradient Boosting 모델로 확률을 계산하고, 분위수 기반 임계값으로 네 단계 경보를 매깁니다. 같은 예측값을 CSV 내려받기로도 제공합니다.

Delivery

핵심 결정

  1. 1. 2주 지연을 UI에 드러내기

    모델 구조를 단순화해 숨기는 대신 "2주 전 기상 조건으로 계산" 문구와 기반 관측일을 모든 예보 옆에 두어, 이용자가 오늘 날씨와 혼동하지 않게 했습니다.

  2. 2. 라이브러리 없는 SVG 지도·차트

    지도 SDK나 차트 라이브러리를 넣지 않고 제주 윤곽·관측지점·막대·꺾은선을 직접 그려, 저사양 휴대전화와 느린 망에서도 첫 화면이 빠르게 뜨게 했습니다.

  3. 3. 운영 상태를 화면에 알리기

    기상 자료가 아직 안 들어왔거나 모델 파일이 없을 때 조용히 옛 값을 보여 주지 않고, 상단 안내로 상태를 밝히고 근사값임을 표시하도록 했습니다.

Result

결과

제주 북·남·동·서부 14일 예보
4개 권역
매일 갱신
경보와 행동 요령
4단계
관심·주의·경고·위험
예측값 공개
CSV · API
권역별·일괄 내려받기

Highlights

핵심 포인트

  • 2주 지연 구조를 숨기지 않는 화면

    오늘의 위험이 2주 전 날씨로 결정된다는 모델 구조를 그대로 드러냈습니다. 예보 카드마다 기반 관측일과 당시 기온·습도를 함께 보여 숫자를 오해하지 않게 했습니다.

  • 확률보다 단계와 행동 요령

    확률은 크게 보여 주되, 관심·주의·경고·위험 네 단계 이름과 "풀밭에 들어갈 때는 긴 옷과 기피제를" 같은 한 문장 행동 요령을 항상 붙였습니다. 경보 기준선은 비교 차트와 추이 차트에 점선으로 같이 그렸습니다.

  • 직접 그린 지도와 차트

    외부 지도·차트 라이브러리 없이 제주 윤곽과 4개 관측지점, 14일 막대, 권역 비교 막대, 추이 꺾은선을 SVG로 그려 번들을 가볍게 유지했습니다. 지도에서 지점을 누르면 아래 예보가 그 권역으로 바뀝니다.

  • 데이터를 열어 두는 구조

    권역별 예측값은 CSV 내려받기와 공개 API로 제공하고, 모델 종류·학습일·경보 임계값 같은 메타 정보도 API로 확인할 수 있게 했습니다. 기상 자료 지연이나 모델 파일 부재 같은 운영 상태는 화면 상단 안내로 그대로 알립니다.

Technology

기술 (도구)

문제 해결을 위해 선택한 기술입니다. 스택 자체보다 요구사항·운영 조건에 맞춘 선택입니다.

Next.jsReactTypeScriptSVG 지도·차트 (라이브러리 없음)FastAPIPythonGradient Boosting 예측 모델 연동기상청 공공데이터CSV 내보내기nginx

Screens

화면

SFTScast 위험 예보 첫 화면 — 제주 전체 요약, 권역 선택, 오늘 단계 카드, 지도, 14일 막대
위험 예보 · 오늘 단계 카드와 권역 지도, 앞으로 2주 막대
SFTScast 지역 비교 — 오늘 권역별 확률 막대, 14일 추이 꺾은선, 권역별 요약 카드
지역 비교 · 경보 기준선이 있는 비교 막대와 14일 추이
SFTScast 날씨로 계산해 보기 — 기온·습도·강수량 슬라이더와 결과 단계 카드
날씨로 계산해 보기 · 2주 전 날씨를 바꿔 보는 시뮬레이터
SFTScast 데이터 내려받기 — 권역별 14일 단계 띠와 CSV 내려받기 버튼
데이터 내려받기 · 권역별 CSV와 일괄 내려받기
SFTScast 서비스 안내 — 계산 방식 설명과 경보 단계·행동 요령 표
서비스 안내 · 계산 방식과 경보 단계별 행동 요령
SFTScast 모바일 위험 예보 — 권역 선택 버튼, 오늘 단계 카드, 하단 탭
모바일 · 위험 예보와 하단 탭 내비게이션
SFTScast 모바일 시뮬레이터 — 슬라이더 세 개와 결과 카드
모바일 · 날씨로 계산해 보기

Follow · Ask · Work

이 글이 도움이 됐다면

짧은 작업 기록과 데모는 인스타그램에 올립니다. 만들고 싶은 것이 있다면 프로젝트 의뢰나 협업 제안도 편하게 보내 주세요.