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

99
deploy/docker/vendor.sh Executable file
View File

@@ -0,0 +1,99 @@
#!/usr/bin/env bash
# ============================================================
# vendor.sh — скачивает ВСЕ npm-зависимости + Docker-образы
# в vendor/ для оффлайн-билда в изолированной среде.
#
# Запускать на машине С ИНТЕРНЕТОМ. Результат:
# vendor/npm-cache/ — npm cache (все tarballs)
# vendor/npm-cache.tar.gz — архив npm cache
# vendor/docker-images.tar — base Docker images
#
# Перенести vendor/ на изолированную машину.
# ============================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
VENDOR_DIR="$REPO_ROOT/vendor"
CACHE_DIR="$VENDOR_DIR/npm-cache"
echo "=== GooSeek vendor: скачивание зависимостей ==="
echo "Репозиторий: $REPO_ROOT"
echo "Vendor: $VENDOR_DIR"
echo ""
# ----------------------------------------------------------
# 1. npm cache — все сервисы
# ----------------------------------------------------------
rm -rf "$CACHE_DIR"
mkdir -p "$CACHE_DIR"
for pkg in "$REPO_ROOT"/services/*/package.json; do
svc_dir="$(dirname "$pkg")"
svc_name="$(basename "$svc_dir")"
if [ ! -f "$svc_dir/package-lock.json" ] && [ ! -f "$REPO_ROOT/package-lock.json" ]; then
echo "--- Пропускаю $svc_name (нет package-lock.json) ---"
continue
fi
echo "=== npm cache: $svc_name ==="
(cd "$svc_dir" && npm install --cache "$CACHE_DIR" --prefer-offline --ignore-scripts 2>&1) || {
echo " WARN: npm install для $svc_name завершился с ошибкой, продолжаем..."
}
rm -rf "$svc_dir/node_modules"
done
echo "=== npm cache: workspace root (web-svc, auth-svc) ==="
(cd "$REPO_ROOT" && npm install --cache "$CACHE_DIR" --prefer-offline --ignore-scripts 2>&1) || {
echo " WARN: npm install для workspace root завершился с ошибкой, продолжаем..."
}
rm -rf "$REPO_ROOT/node_modules"
for svc_dir in "$REPO_ROOT"/services/*/; do
rm -rf "$svc_dir/node_modules"
done
echo ""
echo "=== Упаковка npm cache ==="
tar -czf "$VENDOR_DIR/npm-cache.tar.gz" -C "$VENDOR_DIR" npm-cache
NPM_SIZE=$(du -sh "$VENDOR_DIR/npm-cache.tar.gz" | cut -f1)
echo " npm-cache.tar.gz: $NPM_SIZE"
# ----------------------------------------------------------
# 2. Docker base images
# ----------------------------------------------------------
IMAGES=(
"node:22-alpine"
"node:20-alpine"
"redis:7-alpine"
"searxng/searxng:latest"
"ghost:6-alpine"
"mysql:8"
"postgres:16-alpine"
"willfarrell/autoheal:latest"
"unclecode/crawl4ai:latest"
)
echo ""
echo "=== Docker images: pull ==="
for img in "${IMAGES[@]}"; do
echo " pull $img"
docker pull "$img" 2>&1 | tail -1
done
echo ""
echo "=== Docker images: save ==="
docker save -o "$VENDOR_DIR/docker-images.tar" "${IMAGES[@]}"
DOCKER_SIZE=$(du -sh "$VENDOR_DIR/docker-images.tar" | cut -f1)
echo " docker-images.tar: $DOCKER_SIZE"
# ----------------------------------------------------------
# Итого
# ----------------------------------------------------------
echo ""
echo "=== Готово ==="
echo " $VENDOR_DIR/npm-cache.tar.gz ($NPM_SIZE)"
echo " $VENDOR_DIR/docker-images.tar ($DOCKER_SIZE)"
echo ""
echo "Перенесите vendor/ на изолированную машину:"
echo " scp -r vendor/ user@server:~/GooSeek/vendor/"