# Миграция GooSeek на микросервисную архитектуру

**Ссылки:** [01-perplexity-analogue-design.md](./01-perplexity-analogue-design.md), [02-k3s-microservices-spec.md](./02-k3s-microservices-spec.md)

---

## Текущий статус

### Реализовано (Фаза 0–2)

| Компонент | Описание | Статус |
|-----------|----------|--------|
| **services/discover-svc** | Агрегация новостей, Redis кэш | ✅ |
| **services/search-svc** | SearXNG proxy, кэш по query_hash | ✅ |
| **services/finance-svc** | Market summary, heatmap, news (базово) | ✅ |
| **services/travel-svc** | Trending, Inspiration (базово) | ✅ |
| **services/cache-worker** | Pre-compute: discover, finance, travel | ✅ |
| **Redis, PostgreSQL** | Локально или в K8s (см. deploy/k3s) | ✅ |
| **api/v1/discover** | Прокси к discover-svc | ✅ |
| **services/library-svc** | История тредов (PostgreSQL) | ✅ |
| **services/projects-svc** | Collections, Spaces (заглушка) | ✅ |
| **api/v1/library** | Прокси к library-svc | ✅ |
| **api/v1/collections** | Прокси к projects-svc | ✅ |
| **deploy/k3s/** | library-svc, projects-svc, chat-svc, ingress | ✅ |
| **services/chat-svc** | LLM, Mastra, Writer, Classifier, Researcher | ✅ |
| **api/chat** | При CHAT_SVC_URL проксирует на chat-svc | ✅ |
| **services/auth-svc** | SSO, JWT, Bearer, GET /api/auth/me (миграция из apps/auth-mcs) | ✅ |
| **services/memory-svc** | Персональная память AI, Enterprise Memory | ✅ |
| **api/v1/memory** | Прокси к memory-svc | ✅ |
| **services/create-svc** | Create (stub), Export PDF/MD | ✅ |
| **api/v1/create, api/v1/export** | Прокси к create-svc | ✅ |
| **finance-svc** | + analyst-ratings, sec-filings, etf-holdings (FMP) | ✅ |
| **search-svc** | + GET /api/v1/patents (SearXNG) | ✅ |
| **api/v1/patents** | Прокси к search-svc | ✅ |
| **services/notifications-svc** | Web Push, preferences, reminders | ✅ |
| **api/v1/notifications** | Прокси к notifications-svc | ✅ |
| **services/billing-svc** | Тарифы Free/Pro/Max, ЮKassa, подписки | ✅ |
| **api/v1/billing** | Прокси к billing-svc | ✅ |
| **services/audit-svc** | Enterprise audit logs (stub) | ✅ |
| **api/v1/admin/audit-logs** | Прокси к audit-svc | ✅ |
| **страница /profile** | Account, Preferences, Personalize, Billing, Connectors | ✅ |
| **services/auth-svc** | SSO, JWT, Bearer, GET /api/auth/me | ✅ |
| **services/web-svc** | UI + прокси (миграция из apps/frontend) | ✅ |
| **services/geo-device-svc** | Геопозиция, устройство | ✅ |
| **services/localization-svc** | Локализация | ✅ |

### В разработке / запланировано

- **Миграция apps → services завершена:** auth-svc, web-svc, geo-device-svc, localization-svc в services/
- **API Gateway** (Traefik/Kong) для production

### deploy/k3s — HPA и PDB

| Файл | Описание |
|------|----------|
| hpa.yaml | HPA для chat-svc, search-svc, discover-svc, finance-svc; PDB для chat, search |

---

## Запуск (только Kubernetes)

Развёртывание в Kubernetes (Docker Desktop → Settings → Kubernetes, не Docker-контейнеры):

```bash
./deploy/k3s/deploy.sh
```

Конфигурация сервисов: `deploy/k3s/deploy.config.yaml`. Миграции БД выполняются автоматически при деплое.

---

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

| Переменная | Описание | По умолчанию |
|------------|----------|--------------|
| `REDIS_URL` | Redis connection string | `redis://localhost:6379` |
| `SEARXNG_URL` | SearXNG instance | `https://searx.tiekoetter.com` |
| `SEARXNG_FALLBACK_URL` | Доп. инстансы (через запятую) | — |
| `DISCOVER_SVC_URL` | discover-svc (для frontend proxy) | `http://localhost:3002` |
| `SEARCH_SVC_URL` | search-svc — при установке frontend вызывает его вместо прямого SearXNG | `http://localhost:3001` |
| `CHAT_SVC_URL` | chat-svc — при установке /api/chat проксирует сюда | `http://localhost:3005` |
| `MEMORY_SVC_URL` | memory-svc (персональная память AI) | `http://localhost:3010` |
| `CREATE_SVC_URL` | create-svc (Create, Export) | `http://localhost:3011` |
| `NOTIFICATIONS_SVC_URL` | notifications-svc (Web Push, reminders) | `http://localhost:3013` |
| `BILLING_SVC_URL` | billing-svc (тарифы, подписки, ЮKassa) | `http://localhost:3008` |
| `AUTH_SERVICE_URL` | auth-svc (Bearer validation) | `http://localhost:3014` |
| `GHOST_URL`, `GHOST_CONTENT_API_KEY` | Ghost для topic=gooseek (discover-svc) | — |
| `NEWS_REGION` | Регион новостей: america\|eu\|russia\|china\|auto | `auto` |
| `FMP_API_KEY` | Financial Modeling Prep (finance summary, analyst-ratings, sec-filings, etf-holdings) | — |
| `YOOKASSA_SHOP_ID`, `YOOKASSA_SECRET` | ЮKassa для billing-svc (оплата Pro/Max) | — |
| `BILLING_RETURN_URL` | URL возврата после оплаты | `http://localhost:3000/profile?tab=billing` |
| `POSTGRES_URL` | PostgreSQL (library-svc, memory-svc, notifications-svc, billing-svc) | `postgresql://gooseek:gooseek@localhost:5432/gooseek` |

---

## Сборка Docker-образов

```bash
# discover-svc, search-svc, notifications-svc, auth-svc
docker build -t gooseek/discover-svc:latest -f services/discover-svc/Dockerfile services/discover-svc
docker build -t gooseek/search-svc:latest -f services/search-svc/Dockerfile services/search-svc
docker build -t gooseek/notifications-svc:latest -f services/notifications-svc/Dockerfile services/notifications-svc
docker build -t gooseek/auth-svc:latest -f services/auth-svc/Dockerfile services/auth-svc

# chat-svc, create-svc, billing-svc
docker build -t gooseek/chat-svc:latest -f services/chat-svc/Dockerfile services/chat-svc
docker build -t gooseek/create-svc:latest -f services/create-svc/Dockerfile services/create-svc
docker build -t gooseek/billing-svc:latest -f services/billing-svc/Dockerfile services/billing-svc
docker build -t gooseek/audit-svc:latest -f services/audit-svc/Dockerfile services/audit-svc
```

## deploy/k3s — манифесты

| Файл | Описание |
|------|----------|
| search-svc.yaml | SearXNG proxy, Redis cache |
| notifications-svc.yaml | Web Push, PostgreSQL, VAPID |
| auth-svc.yaml | better-auth, namespace gooseek-auth, PVC |
| discover-svc.yaml | + GHOST_URL, GHOST_CONTENT_API_KEY (optional) |
| cache-worker.yaml | CronJob finance/discover/travel, activeDeadlineSeconds |
| hpa.yaml | HPA + PDB для chat, search, discover, finance, travel, memory |
| audit-svc.yaml | Enterprise audit logs |
| ingress.yaml | + /api/v1/search, /api/v1/notifications, /api/v1/admin |

---

## Порядок реализации (roadmap)

См. [01-perplexity-analogue-design.md §6](./01-perplexity-analogue-design.md#6-порядок-реализации-best-practices).
