Демо-платформа для мониторинга штабелей угля, прогноза риска возгорания на горизонте 3 суток и просмотра фактических воспламенений.
- Backend: FastAPI + SQLite (файл
backend/db.sqlite3). Отдает стек данных, климат, воспламенения, принимает CSV и логирует историю загрузок. Модель CatBoost подгружается из MLflow поMLFLOW_RUN_ID(см. переменные окружения). - Frontend: статический HTML/CSS/JS (
frontend/). Работает без сборки, обращается к API поhttp://127.0.0.1:8000. - MLflow: каталог
mlruns/содержит сохранённые запуски и артефакты модели.
- Установите зависимости (Python 3.11+):
python -m venv venv venv\Scripts\activate pip install -r requirements.txt
- Запустите бэкенд:
API будет доступен на
uvicorn backend.main:app --reload
http://127.0.0.1:8000(health:/health). - Запустите фронтенд (любой статический сервер):
Откройте
python -m http.server 8001 --directory frontend
http://localhost:8001. - (Опционально) Быстрый старт одним скриптом:
start_all.bat(поднимает backend + http.server на 8001).
MLFLOW_RUN_ID— id прогона в MLflow (по умолчанию зашит демо-run).MLFLOW_ARTIFACT_PATH— имя артефакта модели (по умолчаниюcat_model).MODEL_THRESHOLD— порог вероятности для риска 3 суток (по умолчанию 0.5).AIR_TEMP_THRESHOLD— порог температуры воздуха (по умолчанию 50.0).- Менять базовый URL фронта можно в
frontend/app.js(API_BASE).
GET /health— проверка.GET /stacks— список штабелей с флагом риска и вероятностью.GET /climate?stack_id=ID— климатический ряд по штабелю.GET /fires?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD— список воспламенений (фильтр по датам).POST /upload— загрузка CSV (multipart/form-data, ключfile), сохраняется история.GET /upload/history— журнал загрузок.
- Логин/пароль — базовая HTTP-авторизация, вводится на форме входа.
- Карточки показывают: число безопасных/рисковых штабелей, порог воздуха, время последнего обновления.
- Таблица “Штабели” — кликабельные строки. При выборе справа отображаются детали + график климата.
- Блок “Воспламенения” — таблица с фильтром по датам; после загрузки CSV с новыми данными обновляется список.
- Экран “Загрузка CSV” — drag-and-drop или выбор файла, история последних загрузок.
Если API недоступно, фронт использует fallback-данные, чтобы интерфейс оставался заполненным.