- deploy/k3s удалён, deploy/docker добавлен (Caddyfile, docker-compose, searxng) - chat-svc: agents/models/prompts удалены, использует llm-svc (LLMClient, EmbeddingClient) - master-agents-svc: SearchOrchestrator, classifier, researcher, actions, widgets - web-svc: ChatModelSelector, Optimization, Sources удалены; InputBarPlus; UnregisterSW - geo-device-svc, localization-svc: Dockerfiles - docs: 02-k3s-services-spec.md, RUNBOOK/TELEMETRY/WORKING удалены Co-authored-by: Cursor <cursoragent@cursor.com>
130 lines
7.1 KiB
Markdown
130 lines
7.1 KiB
Markdown
# Миграция 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).
|