safeeyes
간단하고 아름다운 휴식 알림으로 눈 피로 보호
전염병 인텔리전스 시스템, 179개국 현지 보고서와 공식 감시 데이터에서 이상 감지·대응 시나리오 제공
An infectious disease intelligence system that detects anomalies in local-language reporting from 179 countries and in official surveillance data, attaches intervention scenarios to every alert, and s
건강Python · TypeScriptGitHub @kimdaeheuk-hash온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
An infectious disease intelligence system that detects anomalies in local-language reporting from 179 countries and in official surveillance data, attaches intervention scenarios to every alert, and scores each of its forecasts against the official declarations that follow.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Infectious-disease early-warning system: a FastAPI inference engine
(epiweather-api) plus a Next.js dashboard (epiweather-web). It fuses
news, weather, mobility, genomic, and deforestation signals into outbreak
alerts with honest provenance on every record.
Submitted to the Meta Global AI Developer Hackathon 2026 (Oct 26 – Nov 4, 2026).
Per the event rule that the demo shows event-window work, the submission centers on what changed in the window:
epiweather-api/algorithms/meta_api.py (new): single source of truth
for the Meta Model API convention — default muse-spark-1.3 on
https://api.meta.ai/v1 (OpenAI-compatible chat/completions).epiweather-api/algorithms/aegiron_model.py: extraction order is now
NIM → Meta → local → Claude fallback; AEGIRON_META_FIRST=on
forces Meta first for the demo.ai_provider=meta_model_api (+
data_sovereign flag); calls are observed in the capability ledger
and surfaced on /api/status.epiweather-api/tests/test_meta_api.py (new): 17 tests, all mocked
(no outbound HTTP per repo policy).who_don_declarations.py + country_resolve.py: declaration
announcements now carry resolved country evidence with logged basis.extracted_signals.ai_provider), and /api/status separates
"configured" from "recently observed working" — a claim this repo was
built around after real incidents.AEGIRON_REQUIRE_LOCAL=on, sensitive data is blocked
before leaving, and self-hosted OpenAI-compatible bases count as
sovereign automatically.Requirements: Python 3.11+, Node 20+, a Meta Model API key (dev.meta.ai → API keys).
# 1. API
cd epiweather-api
pip install -r requirements.txt
cp .env.example .env # then set META_MODEL_API_KEY (and data-source keys)
uvicorn main:app --port 8000 # Swagger UI: http://localhost:8000/docs
# 2. Web (new terminal)
cd epiweather-web
npm install
cp .env.example .env.local # NEXT_PUBLIC_API_URL=http://localhost:8000
npm run dev # http://localhost:3000
Key env vars (API .env):
| Variable | Purpose |
|---|---|
META_MODEL_API_KEY | Meta Model API key (MODEL_API_KEY also accepted) |
META_MODEL_API_MODEL | Override (default muse-spark-1.3) |
AEGIRON_META_FIRST | on = try Meta before NIM (demo forcing) |
EPIWEATHER_API_KEY | Required: protects POST endpoints (fail-closed 503) |
cd epiweather-api
META_MODEL_API_KEY=<key> python -c "
import sys; sys.path.insert(0,'.')
from algorithms import aegiron_model as am
r, a = am.extract_signal_detailed('DRC 에볼라 신규발생', source='demo')
print(r.get('ai_provider'), '|', r.get('disease'), '|', r.get('country_iso3'))"
# expected: meta_model_api | 에볼라 | COD
Then open http://localhost:8000/api/status → capability_health →
meta_text shows verified: true after a real call.
epiweather-api/ — FastAPI service: main.py, collector.py, db.py,
algorithms/ (inference layers), tests/ (2389 tests, mocked HTTP).epiweather-web/ — Next.js 16 dashboard (i18n, Leaflet maps).epiweather-handoff/ — engine sources reused by the API.docs/ — ops notes. DEMO.md — 3-minute demo script.test_main_endpoints.py needs
localhost sockets, blocked in some sandboxes (fails identically without
this change — environmental, not a regression).