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 @@
# Архитектура аналога Perplexity.ai — полная спецификация
Документ описывает полную архитектуру системы на базе микросервисов K3s с акцентом на:
- **ВСЕ сервисы в `services/`.** Папка `apps/` удаляется. Микросервисная архитектура: chat, search, discover, finance, travel, auth, library, memory, create, notifications, projects, web (UI), cache-worker.
Документ описывает полную архитектуру системы на базе **СОА (сервисной архитектуры)** в K3s с акцентом на:
- **ВСЕ сервисы в `services/`.** Папка `apps/` удаляется. Сервисная архитектура: chat, search, discover, finance, travel, auth, library, memory, create, notifications, projects, web (UI), cache-worker.
- **~10 000 DAU** (ежедневных пользователей)
- **Клиентская логика** — максимум на клиенте; персональные данные — только для аккаунтов
- **Предварительная обработка и кэш** — новости, finance, travel, повторяющиеся запросы
@@ -249,7 +249,7 @@
---
## 3. Микросервисы K3s
## 3. Сервисы K3s (СОА)
### 3.1 Карта сервисов
@@ -269,7 +269,7 @@
┌─────────────────────────────────────────────────────────────────────────────────┐
│ BACKEND MICROSERVICES (K3s)
│ BACKEND SERVICES (K3s, SOA)
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
@@ -305,7 +305,7 @@
└─────────────────────────────────────────────────────────────────────────────────┘
```
### 3.2 Описание микросервисов
### 3.2 Описание сервисов
| Сервис | Язык | Replicas (10k DAU) | Назначение |
|--------|------|--------------------|------------|

View File

@@ -1,4 +1,4 @@
# K3s — спецификация микросервисов
# K3s — спецификация сервисов (СОА)
## 1. Обзор инфраструктуры K3s
@@ -7,7 +7,7 @@
│ K3s Cluster │
├─────────────────────────────────────────────────────────────────────────────┤
│ Ingress (Traefik) │
│ api.perplexica.local → path-based routing к микросервисам │
│ api.perplexica.local → path-based routing к сервисам
│ auth.perplexica.local → auth-svc:3000 │
│ *.perplexica.local → web (static) │
└─────────────────────────────────────────────────────────────────────────────┘
@@ -1310,7 +1310,7 @@ spec:
- auth.perplexica.local
secretName: perplexica-tls
rules:
# API: path-based маршрутизация к микросервисам
# API: path-based маршрутизация к сервисам
- host: api.perplexica.local
http:
paths:

View File

@@ -11,7 +11,7 @@
| **Инфраструктура** | SearXNG — единый инстанс | Очередь запросов в search-svc; при росте — пул инстансов |
| **Инфраструктура** | cache-worker зависает | `activeDeadlineSeconds` во всех CronJob (520 мин) |
| **Инфраструктура** | Redis/PostgreSQL без HA | Sentinel/Cluster и Read replica при масштабировании |
| **Инфраструктура** | travel-svc без HPA | HPA 14 replicas добавлен в 02-k3s-microservices-spec |
| **Инфраструктура** | travel-svc без HPA | HPA 14 replicas добавлен в 02-k3s-services-spec |
| **Функции** | Внешние API (LLM, FMP, TA) | Retry + circuit breaker; fallback при частичном сбое |
## 1. Инфраструктура
@@ -103,6 +103,6 @@
- [04-pages-logic-verification.md §9](./04-pages-logic-verification.md#9-покрытие-фич-perplexity-20252026) — покрытие vs Perplexity 2026
- [06-roadmap-specification.md](./06-roadmap-specification.md) — roadmap и спеки фич
- [01-perplexity-analogue-design.md](./01-perplexity-analogue-design.md)
- [02-k3s-microservices-spec.md](./02-k3s-microservices-spec.md)
- [02-k3s-services-spec.md](./02-k3s-services-spec.md)
- [03-cache-and-precompute-strategy.md](./03-cache-and-precompute-strategy.md)
- [04-pages-logic-verification.md](./04-pages-logic-verification.md)

View File

@@ -6,7 +6,7 @@
## 1. Спецификация фич (детали)
Все пункты определены в [01-perplexity-analogue-design.md](./01-perplexity-analogue-design.md), [02-k3s-microservices-spec.md](./02-k3s-microservices-spec.md), [04-pages-logic-verification.md §9](./04-pages-logic-verification.md#9-покрытие-фич-perplexity-20252026).
Все пункты определены в [01-perplexity-analogue-design.md](./01-perplexity-analogue-design.md), [02-k3s-services-spec.md](./02-k3s-services-spec.md), [04-pages-logic-verification.md §9](./04-pages-logic-verification.md#9-покрытие-фич-perplexity-20252026).
### 1.1 Memory (memory-svc)
- **Сервис:** memory-svc, порт 3010

View File

@@ -1,6 +1,6 @@
# Миграция GooSeek на микросервисную архитектуру
# Миграция GooSeek на сервисную архитектуру (СОА)
**Ссылки:** [01-perplexity-analogue-design.md](./01-perplexity-analogue-design.md), [02-k3s-microservices-spec.md](./02-k3s-microservices-spec.md)
**Ссылки:** [01-perplexity-analogue-design.md](./01-perplexity-analogue-design.md), [02-k3s-services-spec.md](./02-k3s-services-spec.md)
---

View File

@@ -2,9 +2,13 @@
**Отдельный проект.** Документы самодостаточны; все спеки и roadmap — внутри этой папки.
## СОА (сервисная архитектура)
Используется **СОА**, а не микросервисная архитектура: доменные сервисы (chat, search, finance и т.д.), единая точка входа (api-gateway), стандартизированные REST API. Сервисы — бизнес-компоненты, а не атомарные микросервисы.
Целевая система для ~10 000 DAU с **полным совпадением** логики Perplexity.ai:
- **ВСЁ в `services/`.** Папка `apps/` удаляется. Никаких app — только микросервисы.
- Микросервисы в K3s (chat, search, discover, finance, travel, auth, library, memory, create, notifications, projects, cache-worker, web/frontend)
- **СОА (сервисная архитектура).** Папка `apps/` удаляется. Никаких app — только сервисы.
- Сервисы в K3s (chat, search, discover, finance, travel, auth, library, memory, create, notifications, projects, cache-worker, web/frontend)
- Максимум логики на клиенте; персональные данные только для аккаунтов
- Предварительная обработка и кэширование (discover, finance, travel+inspiration, поиск)
@@ -12,8 +16,8 @@
| Документ | Описание |
|----------|----------|
| [01-perplexity-analogue-design.md](./01-perplexity-analogue-design.md) | Карта функциональностей, микросервисы, стратегия кэша, порядок реализации |
| [02-k3s-microservices-spec.md](./02-k3s-microservices-spec.md) | K3s манифесты, Deployment, Service, CronJob для каждого сервиса |
| [01-perplexity-analogue-design.md](./01-perplexity-analogue-design.md) | Карта функциональностей, сервисы СОА, стратегия кэша, порядок реализации |
| [02-k3s-services-spec.md](./02-k3s-services-spec.md) | K3s манифесты, Deployment, Service, CronJob для каждого сервиса |
| [03-cache-and-precompute-strategy.md](./03-cache-and-precompute-strategy.md) | Детальная стратегия кэширования: discover, finance, travel, search |
| [04-pages-logic-verification.md](./04-pages-logic-verification.md) | Сверка логики страниц с Perplexity.ai — полное совпадение |
| [05-gaps-and-best-practices.md](./05-gaps-and-best-practices.md) | Production checklist, требования инфраструктуры |
@@ -22,7 +26,7 @@
## Быстрый старт
1. Прочитать `01-perplexity-analogue-design.md` для общего понимания
2. Использовать `02-k3s-microservices-spec.md` для развёртывания
2. Использовать `02-k3s-services-spec.md` для развёртывания
3. Реализовать `cache-worker` и Redis по `03-cache-and-precompute-strategy.md`
## Отношение к functional-inventory

View File

@@ -1,72 +0,0 @@
# How GooSeek Works
This is a high level overview of how Perplexica answers a question.
If you want a component level overview, see [README.md](README.md).
If you want implementation details, see [CONTRIBUTING.md](../../CONTRIBUTING.md).
## What happens when you ask a question
When you send a message in the UI, the app calls `POST /api/chat`.
At a high level, we do three things:
1. Classify the question and decide what to do next.
2. Run research and widgets in parallel.
3. Write the final answer and include citations.
## Classification
Before searching or answering, we run a classification step.
This step decides things like:
- Whether we should do research for this question
- Whether we should show any widgets
- How to rewrite the question into a clearer standalone form
## Widgets
Widgets are small, structured helpers that can run alongside research.
Examples include weather, stocks, and simple calculations.
If a widget is relevant, we show it in the UI while the answer is still being generated.
Widgets are helpful context for the answer, but they are not part of what the model should cite.
## Research
If research is needed, we gather information in the background while widgets can run.
Depending on configuration, research may include web lookup and searching user uploaded files.
## Answer generation
Once we have enough context, the chat model generates the final response.
You can control the tradeoff between speed and quality using `optimizationMode`:
- `speed`
- `balanced`
- `quality`
## How citations work
We prompt the model to cite the references it used. The UI then renders those citations alongside the supporting links.
## Search API
If you are integrating GooSeek into another product, you can call `POST /api/search`.
It returns:
- `message`: the generated answer
- `sources`: supporting references used for the answer
You can also enable streaming by setting `stream: true`.
## Image and video search
Image and video search use separate endpoints (`POST /api/images` and `POST /api/videos`). We generate a focused query using the chat model, then fetch matching results from a search backend.