# Prefect Stack

Полный стек Prefect для event-driven архитектуры:
- **Prefect Server** - UI и API для управления flows
- **Prefect Worker** - выполняет flows (из папки `/prefect`)
- **PostgreSQL** - база данных для Prefect Server

## Архитектура

```
┌─────────────────┐      ┌─────────────────┐      ┌─────────────────┐
│  Prefect Server │◄─────│  Prefect Worker │      │   PostgreSQL    │
│   (UI + API)    │      │  (execute flows)│      │   (metadata)    │
│   Port: 4200    │      │                 │      │                 │
└─────────────────┘      └─────────────────┘      └─────────────────┘
         ▲                        │
         │                        │
         │                        ▼
┌─────────────────┐      ┌─────────────────┐
│  Teams Backend  │      │  Logto + Odoo   │
│  (triggers)     │      │  (integrations) │
└─────────────────┘      └─────────────────┘
```

## Установка на Dokploy

### Вариант 1: Docker Compose (рекомендуется)

1. Создать новый проект типа "Docker Compose" на Dokploy
2. Название: `prefect-stack`
3. Compose file path: `prefect/docker-compose.yml`
4. Port: `4200` (для Prefect UI)
5. GitHub webhook: включить автоматический деплой

### Вариант 2: Отдельные проекты

Если Dokploy не поддерживает docker-compose с build, создать два проекта:

1. **prefect-server-db** - только postgres
2. **prefect-server** - Prefect Server с UI
3. **prefect-worker** (уже существует) - Worker для flows

## Переменные окружения (Infisical)

Создать новую секцию `[prefect-stack]` в Infisical:

```bash
# Prefect Worker - для подключения к Logto и Teams Backend
LOGTO_MANAGEMENT_API_ENDPOINT=https://auth.optovia.ru/api
LOGTO_M2M_APP_ID=<machine-to-machine app ID>
LOGTO_M2M_APP_SECRET=<machine-to-machine app secret>
LOGTO_M2M_RESOURCE=https://default.logto.app/api
TEAMS_BACKEND_URL=http://teams-backend:8000

# PostgreSQL (уже в docker-compose.yml, но можно вынести)
POSTGRES_USER=prefect
POSTGRES_PASSWORD=prefect
POSTGRES_DB=prefect
```

## URL после деплоя

- **Prefect UI**: будет доступен по URL, который выдаст Dokploy (например, `https://prefect-stack-xxxxx.dokploy.app`)
- **Prefect API**: `https://prefect-stack-xxxxx.dokploy.app/api`

## Использование

После деплоя:

1. Открыть Prefect UI по URL
2. Проверить, что deployment `team-created/team-created-deployment` виден
3. Teams Backend должен использовать `PREFECT_API_URL=http://prefect-server:4200/api` для запуска flows

## Тестирование

Запустить flow вручную из Prefect UI:
```bash
prefect deployment run team-created/team-created-deployment \
  --param team_id="test-123" \
  --param team_name="Test Team" \
  --param owner_id="user-456"
```
