# Миграция GooSeek на сервисную архитектуру (СОА) **Ссылки:** [01-perplexity-analogue-design.md](./01-perplexity-analogue-design.md), [02-k3s-services-spec.md](./02-k3s-services-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).