feat: Go backend, enhanced search, new widgets, Docker deploy

Major changes:
- Add Go backend (backend/) with microservices architecture
- Enhanced master-agents-svc: reranker, content-classifier, stealth-crawler,
  proxy-manager, media-search, fastClassifier, language detection
- New web-svc widgets: KnowledgeCard, ProductCard, ProfileCard, VideoCard,
  UnifiedCard, CardGallery, InlineImageGallery, SourcesPanel, RelatedQuestions
- Improved discover-svc with discover-db integration
- Docker deployment improvements (Caddyfile, vendor.sh, BUILD.md)
- Library-svc: project_id schema migration
- Remove deprecated finance-svc and travel-svc
- Localization improvements across services

Made-with: Cursor
This commit is contained in:
home
2026-02-27 04:15:32 +03:00
parent 328d968f3f
commit 06fe57c765
285 changed files with 53132 additions and 1871 deletions

280
TEST_RESULTS.md Normal file
View File

@@ -0,0 +1,280 @@
# Результаты тестирования https://gooseek.ru/
**Дата:** 27 февраля 2026, 02:40 МСК
## ❌ Основная проблема
**Сайт https://gooseek.ru/ НЕДОСТУПЕН**
```
$ curl https://gooseek.ru/
curl: (7) Failed to connect to gooseek.ru port 443: Couldn't connect to server
```
## Причины
### 1. Reverse-proxy (Caddy) не запущен
Файл `deploy/docker/docker-compose.yml` содержит конфигурацию для Caddy, который должен:
- Слушать порты 80/443
- Автоматически получать SSL от Let's Encrypt
- Проксировать `gooseek.ru``web-svc:3000`
**Но этот контейнер НЕ ЗАПУЩЕН.**
### 2. Запущена неправильная конфигурация
Сейчас работают контейнеры из `/backend/deploy/docker/docker-compose.yml` (Go backend):
```
$ docker ps
NAME STATUS
docker-api-gateway-1 Up 21 minutes (unhealthy)
docker-chat-svc-1 Up 21 minutes (unhealthy)
docker-agent-svc-1 Up 21 minutes (unhealthy)
docker-webui-1 Up 20 minutes
docker-llm-svc-1 Up 21 minutes (unhealthy)
docker-search-svc-1 Up 21 minutes (unhealthy)
docker-scraper-svc-1 Up 21 minutes (unhealthy)
...
```
**Все сервисы помечены как "unhealthy"**, кроме базовых (postgres, redis, crawl4ai).
### 3. Chat API не работает
#### Тест 1: Прямой доступ к API Gateway
```bash
$ curl http://localhost:3015/health
curl: (7) Connection refused
```
**Результат:** API Gateway недоступен на localhost, хотя порт должен быть проброшен.
#### Тест 2: Через WebUI
```bash
$ curl http://localhost:3000
✅ OK - WebUI возвращает HTML
```
```bash
$ curl -X POST http://localhost:3000/api/chat \
-H "Content-Type: application/json" \
-d '{
"message": {
"messageId": "msg-123",
"chatId": "chat-123",
"content": "Привет, как дела?"
},
"optimizationMode": "balanced",
"history": [],
"locale": "ru"
}'
Internal Server Error
```
**Результат:** WebUI работает, но chat API возвращает ошибку.
**Причина:** WebUI пытается проксировать запрос на `api-gateway:3015` (через Next.js rewrites), но API Gateway недоступен или не отвечает.
## Что работает ✅
1. **WebUI доступен локально** - `http://localhost:3000` возвращает интерфейс
2. **Docker контейнеры запущены** - все сервисы работают (но unhealthy)
3. **Базовые сервисы здоровы:**
- ✅ postgres (healthy)
- ✅ redis (healthy)
- ✅ crawl4ai (healthy)
- ✅ searxng (running)
## Что НЕ работает ❌
1. **Reverse-proxy (Caddy)** - не запущен
2. **API Gateway** - unhealthy, порт 3015 недоступен
3. **Chat сервис** - unhealthy
4. **Agent сервис** - unhealthy
5. **LLM сервис** - unhealthy
6. **Search сервис** - unhealthy
7. **Все остальные backend Go сервисы** - unhealthy
## Диагностика
### Проверка портов
```bash
$ lsof -nP -iTCP -sTCP:LISTEN | grep -E "3000|3015|3005"
node 31314 home 16u IPv6 *:3000 (LISTEN)
```
Только порт 3000 (webui) слушает. Порты 3015 (api-gateway) и 3005 (chat-svc) не доступны на хосте.
### Архитектура
Текущая конфигурация:
```
[Browser]
❌ gooseek.ru:443 (Caddy не запущен)
✅ localhost:3000 (WebUI - Next.js)
↓ (Next.js rewrites /api/* → api-gateway:3015)
❌ api-gateway:3015 (unhealthy, недоступен)
❌ chat-svc:3005 (unhealthy)
❌ agent-svc:3018 (unhealthy)
```
## Рекомендации по исправлению
### 1. Запустить правильный docker-compose
```bash
cd /Users/home/Desktop/GooSeek/deploy/docker
./run.sh
```
Это должно запустить полный стек включая reverse-proxy.
### 2. Проверить логи unhealthy контейнеров
```bash
docker logs docker-api-gateway-1 --tail 100
docker logs docker-chat-svc-1 --tail 100
docker logs docker-agent-svc-1 --tail 100
docker logs docker-llm-svc-1 --tail 100
```
Искать ошибки:
- Отсутствующие переменные окружения
- Проблемы с подключением к зависимостям
- Ошибки при старте сервиса
### 3. Проверить переменные окружения
Убедиться что `.env` файл существует и содержит:
```bash
# LLM API Keys
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GEMINI_API_KEY=...
TIMEWEB_API_KEY=...
TIMEWEB_AGENT_ACCESS_ID=...
TIMEWEB_API_BASE_URL=...
# Ghost CMS
GHOST_CONTENT_API_KEY=...
GHOST_DB_PASSWORD=...
GHOST_MAIL_USER=...
GHOST_MAIL_PASSWORD=...
```
### 4. Проверить healthcheck'и
Каждый сервис имеет healthcheck. Например, для api-gateway:
```yaml
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:3015/health"]
interval: 15s
timeout: 5s
retries: 3
start_period: 10s
```
Если сервис не отвечает на `/health` в течение 10s после старта → unhealthy.
Возможные причины unhealthy:
- Сервис не стартует из-за ошибки
- Сервис стартует медленно (нужно увеличить `start_period`)
- Зависимости недоступны (другие сервисы)
- Отсутствуют переменные окружения
### 5. Проверить сеть Docker
```bash
docker network ls
docker network inspect gooseek
```
Убедиться что все контейнеры в одной сети и могут общаться.
### 6. Проверить DNS и порты
```bash
# DNS
nslookup gooseek.ru
# Порты на роутере
# Убедиться что 80 и 443 проброшены на ПК
```
### 7. Перезапустить с нуля
```bash
# Остановить все
cd /Users/home/Desktop/GooSeek/backend/deploy/docker
docker compose down
# Запустить правильный compose
cd /Users/home/Desktop/GooSeek/deploy/docker
docker compose down
docker compose up -d
# Проверить логи
docker compose logs -f reverse-proxy
docker compose logs -f web-svc
docker compose logs -f api-gateway
```
## Тестовые скрипты
Созданы скрипты для тестирования:
1. **test-chat.sh** - базовая проверка сервисов
2. **test-chat-proper.sh** - тест с правильным payload
3. **test-chat-via-webui.sh** - тест через webui
Использование:
```bash
cd /Users/home/Desktop/GooSeek
./test-chat-via-webui.sh
```
## Скриншоты и ошибки
### Консоль браузера (ожидаемые ошибки)
Если открыть https://gooseek.ru/ в браузере:
- **Network:** ERR_CONNECTION_REFUSED или ERR_NAME_NOT_RESOLVED
- **Console:** Нет ошибок (страница не загружается)
Если открыть http://localhost:3000/ в браузере:
- **Network:** ✅ 200 OK для главной страницы
- **Network:** ❌ 500 Internal Server Error для `/api/chat`
- **Console:** Ошибка при попытке отправить сообщение
### Пример ошибки в консоли (если бы сайт был доступен)
```javascript
POST http://localhost:3000/api/chat 500 (Internal Server Error)
Error: Chat request failed: 500
at streamChat (api.ts:43)
at sendMessage (useChat.ts:53)
```
## Итоговый вывод
**Сайт https://gooseek.ru/ полностью недоступен.**
**Причины:**
1. ❌ Reverse-proxy (Caddy) не запущен → нет HTTPS доступа
2. ❌ API Gateway unhealthy → chat не работает даже локально
3.Все backend сервисы unhealthy → нет функциональности
**Что нужно сделать:**
1. Запустить правильный docker-compose с reverse-proxy
2. Исправить проблемы с unhealthy контейнерами (проверить логи)
3. Убедиться что все переменные окружения настроены
4. Проверить DNS и проброс портов
**Приоритет:** КРИТИЧЕСКИЙ - сайт полностью не работает.