Deploy: migrate k3s → Docker; search logic → master-agents-svc

- 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>
This commit is contained in:
home
2026-02-23 22:14:00 +03:00
parent cd6b7857ba
commit 328d968f3f
180 changed files with 3022 additions and 9798 deletions

View File

@@ -1,7 +1,7 @@
# Недоделки — начать отсюда
## Задача
Полная переделка сервиса GooSeek по документации docs/architecture (микросервисная архитектура аналога Perplexity.ai).
Полная переделка сервиса GooSeek по документации docs/architecture (сервисная архитектура СОА, аналог Perplexity.ai).
## Статус: миграция завершена ✅
@@ -9,7 +9,7 @@
- **Удалён SQLite** (web-svc, chat-svc): chats, messages — локальная история
- **library-svc расширен:** thread_messages, GET threads/:id, POST/PATCH messages, export PDF/MD
- **chat-svc:** сохранение в library-svc (при auth), SQLite удалён
- **api-gateway:** новый сервис на порту 3015, прокси всех /api/* на микросервисы
- **api-gateway:** новый сервис на порту 3015, прокси всех /api/* на сервисы
- **web-svc:** только UI, rewrites /api/* на api-gateway; config, providers — в chat-svc
- **media-svc (порт 3016):** images + videos — LLM rephrase, SearXNG/search-svc; api-gateway проксирует /api/images, /api/videos
- **suggestions-svc (порт 3017):** AI follow-up suggestions; api-gateway проксирует /api/suggestions
@@ -72,8 +72,8 @@
- **MIGRATION.md:** сборка образов search/auth/notifications
## Сделано (ранее)
- Микросервисы: discover, search, finance, travel, chat, memory, create, notifications, billing, auth, library, projects
- web-svc: UI + прокси к микросервисам
- Сервисы: discover, search, finance, travel, chat, memory, create, notifications, billing, auth, library, projects
- web-svc: UI + прокси к сервисам
- deploy/k3s: манифесты, ingress
- apps/ удалён — всё в services/
@@ -131,12 +131,29 @@
- deploy/k3s/profile-svc.yaml, deploy.config.yaml
## llm-svc (порт 3020)
- **llm-svc:** микросервис провайдеров LLM — единый источник для Ollama, OpenAI, Timeweb, Gemini и др.
- **llm-svc:** единый сервис провайдеров и генерации LLM — Ollama, OpenAI, Timeweb, Gemini и др.
- API: GET/POST/PATCH/DELETE /api/v1/providers, GET/POST/DELETE /api/v1/providers/:id/models
- chat-svc: при LLM_SVC_URL — получает провайдеров из llm-svc (config, ModelRegistry)
- **Генерация:** POST /api/v1/generate, POST /api/v1/generate/stream, POST /api/v1/generate/object, POST /api/v1/embeddings
- GET /api/v1/providers/ui-config — UI-конфиг провайдеров для chat-svc
- **chat-svc:** всегда использует llm-svc (LLM_SVC_URL обязателен). LlmClient, EmbeddingClient — HTTP-клиенты.
- Папка models удалена из chat-svc — вся генерация через llm-svc.
- api-gateway: /api/v1/providers → llm-svc
- deploy: llm-svc.yaml, deploy.config.yaml (llm-svc: false по умолчанию)
- В K8s: llm-svc деплоится через deploy.sh, LLM_SVC_URL задаётся в ConfigMap chat-svc
## master-agents-svc как единый оркестратор (2025-02)
- **master-agents-svc:** SearchOrchestrator — classify → widgets (weather, stock, calculation) → researcher (web_search, academic_search, social_search, scrape_url, done, __reasoning_preamble) → writer. POST /api/v1/agents/search (NDJSON stream).
- **Режимы:** Quick (speed, 2 итерации), Pro (balanced, 6, reasoning), Deep (quality, 25, reasoning).
- **Параллельные actions:** executeAll использует Promise.all для tool calls.
- **Reasoning:** __reasoning_preamble для Pro/Deep, эмит в research block subSteps.
- **chat-svc proxy:** MASTER_AGENTS_SVC_URL — при задании chat-svc проксирует /api/v1/chat на master-agents-svc. Model Council при прокси не поддерживается.
- **Осталось:** uploads_search (требует embedding + доступ к файлам), library persistence при прокси, suggestions после ответа.
## 2025-02: Search 502, Invalid provider id — исправлено
- **SearXNG:** добавлен локальный контейнер в deploy/docker/docker-compose.yml (порт 8080)
- **search-svc:** SEARXNG_URL=http://searxng:8080, headers X-Forwarded-For/X-Real-IP для bot detection
- **deploy/docker/searxng/:** settings.yml (formats: json, limiter: false), limiter.toml (pass_ip)
- **llm-svc:** маппинг providerId 'env' → env-timeweb/env-ollama при envOnlyMode
- **useChat:** при envOnlyMode берёт реальный providerId из API (env-timeweb)
## Контекст для продолжения
- Порты: discover 3002, search 3001, finance 3003, travel 3004, chat 3005, memory 3010, create 3011, notifications 3013, billing 3008, media 3016, suggestions 3017, master-agents 3018, profile 3019, llm 3020