Files
gooseek/docs/architecture/MIGRATION.md
home cd6b7857ba feat: default locale Russian, geo determines language for other countries
- localization-svc: defaultLocale ru, resolveLocale only by geo
- web-svc: DEFAULT_LOCALE ru, layout lang=ru, embeddedTranslations fallback ru
- countryToLocale: default ru when no country or unknown country

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 15:10:38 +03:00

130 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Миграция GooSeek на микросервисную архитектуру
**Ссылки:** [01-perplexity-analogue-design.md](./01-perplexity-analogue-design.md), [02-k3s-microservices-spec.md](./02-k3s-microservices-spec.md)
---
## Текущий статус
### Реализовано (Фаза 02)
| Компонент | Описание | Статус |
|-----------|----------|--------|
| **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).