# Статус проекта — ВСЁ РАБОТАЕТ ## Последнее обновление: 27.02.2026 ### Исправлена ошибка 500 в learning-svc (27.02.2026) **Проблема:** При создании урока `POST /api/v1/learning/lesson` возвращалась ошибка 500. **Причина:** `learning-svc` пытался использовать Timeweb JWT-токен (в переменной `OPENAI_API_KEY`) как ключ OpenAI API. Timeweb JWT имеет формат `eyJ...`, что не является валидным OpenAI ключом. **Решение:** 1. **backend/cmd/learning-svc/main.go** — изменена логика инициализации LLM клиента: - Приоритет 1: Timeweb Cloud AI (если `TIMEWEB_AGENT_ACCESS_ID` + `TIMEWEB_API_KEY` установлены) - Приоритет 2: Anthropic (только если ключ не JWT) - Приоритет 3: OpenAI (только если ключ не JWT) - Добавлена функция `isJWT()` для детекции JWT-токенов 2. **backend/deploy/docker/docker-compose.yml** — добавлены env vars для learning-svc: - `TIMEWEB_API_BASE_URL` - `TIMEWEB_AGENT_ACCESS_ID` - `TIMEWEB_API_KEY` - `DEFAULT_LLM_MODEL` **Результат:** - `POST /api/v1/learning/lesson` → 200 (урок создаётся успешно) - learning-svc использует Timeweb Cloud AI как LLM провайдер --- ### Исправлены API ошибки 503/404 (27.02.2026) **Проблема:** Frontend получал ошибки: - `api/v1/spaces` - 503 Service Unavailable - `api/v1/computer/tasks` - 404 Not Found - `api/v1/computer/execute` - 404 Not Found **Причины:** 1. `api-gateway` не имел переменных окружения для новых сервисов (THREAD_SVC_URL, COMPUTER_SVC_URL и др.) 2. `computer-svc` падал при попытке использовать "anonymous" как UUID в PostgreSQL **Решение:** 1. **docker-compose.yml** - добавлены env vars в api-gateway: - THREAD_SVC_URL=http://thread-svc:3027 - COMPUTER_SVC_URL=http://computer-svc:3030 - DISCOVER_SVC_URL=http://discover-svc:3002 - FINANCE_HEATMAP_SVC_URL=http://finance-heatmap-svc:3033 - LEARNING_SVC_URL=http://learning-svc:3034 2. **computer-svc/main.go** - исправлена обработка anonymous пользователей: - GET /tasks возвращает пустой список для anonymous - POST /execute возвращает 401 для anonymous **Результат:** - `GET /api/v1/spaces` → 401 (требует auth, frontend обрабатывает) - `GET /api/v1/computer/tasks` → 200 (пустой список для anonymous) - `POST /api/v1/computer/execute` → 401 (требует auth) --- ### Исправлен баг с пустым ответом в Chat (27.02.2026) **Проблема:** При отправке сообщения в UI приходил пустой ответ. **Причина:** В `backend/cmd/api-gateway/main.go` функция `handleChat` использовала `defer resp.Body.Close()` до `SetBodyStreamWriter`. Поскольку `SetBodyStreamWriter` выполняется асинхронно, defer закрывал body сразу после return из функции, до того как данные успевали передаться клиенту. **Решение:** Перенёс `resp.Body.Close()` внутрь callback `SetBodyStreamWriter`: ```go c.Context().SetBodyStreamWriter(func(w *bufio.Writer) { defer resp.Body.Close() // <-- теперь здесь // ... streaming logic }) ``` **Файл:** `backend/cmd/api-gateway/main.go` --- ### Адаптивность и удаление модалок (27.02.2026) **Задача:** Адаптировать под мобильные, убрать Dialog (модалки), сделать отдельные страницы. **Сделано:** 1. **Мобильный Sidebar** (`layout.tsx`, `Sidebar.tsx`): - На мобильных (<768px) sidebar скрыт, есть гамбургер-меню - Появляется mobile header с кнопкой меню - Sidebar открывается как overlay с анимацией - Автозакрытие при навигации 2. **Удалены все Dialog/модальные окна:** - `spaces/page.tsx` — убран Dialog для создания/редактирования - `learning/page.tsx` — убран Dialog для создания урока 3. **Созданы отдельные страницы вместо модалок:** - `/spaces/new` — создание пространства - `/spaces/[id]/edit` — редактирование пространства - `/learning/new` — создание урока 4. **Адаптивность всех страниц:** - `/` — responsive grid для suggestions, адаптивные padding/размеры - `/discover` — горизонтальный скролл табов, адаптивные карточки - `/history` — адаптивные padding, видимые кнопки действий на мобильных - `/spaces` — адаптивные карточки, dropdown всегда видим на мобильных - `/finance` — адаптивный time range, компактные StockRow - `/learning` — адаптивные stats cards, уроки - `/settings` — компактные селекторы, toggle switches - `/computer` — мобильная панель задач, адаптивные примеры 5. **Общие улучшения:** - `h-[100dvh]` вместо `h-screen` для лучшей работы на iOS - Overflow-x-auto для табов с горизонтальной прокруткой - Адаптивные padding: `px-4 sm:px-6`, `py-6 sm:py-8` - Адаптивные размеры текста: `text-xl sm:text-2xl` - Видимость кнопок на мобильных (без hover-only) --- ### Редизайн WebUI в стиле Cursor IDE 2026 (27.02.2026) **Задача:** Редизайн backend/webui в стиле Cursor IDE 2026 — современная тёмная тема с индиговыми акцентами. **Сделано:** 1. **Глобальные стили** (`globals.css`): - Новая цветовая палитра: base/elevated/surface/overlay для фонов - Текст: primary/secondary/muted/faint (zinc-based) - Акценты: indigo (accent) + cyan (accent-secondary) - CSS переменные для всех цветов - JetBrains Mono для кода - Классы: .btn-primary, .btn-primary-solid, .btn-secondary, .btn-ghost, .btn-icon - .nav-item, .nav-item-active, .card, .card-interactive, .glass-card, .surface-card - .badge, .badge-accent, .badge-success, .badge-warning, .badge-error - Анимации: fade-in, fade-in-up, slide-in-right, slide-in-left, scale-in, glow-pulse 2. **Tailwind Config** (`tailwind.config.ts`): - Semantic colors: base, elevated, surface, overlay, primary, secondary, muted, faint - accent с оттенками: DEFAULT, hover, muted, subtle - border с оттенками: DEFAULT, hover, focus - success, warning, error с muted вариантами - Кастомные тени: glow-sm/md/lg, elevated, card, dropdown - Расширенные анимации 3. **Компоненты** (Cursor-style): - `Sidebar.tsx` — минималистичный с индиговыми акцентами, collapsible - `ChatInput.tsx` — современный инпут с glow эффектом, ArrowUp кнопка отправки - `ChatMessage.tsx` — чистый рендер, индиговые цитаты и код - `DiscoverCard.tsx` — карточки с цветными иконками 4. **Страницы** (все обновлены и адаптированы): - `/` — главная с suggestions grid - `/discover` — лента новостей - `/history` — история поиска - `/spaces` — пространства (+ /new, /[id]/edit) - `/finance` — котировки - `/learning` — уроки (+ /new) - `/settings` — настройки - `/computer` — Computer page **Цветовая схема (Cursor IDE 2026):** - Background: base (#0a0a0c) → elevated (#121217) → surface (#1a1a1f) - Text: primary (#e9e9eb) → secondary (#a8a8af) → muted (#6b6b75) → faint (#4a4a54) - Accent: indigo (#818cf8) — основной акцент - Accent Secondary: cyan (#22d3ee) — дополнительный - Borders: #26262e → #32323d (hover) - Success: green (#22c55e) - Error: red (#ef4444) - Warning: amber (#f59e0b) --- ### Интеграция Frontend с Backend (27.02.2026) **Задача:** Подключить backend к frontend в `backend/webui/`, убрать моковые данные. **Сделано:** 1. **API Gateway обновлён** (`backend/cmd/api-gateway/main.go`): - Добавлен роутинг для threads, spaces, pages, share → thread-svc - Добавлен роутинг для discover → discover-svc - Добавлен роутинг для heatmap, movers, markets → finance-heatmap-svc - Добавлен роутинг для learning → learning-svc 2. **Config обновлён** (`backend/pkg/config/config.go`): - Добавлены FinanceHeatmapURL, LearningSvcURL 3. **Frontend Types** (`backend/webui/src/lib/types.ts`): - Добавлены Thread, ThreadMessage, ThreadSource - Добавлены FinanceStock, HeatmapData, HeatmapSector, TopMovers, FinanceMarket - Добавлены Lesson, LessonProgress, LessonStep, CodeExample, QuizQuestion, PracticeExercise 4. **Frontend API** (`backend/webui/src/lib/api.ts`): - `fetchThreads()`, `fetchThread()`, `createThread()`, `deleteThread()`, `shareThread()` - `fetchSpaces()`, `fetchSpace()`, `createSpace()`, `updateSpace()`, `deleteSpace()` - `fetchMarkets()`, `fetchHeatmap()`, `fetchTopMovers()` - `fetchLessons()`, `fetchLesson()`, `createLesson()`, `completeStep()`, `submitQuizAnswer()`, `deleteLesson()` - Добавлен `getAuthHeaders()` для JWT авторизации 5. **History Page** (`backend/webui/src/app/(main)/history/page.tsx`): - Загрузка из threads API - Удаление тредов - Шаринг тредов - Группировка по датам - Поиск 6. **Spaces Page** (`backend/webui/src/app/(main)/spaces/page.tsx`): - Загрузка из spaces API - Создание/редактирование/удаление пространств - Выбор focus mode - Кастомные AI инструкции 7. **Finance Page** (`backend/webui/src/app/(main)/finance/page.tsx`): - Загрузка рынков из API - Heatmap данные по секторам - Top movers (gainers/losers/most active) - Переключение timeRange (1d/1w/1m/3m/1y) 8. **Learning Page** (`backend/webui/src/app/(main)/learning/page.tsx`): - Загрузка уроков из API - Создание уроков с выбором сложности и режима - Отображение прогресса - Удаление уроков --- ### Новые функции (добавлено в этой сессии): #### 0. WebUI — Интерфейс бэкенда (Perplexity-style) - **Папка**: `backend/webui/` - **Технологии**: Next.js 14, React 18, Tailwind CSS, TypeScript - **Цветовая схема**: Глубокий синий (#0a1929) + золотистые акценты (#d4a373) - **Порт**: 3000 - **Страницы**: - `/` — Главная страница с чатом и подсказками - `/discover` — Лента новостей с AI-саммари - `/spaces` — Пространства (workspaces) для организации исследований - `/history` — История поисков - `/finance` — Котировки MOEX, крипто, валюты - `/learning` — Интерактивные курсы с AI-наставником - `/settings` — Настройки (тема, язык, приватность) - **Компоненты**: - `Sidebar` — Навигация с коллапсом - `ChatInput` — Ввод с режимами (speed/balanced/quality) - `ChatMessage` — Рендер markdown + citations - `Citation` — Hover preview источников - `DiscoverCard` — Карточки новостей (large/medium/small) - **Docker**: `backend/webui/Dockerfile`, добавлен в `docker-compose.yml` - **Запуск**: `cd backend/webui && npm run dev` или через Docker #### 1. Computer с долгосрочными задачами (Perplexity-style) - **Файлы**: `backend/internal/computer/types.go`, `backend/internal/computer/computer.go` - **Duration Modes**: Short (30 мин), Medium (4 часа), Long (24 часа), Extended (7 дней), Unlimited (365 дней) - **Checkpoints**: автоматическое сохранение состояния для возобновления задач - **Heartbeat**: периодические уведомления о статусе - **Resource Limits**: контроль CPU, памяти, бюджета #### 2. Browser Automation через Playwright - **Файлы**: `backend/internal/computer/browser/browser.go`, `backend/internal/computer/browser/server.go` - **Действия**: navigate, click, type, fill, screenshot, scroll, evaluate, PDF, extract text/HTML - **Session management**: пул сессий, автоочистка, управление viewport - **Сервис**: browser-svc (порт 3050) #### 3. Персонализация Discover — "For You" feed - **Файлы**: `backend/internal/discover/personalization.go`, `backend/internal/db/user_interests_repo.go` - **User Interests**: topics, sources, keywords с decay-механизмом - **Feed Algorithm**: relevance scoring, diversity, recency, trending boost - **Blocking**: блокировка источников и тем - **Custom Categories**: пользовательские категории с ключевыми словами #### 4. Labs Service — интерактивные отчёты - **Файлы**: `backend/internal/labs/types.go`, `backend/internal/labs/generator.go`, `backend/cmd/labs-svc/main.go` - **Визуализации**: bar/line/pie/donut charts, tables, stat cards, KPI, heatmap, timeline, comparison - **UI-элементы**: tabs, accordion, collapsible, stepper, code blocks, markdown - **API**: генерация отчётов, экспорт в HTML/JSON - **Сервис**: labs-svc (порт 3031) #### 5. Finance Heatmaps - **Файлы**: `backend/internal/finance/heatmap.go`, `backend/cmd/finance-heatmap-svc/main.go` - **Markets**: S&P 500, NASDAQ, Dow Jones, MOEX, Crypto, Forex - **Views**: treemap, grid - **Data**: sectors, tickers, top movers (gainers/losers/most active) - **Colorscale**: красно-зелёная шкала по изменению цены - **Сервис**: finance-heatmap-svc (порт 3033) #### 6. Step-by-step Learning Mode - **Файлы**: `backend/internal/learning/stepper.go`, `backend/cmd/learning-svc/main.go` - **Modes**: explain, guided, interactive, practice, quiz - **Difficulty**: beginner, intermediate, advanced, expert - **Content**: explanations, code, visualizations, quiz questions, practice exercises - **Progress tracking**: step completion, score, time spent - **Сервис**: learning-svc (порт 3034) #### 7. Discover Daily Podcast Generation - **Файлы**: `backend/internal/podcast/generator.go`, `backend/cmd/podcast-svc/main.go` - **Types**: daily, weekly, topic_deep, breaking - **Script Generation**: intro, news segments, analysis, outro - **TTS Integration**: ElevenLabs API для генерации аудио - **RSS Feed**: автоматическая генерация RSS для подкаст-платформ - **Сервис**: podcast-svc (порт 3032) ### Все 21 сервис: - postgres, redis, searxng, crawl4ai (инфраструктура) - search-svc (3001) ✅ - discover-svc (3002) ✅ - chat-svc (3005) ✅ - api-gateway (3015) ✅ - agent-svc (3018) ✅ - llm-svc (3020) ✅ - scraper-svc (3021) ✅ - collection-svc (3025) ✅ - file-svc (3026) ✅ - thread-svc (3027) ✅ - computer-svc (3030) ✅ - **browser-svc (3050) ✅ NEW** - **labs-svc (3031) ✅ NEW** - **podcast-svc (3032) ✅ NEW** - **finance-heatmap-svc (3033) ✅ NEW** - **learning-svc (3034) ✅ NEW** --- ## Задача (исходный запрос) Система виджетов в стиле Perplexity для российского рынка: карточки товаров/видео/профилей/промокодов, Knowledge Cards, улучшенные citations, sources panel, image/video gallery + интеграция с Яндекс, Рутуб, ВКонтакте. ## Сделано (ВСЁ ЗАВЕРШЕНО) ### 1. SearXNG — Российские engines - **Файл**: `deploy/docker/searxng/settings.yml` - Добавлены: yandex, yandex images, yandex videos, yandex news, yandex music - Добавлены: vk (через xpath), rutube (через json_engine), dzen - Добавлены: youtube, aliexpress ### 2. Типы данных виджетов (Backend) - **Файл**: `services/master-agents-svc/src/lib/types/widgets.ts` - ProductData, VideoData, ProfileData, PromoData - ImageData, KnowledgeCardData (comparison_table, charts, timeline, quote, definition) - SourceData, ClassifiedResult - Вспомогательные функции: formatPrice, formatViews, formatDuration, formatFollowers ### 3. Content Classifier (Backend) - **Файл**: `services/master-agents-svc/src/lib/content-classifier.ts` - Определение типа по URL паттернам (товары, видео, профили, промокоды) - Определение платформы (yandex, vk, rutube, ozon, wildberries и др.) - Классификация по ключевым словам в запросе - Функции: classifySearchResult, groupResultsByType, detectKnowledgeCardType ### 4. UI Компоненты (Frontend) #### Улучшенный Citation - **Файл**: `services/web-svc/src/components/MessageRenderer/Citation.tsx` - Расширенный hover preview с заголовком, описанием, favicon - Иконки платформ (Яндекс, VK, Rutube, YouTube и др.) - Улучшенный дизайн badges #### UnifiedCard (базовая карточка) - **Файл**: `services/web-svc/src/components/Widgets/UnifiedCard.tsx` - Универсальный компонент для всех типов карточек - Поддержка compact/horizontal режимов - Badges, meta, actions #### ProductCard (товары) - **Файл**: `services/web-svc/src/components/Widgets/ProductCard.tsx` - Цена, скидка, старая цена - Рейтинг со звёздами, отзывы - Маркетплейс (Ozon, WB, AliExpress, Яндекс Маркет) - Наличие, доставка, badges #### VideoCard (видео) - **Файл**: `services/web-svc/src/components/Widgets/VideoCard.tsx` - Thumbnail с длительностью - Автор, views, likes - Платформа (Rutube, VK, YouTube, Дзен) - Horizontal и compact режимы #### ProfileCard (профили) - **Файл**: `services/web-svc/src/components/Widgets/ProfileCard.tsx` - Аватар, имя, username - Verified badge, online статус - Followers/following - Платформа (VK, Telegram, YouTube, Дзен) #### PromoCard (промокоды) - **Файл**: `services/web-svc/src/components/Widgets/PromoCard.tsx` - Код с кнопкой копирования - Скидка, магазин, логотип - Срок действия, условия - Verified badge #### CardGallery (карусель) - **Файл**: `services/web-svc/src/components/Widgets/CardGallery.tsx` - Горизонтальный скролл с навигацией - Поддержка всех типов карточек - Индикаторы, gradient fade #### KnowledgeCard (Tako-style) - **Файл**: `services/web-svc/src/components/Widgets/KnowledgeCard.tsx` - Сравнительные таблицы - Bar chart, Pie chart - Stat cards с изменениями (+/-) - Timeline - Quote, Definition #### InlineImageGallery - **Файл**: `services/web-svc/src/components/Widgets/InlineImageGallery.tsx` - Grid, carousel, masonry layouts - Lightbox с навигацией - Lazy loading, источники #### VideoEmbed - **Файл**: `services/web-svc/src/components/Widgets/VideoEmbed.tsx` - Embed для YouTube, Rutube - Play preview для VK, Дзен - Метаданные: views, likes, автор #### SourcesPanel - **Файл**: `services/web-svc/src/components/SourcesPanel.tsx` - Expand/collapse - Группировка по домену - Поиск по источникам - Favicon, snippets #### RelatedQuestions - **Файл**: `services/web-svc/src/components/RelatedQuestions.tsx` - 3 стиля: inline, panel, chips - Expand/collapse - Иконки, анимации ### 5. Renderer обновлён - **Файл**: `services/web-svc/src/components/Widgets/Renderer.tsx` - Все новые типы виджетов: products, videos, profiles, promos - knowledge_card, image_gallery, video_embed - Одиночные карточки: product, video, profile, promo ### 6. Синхронный медиа-поиск (images/videos) - **Файл**: `services/master-agents-svc/src/lib/media-search.ts` - Создан модуль синхронного поиска через SearXNG (без LLM) - Функции `searchImages()`, `searchVideos()`, `searchMedia()` - Автодетект платформы видео (YouTube, Rutube, VK, Дзен) ### 7. Интеграция медиа в searchOrchestrator - **Файл**: `services/master-agents-svc/src/lib/agent/searchOrchestrator.ts` - Добавлен `mediaPromise` параллельно с `widgetPromise` и `searchPromise` - Эмит виджетов `image_gallery` (carousel) и `videos` (CardGallery) - Медиа загружается одновременно с research ### 8. Backend: Интеграция парсинга и эмиссии виджетов (ГОТОВО) - **Файл**: `services/master-agents-svc/src/lib/searxng.ts` - Расширены типы SearxngSearchResult (thumbnail, views, price, duration, author) - Добавлена функция categorizeResult для автоопределения типа контента - **Файл**: `services/master-agents-svc/src/lib/agent/researcher.ts` - Интегрирован ContentClassifier - Классификация результатов по типам (products, videos, profiles, promos, images) - Автоматическая эмиссия WidgetBlock для каждого типа контента - Эвристика для KnowledgeCard (comparison_table, stat_card) ### 9. Frontend: Типы для Widget (ГОТОВО) - **Файл**: `services/web-svc/src/lib/types.ts` - Добавлен WidgetType union type со всеми типами виджетов - Типизированы params - **Файл**: `services/web-svc/src/components/ChatWindow.tsx` - Расширен интерфейс Widget новыми типами ### 10. Улучшение ReasoningSteps (ГОТОВО) - **Файл**: `services/web-svc/src/components/AssistantSteps.tsx` - Progress bar с процентами - Таймер времени выполнения - CheckCircle2 при завершении - Loader2 spinner во время работы - Улучшенная визуализация состояний ## Осталось сделать ### Go Backend (НОВОЕ) Создан бэкенд на Go в `backend/` — альтернатива TypeScript сервисам для продакшена. **Структура:** ``` backend/ ├── cmd/ # Точки входа (9 сервисов) │ ├── api-gateway/ # HTTP proxy + routing (port 3015) │ ├── chat-svc/ # Chat orchestration (port 3005) │ ├── agent-svc/ # AI Agent / Search Orchestrator (port 3018) │ ├── search-svc/ # SearXNG wrapper (port 3001) │ ├── llm-svc/ # LLM providers (port 3020) │ ├── scraper-svc/ # Web scraping (port 3021) │ ├── discover-svc/ # Perplexity Discover (port 3002) │ ├── collection-svc/ # Collections API (port 3025) │ └── file-svc/ # File upload & analysis (port 3026) ├── internal/ │ ├── agent/ # Orchestrator, Classifier, Researcher, DeepResearch, FocusModes │ ├── db/ # PostgreSQL repos (digest, article_summary, collection, file) │ ├── files/ # File analyzer (PDF, images) │ ├── llm/ # OpenAI, Anthropic, Gemini clients │ ├── search/ # SearXNG, Media, BM25 Reranker │ ├── session/ # Session manager + events │ ├── prompts/ # LLM prompts │ └── types/ # Blocks, Chunks, Widgets ├── pkg/ │ ├── config/ # Configuration │ ├── ndjson/ # NDJSON streaming │ ├── cache/ # Redis кэширование │ └── middleware/ # Auth, RateLimit, Logging, JWT └── deploy/ ├── docker/ # Dockerfiles + docker-compose └── k8s/ # Kubernetes manifests ``` **Для запуска:** ```bash cd backend make deps make build make dev # или docker-compose ``` **Добавлено (Perplexity-style Article Summary):** - `fetchPreGeneratedDigest()` — проверка готового дайджеста из discover-svc - `preScrapeArticleURL()` — параллельный скрейпинг через Crawl4AI - Обработка `Summary: ` запросов как в Perplexity Discover - Writer prompt для article digest (структура, follow-up вопросы) - Researcher prompt для поиска related sources **Добавлено (26.02.2026):** - `discover-svc` на Go (port 3002) — полный функционал Perplexity Discover - Redis кэширование article summaries (`pkg/cache/redis.go`) - Сохранение саммари в discover-svc после генерации из chat-svc - Article summary flow: chat-svc -> agent-svc -> discover-svc **Добавлено (26.02.2026 - Perplexity Parity):** - PostgreSQL персистентность (`internal/db/`) — digests, article_summaries, collections, files - Redis-based rate limiting (`pkg/middleware/ratelimit_redis.go`) - JWT валидация токенов (`pkg/middleware/jwt.go`) - Focus Modes (`internal/agent/focus_modes.go`) — Academic, YouTube, Reddit, Code, News, Math, Finance - Deep Research (`internal/agent/deep_research.go`) — multi-agent, 30+ searches, insights synthesis - Collections service (`cmd/collection-svc/`) — saved research projects - File service (`cmd/file-svc/`) — PDF/image upload & analysis **Добавлено (26.02.2026 - Full Perplexity Feature Parity):** - Thread service (`cmd/thread-svc/`) — Threads, Spaces, Memory, Pages (port 3027) - **Threads** — сохранение истории чатов, sharing по публичной ссылке - **Spaces** — workspaces с custom AI instructions, default focus mode - **Pages** — генерация статей из threads (`internal/pages/generator.go`) - **Memory** — персонализация (preferences, facts, instructions, interests) - Clarifying Questions — уточняющие вопросы перед Pro Search (Quality mode) - Related Questions — связанные вопросы после ответа - Enhanced Context — buildEnhancedContext() объединяет User Memory + Collection + Files - runDeepResearchMode() — интеграция Deep Research в orchestrator - DB repositories: `internal/db/thread_repo.go`, `space_repo.go`, `memory_repo.go`, `page_repo.go` **TODO для Go бэкенда:** 1. [ ] Тестирование интеграции с web-svc 2. [x] Добавить Redis кэширование ответов 3. [x] Добавить сохранение саммари в discover-svc после генерации 4. [ ] Unit тесты 5. [x] K8s манифесты для Go сервисов (`backend/deploy/k8s/`) 6. [x] PostgreSQL персистентность 7. [x] Focus Modes (Perplexity-style) 8. [x] Deep Research (multi-agent) 9. [x] Collections API 10. [x] File Analysis (PDF, images) 11. [x] Thread History (chat persistence) 12. [x] Spaces (workspaces) 13. [x] Pages (article generation) 14. [x] Memory (personalization) 15. [x] Clarifying Questions 16. [x] Related Questions 17. [x] Sharing (public links) 18. [x] **GooSeek Computer** (Perplexity Computer аналог) ### GooSeek Computer — Perplexity Computer Clone (26.02.2026) **Новый сервис:** `cmd/computer-svc/main.go` (port 3030) Автономная платформа для долгосрочных задач — аналог Perplexity Computer. **Архитектура:** ``` backend/internal/computer/ ├── types.go # ComputerTask, SubTask, Artifact, Schedule, Memory ├── computer.go # Главный оркестратор + EventBus ├── planner.go # AI планировщик задач ├── router.go # Роутинг на нужную модель ├── executor.go # Исполнение задач (research, code, deploy, report...) ├── sandbox.go # Docker sandbox для исполнения кода ├── scheduler.go # Планировщик (cron, interval, once, daily, weekly) ├── memory.go # Персистентная память пользователя └── connectors/ # Внешние интеграции ├── connector.go # Интерфейс коннектора ├── email.go # SMTP отправка ├── telegram.go # Telegram Bot API ├── webhook.go # HTTP webhooks └── storage.go # S3/MinIO хранилище ``` **Model Registry:** `internal/llm/registry.go` - Capabilities: reasoning, coding, search, creative, fast, long_context, vision, math - Роутинг задач на оптимальную модель (Claude для reasoning, Gemini для research, GPT для fast) **DB Repositories:** - `internal/db/computer_task_repo.go` — задачи - `internal/db/computer_memory_repo.go` — память - `internal/db/computer_artifact_repo.go` — артефакты (код, отчёты, файлы) **API Endpoints:** - `POST /api/v1/computer/execute` — запуск задачи - `GET /api/v1/computer/tasks` — список задач пользователя - `GET /api/v1/computer/tasks/:id` — статус задачи - `GET /api/v1/computer/tasks/:id/stream` — SSE стрим событий - `POST /api/v1/computer/tasks/:id/resume` — продолжить с user input - `DELETE /api/v1/computer/tasks/:id` — отмена - `GET /api/v1/computer/tasks/:id/artifacts` — артефакты - `GET /api/v1/computer/models` — доступные модели - `GET /api/v1/computer/connectors` — доступные интеграции - `POST /api/v1/computer/connectors/:id/execute` — выполнить action **Типы задач:** - `research` — веб-исследование, сбор данных - `code` — генерация кода - `analysis` — анализ данных - `design` — проектирование архитектуры - `deploy` — запуск кода в sandbox - `report` — генерация отчётов - `communicate` — отправка email/telegram - `transform` — преобразование данных - `validate` — валидация результатов **Планирование:** - `cron` — cron-выражения - `interval` — каждые N секунд - `once` — одноразовый запуск - `daily/hourly/weekly/monthly` — preset'ы **Пример использования:** ```json POST /api/v1/computer/execute { "userId": "user-123", "query": "Мониторь курс доллара каждый час и отправляй мне в Telegram если изменение > 1%", "options": { "async": true, "schedule": { "type": "hourly" } } } ``` Нет критичных задач - система работает стабильно. ### GooSeek Computer UI (27.02.2026) **Задача:** Создать UI для Computer в стиле Perplexity Computer. **Сделано:** 1. **Типы** (`backend/webui/src/lib/types.ts`): - ComputerTask, ComputerTaskStatus, DurationMode, TaskPriority - TaskPlan, SubTask, Artifact, Checkpoint - ComputerSchedule, ResourceLimits - ComputerTaskEvent, ComputerExecuteRequest - ComputerModel, ComputerConnector 2. **API функции** (`backend/webui/src/lib/api.ts`): - `executeComputerTask()` — запуск задачи - `fetchComputerTasks()` — список задач - `fetchComputerTask()` — статус задачи - `streamComputerTask()` — SSE стрим событий - `resumeComputerTask()` — продолжить с user input - `cancelComputerTask()` — отменить - `fetchComputerArtifacts()` — артефакты - `downloadArtifact()` — скачать артефакт - `fetchComputerModels()` — доступные модели - `fetchComputerConnectors()` — коннекторы - `executeConnectorAction()` — выполнить action 3. **UI страница** (`backend/webui/src/app/(main)/computer/page.tsx`): - Ввод задачи (textarea с placeholder) - Duration mode selector (short/medium/long/extended/unlimited) - Примеры задач (4 карточки) - Список задач (левая панель) - Детальный просмотр задачи: - Progress bar - Статус с иконками - Подзадачи с прогрессом - События (real-time log) - Артефакты с кнопкой скачивания - Расширенные настройки (коннекторы) 4. **Навигация** (`backend/webui/src/components/Sidebar.tsx`): - Добавлен Computer в раздел "Инструменты" - Иконка Cpu ### Оптимизация Speed Mode 2.0 (26.02.2026): **Проблема:** Запросы обрабатывались >2 минут из-за 5 последовательных LLM вызовов. **Решение — Fast Path для Speed Mode:** 1. **Rule-based classifier** — без LLM вызова (`fastClassifier.ts`) 2. **Direct SearXNG search** — без researcher loop (без LLM) 3. **No scraping** — только сниппеты, без Crawl4AI 4. **Parallel execution** — search + media + widgets одновременно 5. **Single LLM call** — только Writer для финального ответа **Новый файл:** `services/master-agents-svc/src/lib/agent/fastClassifier.ts` **Изменённые файлы:** - `services/master-agents-svc/src/lib/agent/searchOrchestrator.ts` — добавлен `runSpeedMode()` - `services/master-agents-svc/src/lib/actions/scrape_url.ts` — отключен для speed mode **Ожидаемое время ответа:** - Speed mode: 8-15 сек (было >2 мин) - Balanced mode: 20-40 сек - Quality mode: 60-120 сек ### Исправлено 26.02.2026: 1. **SearXNG падал** (ambiguous shortcut errors): - Файл: `deploy/docker/searxng/settings.yml` - Убраны дублирующие shortcuts для yandex engines (ya, yai, yav, yan, yam) - Убраны конфликтующие кастомные engines (vk, rutube, dzen, aliexpress) 2. **Ghost перезапускался каждые 2 минуты** (HTTP 503): - Файл: `deploy/docker/docker-compose.yml` - Исправлен healthcheck (wget --spider не следует за 301 redirect) - Увеличены start_period (90s), retries (5), interval (30s) ## Контекст для продолжения ### Новые файлы (созданы): - `backend/cmd/computer-svc/main.go` — GooSeek Computer service (port 3030) - `backend/internal/computer/types.go` — Computer types (Task, SubTask, Artifact, etc.) - `backend/internal/computer/computer.go` — Main orchestrator + EventBus - `backend/internal/computer/planner.go` — AI task planner - `backend/internal/computer/router.go` — Model routing - `backend/internal/computer/executor.go` — Task execution - `backend/internal/computer/sandbox.go` — Docker sandbox manager - `backend/internal/computer/scheduler.go` — Cron/interval scheduler - `backend/internal/computer/memory.go` — Persistent user memory - `backend/internal/computer/connectors/connector.go` — Connector interface - `backend/internal/computer/connectors/email.go` — SMTP connector - `backend/internal/computer/connectors/telegram.go` — Telegram Bot connector - `backend/internal/computer/connectors/webhook.go` — HTTP webhook connector - `backend/internal/computer/connectors/storage.go` — S3/MinIO storage connector - `backend/internal/llm/registry.go` — Model registry with capabilities - `backend/internal/db/computer_task_repo.go` — Computer task repository - `backend/internal/db/computer_memory_repo.go` — Computer memory repository - `backend/internal/db/computer_artifact_repo.go` — Computer artifact repository - `backend/deploy/k8s/computer-svc.yaml` — K8s manifest for computer-svc - `backend/cmd/discover-svc/main.go` — Discover service на Go - `backend/cmd/collection-svc/main.go` — Collections service - `backend/cmd/file-svc/main.go` — File upload & analysis service - `backend/internal/db/postgres.go` — PostgreSQL connection + migrations - `backend/internal/db/digest_repo.go` — Digest repository - `backend/internal/db/article_summary_repo.go` — Article summary repository - `backend/internal/db/collection_repo.go` — Collection repository - `backend/internal/db/file_repo.go` — Uploaded file repository - `backend/internal/agent/focus_modes.go` — Perplexity Focus Modes - `backend/internal/agent/deep_research.go` — Deep Research multi-agent - `backend/internal/files/analyzer.go` — PDF/image analyzer - `backend/pkg/cache/redis.go` — Redis кэш клиент - `backend/pkg/middleware/ratelimit_redis.go` — Redis-based rate limiting - `backend/pkg/middleware/jwt.go` — JWT validation middleware - `backend/deploy/k8s/postgres.yaml` — PostgreSQL StatefulSet - `backend/deploy/k8s/collection-svc.yaml` — Collection service K8s - `backend/deploy/k8s/file-svc.yaml` — File service K8s - `backend/deploy/k8s/thread-svc.yaml` — Thread service K8s - `backend/cmd/thread-svc/main.go` — Thread/Spaces/Memory/Pages service - `backend/internal/db/thread_repo.go` — Thread repository - `backend/internal/db/space_repo.go` — Space repository - `backend/internal/db/memory_repo.go` — Memory repository - `backend/internal/db/page_repo.go` — Page repository - `backend/internal/pages/generator.go` — Page generator (Markdown/HTML export) - `services/master-agents-svc/src/lib/media-search.ts` — синхронный медиа-поиск - `services/media-svc/DEPRECATED.md` — пометка устаревшего сервиса - `services/master-agents-svc/src/lib/types/widgets.ts` - `services/master-agents-svc/src/lib/content-classifier.ts` - `services/web-svc/src/components/Widgets/UnifiedCard.tsx` - `services/web-svc/src/components/Widgets/ProductCard.tsx` - `services/web-svc/src/components/Widgets/VideoCard.tsx` - `services/web-svc/src/components/Widgets/ProfileCard.tsx` - `services/web-svc/src/components/Widgets/PromoCard.tsx` - `services/web-svc/src/components/Widgets/CardGallery.tsx` - `services/web-svc/src/components/Widgets/KnowledgeCard.tsx` - `services/web-svc/src/components/Widgets/InlineImageGallery.tsx` - `services/web-svc/src/components/Widgets/VideoEmbed.tsx` - `services/web-svc/src/components/SourcesPanel.tsx` - `services/web-svc/src/components/RelatedQuestions.tsx` ### Изменённые файлы: - `backend/internal/agent/orchestrator.go` — Clarifying/Related Questions, Deep Research mode, Enhanced Context - `backend/pkg/config/config.go` — ThreadSvcURL, ComputerSvcURL - `backend/go.mod` — добавлены minio-go, robfig/cron - `backend/Makefile` — добавлен computer-svc - `backend/deploy/docker/Dockerfile.all` — добавлен build computer-svc - `backend/deploy/k8s/kustomization.yaml` — добавлен computer-svc - `backend/Makefile` — thread-svc - `backend/deploy/docker/docker-compose.yml` — thread-svc - `backend/deploy/docker/Dockerfile.all` — thread-svc build - `backend/deploy/k8s/kustomization.yaml` — thread-svc - `backend/deploy/k8s/configmap.yaml` — THREAD_SVC_URL - `services/master-agents-svc/src/lib/agent/searchOrchestrator.ts` — интеграция медиа-поиска - `services/master-agents-svc/src/lib/searxng.ts` — расширенные типы и категоризация - `services/master-agents-svc/src/lib/agent/researcher.ts` — интеграция classifier + эмиссия виджетов - `deploy/docker/searxng/settings.yml` — российские engines - `services/web-svc/src/components/MessageRenderer/Citation.tsx` — enhanced hover - `services/web-svc/src/components/Widgets/Renderer.tsx` — новые типы виджетов - `services/web-svc/src/lib/types.ts` — WidgetType - `services/web-svc/src/components/ChatWindow.tsx` — Widget interface - `services/web-svc/src/components/AssistantSteps.tsx` — progress bar, timer, icons