# Инструкция по развёртыванию обновлённого FastAPI на удалённом сервере
## Шаг 1: Синхронизация кода на удалённый сервер
Используйте `rsync` для копирования обновленного проекта:
```bash
rsync -avz --delete /Users/aleksandrhohon/Downloads/OpenWeatherMap_MCP-main/fastapi_udalennii/ \
192.168.0.137:/path/to/fastapi_udalennii/
```
Или, если используется SSH с определённым портом или пользователем:
```bash
rsync -avz --delete -e "ssh -l username" /Users/aleksandrhohon/Downloads/OpenWeatherMap_MCP-main/fastapi_udalennii/ \
192.168.0.137:/path/to/fastapi_udalennii/
```
## Шаг 2: SSH подключение к удалённому серверу
```bash
ssh username@192.168.0.137
cd /path/to/fastapi_udalennii
```
## Шаг 3: Активация виртуального окружения
```bash
source venv/bin/activate
```
## Шаг 4: Установка зависимостей (если нужны новые)
```bash
pip install -r requirements.txt
```
## Шаг 5: Запуск миграций Alembic
```bash
alembic upgrade head
```
Или, если это первый запуск:
```bash
alembic revision --autogenerate -m "Initial schema"
alembic upgrade head
```
## Шаг 6: Перезагрузка FastAPI сервиса
Если FastAPI запущен через `gunicorn` (supervisor/systemd):
```bash
# Если используется supervisor:
supervisorctl restart fastapi_app
# Или если используется systemd:
sudo systemctl restart fastapi_app
# Или вручную (убить процесс и перезапустить):
pkill -f "gunicorn.*fastapi"
cd /path/to/fastapi_udalennii
gunicorn --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 app.main:app
```
## Шаг 7: Проверка новых endpoints
После перезагрузки, проверьте что новые endpoints работают:
```bash
# Health check
curl http://192.168.0.137:8000/health
# OpenAPI документация
curl http://192.168.0.137:8000/docs
# Пример запроса к accruals
curl -X GET http://192.168.0.137:8000/accruals/
# Пример запроса к статистике
curl http://192.168.0.137:8000/stats/summary
```
## Новые endpoints
Все новые endpoints доступны в FastAPI:
### Accruals endpoints:
- `POST /accruals/` - создание новой записи об начисления
- `GET /accruals/` - получение списка начисления с фильтрацией (параметры: `skip`, `limit`, `service_group`, `sales_platform`, `accrual_type`)
### Stats endpoints:
- `GET /stats/summary` - получение статистики по всем начислениям
- `GET /stats/accruals` - получение статистики с фильтрацией (параметры: `service_group`, `sales_platform`, `accrual_type`)
## Структура обновлений
Модули были изменены:
- `app/models.py` - добавлена таблица `accruals`
- `app/schemas.py` - добавлены Pydantic модели: `AccrualCreate`, `Accrual`, `AccrualStats`
- `app/crud.py` - добавлены функции: `create_accrual`, `get_accruals`, `get_accrual_stats`
- `app/main.py` - добавлены новые endpoints для accruals и stats
- `alembic/versions/0002_create_accruals_table.py` - миграция для создания таблицы accruals
## Откат изменений (если нужно)
Если что-то пошло не так, откатить миграцию:
```bash
alembic downgrade -1
```
И перезагрузить приложение.