hellower/diary-predictor
0
1---2title: Diary Predictor - Health Forecast API3emoji: 🏥4colorFrom: blue5colorTo: green6sdk: docker7sdk_version: latest8app_file: app.py9pinned: false10---11 12# Diary Predictor - Health Forecast API13 14Production-ready Flask приложение для прогнозирования состояния здоровья на основе исторических данных с использованием LSTM нейронных сетей.15 16## Возможности17 18- 🤖 AI-прогнозирование состояния здоровья с использованием LSTM19- 🚨 Автоматическое обнаружение критических состояний20- 📊 Анализ трендов по множественным параметрам21- 🔍 Health check endpoints для мониторинга22- 📝 Структурированное логирование23- 📚 Swagger/OpenAPI документация с интерактивным UI24 25## Технологии26 27- **Flask** - веб-фреймворк28- **TensorFlow/Keras** - LSTM нейронные сети29- **Pandas/NumPy** - обработка данных30- **Scikit-learn** - предобработка данных31- **Gunicorn** - WSGI сервер для production32- **Docker** - контейнеризация33- **Flasgger** - Swagger/OpenAPI документация34 35## API Документация36 37### Swagger UI38 39Интерактивная документация API доступна по адресу:40- **Локально**: `http://localhost:5000/docs` или `http://localhost:7860/docs`41- **Hugging Face Spaces**: `https://<your-username>-diary-predictor.hf.space/docs`42 43Swagger UI предоставляет:44- Полное описание всех эндпоинтов45- Интерактивное тестирование API46- Примеры запросов и ответов47- Схемы данных48 49### API Endpoints50 51### Health Check52```bash53GET /health54```55 56**Ответ:**57```json58{59 "status": "healthy",60 "service": "diary_predictor",61 "version": "1.0.0"62}63```64 65### Health Forecast66```bash67POST /api/v1/health/forecast68Content-Type: application/json69```70 71**Запрос:**72```json73{74 "history": [75 {76 "date": "2024-01-01",77 "systolic_pressure": 120,78 "diastolic_pressure": 80,79 "pulse": 70,80 "temperature": 36.6,81 "weight": 70.0,82 "wellbeing": 5,83 "sleep_hours": 884 },85 {86 "date": "2024-01-02",87 "systolic_pressure": 125,88 "diastolic_pressure": 82,89 "pulse": 72,90 "temperature": 36.7,91 "weight": 70.1,92 "wellbeing": 5,93 "sleep_hours": 7.594 }95 ]96}97```98 99**Успешный ответ:**100```json101{102 "status": "OK",103 "risk_level": "LOW",104 "forecast_date": "2024-01-08",105 "forecast": {106 "systolic_pressure": 122.5,107 "diastolic_pressure": 81.0,108 "pulse": 71.0,109 "temperature": 36.6,110 "weight": 70.2,111 "wellbeing": 5.0,112 "sleep_hours": 7.8113 },114 "alerts": [],115 "recommendation": "Тренды в норме."116}117```118 119**Критическое состояние:**120```json121{122 "status": "CRITICAL",123 "alerts": [124 "CRITICAL: systolic_pressure is 165.0 (Call Doctor!)"125 ],126 "forecast": null,127 "recommendation": "Немедленно обратитесь за медицинской помощью."128}129```130 131## Развертывание на Hugging Face Spaces132 133### Шаг 1: Создание Space134 1351. Перейдите на [Hugging Face Spaces](https://huggingface.co/spaces)1362. Нажмите **"Create new Space"**1373. Заполните форму:138 - **Space name**: `diary-predictor` (или любое другое)139 - **SDK**: выберите **Docker**140 - **Hardware**: выберите подходящий вариант (CPU Basic бесплатно)141 - **Visibility**: Public или Private142 143### Шаг 2: Загрузка кода144 145После создания Space, загрузите код:146 147```bash148# Клонируйте ваш Space репозиторий149git clone https://huggingface.co/spaces/<your-username>/diary-predictor150cd diary-predictor151 152# Скопируйте все файлы проекта в эту директорию:153# - app.py154# - config.py155# - requirements.txt156# - Dockerfile157# - services/ (папка с ai_engine.py)158# - README.md159 160# Закоммитьте и запушьте161git add .162git commit -m "Initial commit: Diary Predictor API"163git push164```165 166### Шаг 3: Автоматическая сборка167 168Hugging Face Spaces автоматически:169- Соберет Docker образ из `Dockerfile` (5-10 минут)170- Установит все зависимости из `requirements.txt`171- Запустит приложение на порту 7860172- Проксирует трафик через HTTPS173 174### Шаг 4: Проверка работы175 176После успешной сборки, проверьте:177 178```bash179# Health check180curl https://<your-username>-diary-predictor.hf.space/health181 182# Swagger документация (откройте в браузере)183# https://<your-username>-diary-predictor.hf.space/docs184 185# Тестовый запрос прогноза186curl -X POST https://<your-username>-diary-predictor.hf.space/api/v1/health/forecast \187 -H "Content-Type: application/json" \188 -d '{189 "history": [190 {191 "date": "2024-01-01",192 "systolic_pressure": 120,193 "diastolic_pressure": 80,194 "pulse": 70,195 "temperature": 36.6,196 "weight": 70.0,197 "wellbeing": 5,198 "sleep_hours": 8199 },200 {201 "date": "2024-01-02",202 "systolic_pressure": 125,203 "diastolic_pressure": 82,204 "pulse": 72,205 "temperature": 36.7,206 "weight": 70.1,207 "wellbeing": 5,208 "sleep_hours": 7.5209 }210 ]211 }'212```213 214### Важные замечания215 216- **Порт**: Приложение автоматически использует порт 7860 (стандарт для Spaces)217- **Логи**: Доступны в интерфейсе Spaces в разделе "Logs"218- **Обновления**: Просто делайте `git push` - Spaces пересоберет автоматически219- **Таймауты**: Запросы должны завершаться за 60 секунд (для бесплатных Spaces)220 221### Troubleshooting222 223**Ошибка сборки:**224- Проверьте логи в интерфейсе Spaces225- Убедитесь, что `Dockerfile` корректен226- Проверьте `requirements.txt`227 228**Приложение не отвечает:**229- Убедитесь, что приложение слушает на `0.0.0.0:7860`230- Проверьте health endpoint: `/health`231- Посмотрите логи в интерфейсе Spaces232 233**Медленная работа:**234- TensorFlow может быть медленным на CPU235- Рассмотрите GPU Space (требует подписки)236- Оптимизируйте модель237 238## Структура проекта239 240```241diary-predictor/242├── app.py # Главный файл приложения243├── config.py # Конфигурация244├── requirements.txt # Python зависимости245├── Dockerfile # Docker образ для Spaces246├── README.md # Документация247└── services/248 ├── __init__.py249 └── ai_engine.py # AI сервис для прогнозирования250```251 252## Переменные окружения253 254| Переменная | Описание | По умолчанию |255|------------|----------|--------------|256| `DEBUG` | Режим отладки | `False` |257| `PORT` | Порт приложения | `7860` (для Spaces) |258| `HOST` | Хост приложения | `0.0.0.0` |259| `LOOK_BACK_DAYS` | Количество дней для анализа | `7` |260| `LOG_LEVEL` | Уровень логирования | `INFO` |261 262## Локальная разработка263 264```bash265# Установите зависимости266pip install -r requirements.txt267 268# Запустите в режиме разработки269export DEBUG=True270python app.py271```272 273## Безопасность274 275- ✅ Приложение запускается от непривилегированного пользователя в Docker276- ✅ Валидация входных данных277- ✅ Обработка ошибок278- ✅ Структурированное логирование279- ⚠️ Для production добавьте:280 - Rate limiting281 - Authentication/Authorization282 - HTTPS/TLS283 - CORS настройки284 285## Лицензия286 287MIT288 