feat: Fix nutrition service and add location-based alerts
All checks were successful
continuous-integration/drone/push Build is passing

Changes:
- Fix nutrition service: add is_active column and Pydantic validation for UUID/datetime
- Add location-based alerts feature: users can now see alerts within 1km radius
- Fix CORS and response serialization in nutrition service
- Add getCurrentLocation() and loadAlertsNearby() functions
- Improve UI for nearby alerts display with distance and response count
This commit is contained in:
2025-12-13 16:34:50 +09:00
parent 3050e084fa
commit cfc93cb99a
34 changed files with 7016 additions and 17 deletions

167
FRONTEND_README.md Normal file
View File

@@ -0,0 +1,167 @@
# 🎨 Фронтенд для тестирования API
Простой, но функциональный веб-интерфейс для тестирования всех ендпоинтов Women's Safety App API.
## 🚀 Запуск
### Способ 1: Использование скрипта
```bash
bash run_frontend.sh
```
### Способ 2: Прямой запуск Python сервера
```bash
cd /home/trevor/dev/chat
python3 -m http.server 8888 --bind 127.0.0.1
```
## 📖 Использование
1. **Откройте браузер** и перейдите на: http://localhost:8888/frontend_test.html
2. **Зарегистрируйтесь или войдите**:
- Используйте вкладку "Регистрация" для создания новой учётной записи
- Используйте вкладку "Вход" для входа с существующей учётной записью
- После входа вы получите JWT токен
3. **Протестируйте API**:
- **👤 Пользователи**: управление профилем и просмотр пользователей
- **🚨 Алерты**: создание и просмотр экстренных алертов
- **📅 Календарь**: добавление и просмотр событий календаря
- **🔔 Уведомления**: отправка уведомлений
- **❤️ Health**: проверка статуса всех сервисов
## 🎯 Основные возможности
### 🔐 Аутентификация
- ✅ Регистрация новых пользователей
- ✅ Вход в систему с получением JWT токена
- ✅ Сохранение токена в локальном хранилище
- ✅ Копирование токена в буфер обмена
### 👤 Управление пользователями
- ✅ Получение профиля текущего пользователя
- ✅ Просмотр всех пользователей
- ✅ Обновление информации профиля
### 🚨 Emergency System
- ✅ Создание экстренных алертов
- ✅ Просмотр существующих алертов
- ✅ Указание местоположения (широта/долгота)
- ✅ Выбор типа экстренного события
### 📅 Календарь здоровья
- ✅ Просмотр записей календаря
- ✅ Добавление новых записей
- ✅ Отслеживание цикла, настроения и энергии
- ✅ Указание даты и типа события
### 🔔 Уведомления
- ✅ Отправка уведомлений
- ✅ Установка приоритета
- ✅ Кастомизация заголовка и текста
### ❤️ Здоровье сервиса
- ✅ Проверка статуса всех микросервисов
- ✅ Мониторинг API Gateway
- ✅ Проверка доступности каждого сервиса
## 🎨 Интерфейс
### Левая панель
- Аутентификация и навигация
- Вход и регистрация
- Список всех ендпоинтов
### Правая панель
- Тестирование API
- 5 основных категорий функций
- Просмотр результатов в JSON формате
## 📱 Функции браузера
- **Адаптивный дизайн**: работает на мобильных устройствах
- **Красивый UI**: градиентный фон и современный дизайн
- **Подсветка кода**: JSON результаты отображаются в читаемом формате
- **Сохранение токена**: автоматическое сохранение в localStorage
- **Копирование**: быстрое копирование токена в буфер обмена
## 🔧 Примеры использования
### Регистрация
1. Откройте вкладку "Регистрация"
2. Заполните Email, имя пользователя, пароль
3. Нажмите "✍️ Зарегистрироваться"
4. После успешной регистрации используйте эти учётные данные для входа
### Создание алерта
1. Откройте вкладку "🚨 Алерты"
2. Установите координаты (по умолчанию Нью-Йорк)
3. Выберите тип алерта
4. Нажмите "🚨 Создать алерт"
### Проверка здоровья системы
1. Откройте вкладку "❤️ Health"
2. Нажмите "🔍 Проверить все сервисы"
3. Посмотрите статус всех 5 микросервисов
## 🌐 API URLs
По умолчанию фронтенд подключается к:
- **API Gateway**: http://localhost:8000
- **User Service**: http://localhost:8001
- **Emergency Service**: http://localhost:8002
- **Calendar Service**: http://localhost:8004
- **Notification Service**: http://localhost:8005
Для изменения IP адреса, отредактируйте переменную `API_BASE` в `frontend_test.html`
## 🚨 CORS
Убедитесь, что все микросервисы имеют правильно настроенный CORS для работы с фронтенда:
```python
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
```
## 📊 Технические детали
- **Язык**: HTML5 + CSS3 + Vanilla JavaScript
- **Размер**: ~15KB (один файл)
- **Зависимости**: нет (чистый JavaScript)
- **Браузер**: все современные браузеры (Chrome, Firefox, Safari, Edge)
## ✅ Протестировано
- ✅ Регистрация и вход
- ✅ Управление профилем
- ✅ Создание и просмотр алертов
- ✅ Управление календарём
- ✅ Отправка уведомлений
- ✅ Проверка здоровья сервисов
- ✅ Сохранение токена
- ✅ CORS запросы
## 🎓 Образовательная ценность
Этот фронтенд показывает:
- Как работать с REST API
- Как использовать JWT токены
- Как обрабатывать асинхронные операции (fetch API)
- Как управлять состоянием браузера (localStorage)
- Как создавать адаптивный UI без фреймворков
## 📝 Лицензия
MIT License - свободен для использования и модификации
---
**Создано**: 2025-12-13
**Версия**: 1.0.0
**Статус**: Полностью функционален ✅