Skip to content

Latest commit

 

History

History
44 lines (37 loc) · 3.98 KB

File metadata and controls

44 lines (37 loc) · 3.98 KB

CLAUDE.md — контекст проекта для Claude Code

Этот файл коммитится в git и служит переносимой «памятью» между машинами/сессиями.

Что это за проект

Movie Recommendr — портфолио-проект: рекомендации фильмов/сериалов с AI (RAG, pgvector embeddings, GPT-чат). Монорепо pnpm + Turbo.

  • apps/api — NestJS 11 (port 3001), Supabase (PostgreSQL + pgvector), BullMQ + Redis, OpenAI
  • apps/web — Next.js 14 App Router (port 3002), React Query, next-intl (en/ru/uk), Supabase Auth
  • packages/db — Supabase клиенты (supabase service-key, supabaseAnon) + generated types
  • packages/ai — OpenAI обёртка
  • Production: API на Railway, Web на Vercel

Ключевые документы (читать в этом порядке)

  1. SESSION_RESUME.md — текущее состояние и следующий шаг (обновлять в конце сессии!)
  2. IMPROVEMENTS.md — ЕДИНСТВЕННЫЙ живой план (приоритеты P0–P4, разделы 17–19 добавлены при ревизии)
  3. docs/PROJECT_REVIEW_2026-06-11.md — полное ревью архитектуры и проблем
  4. docs/superpowers/specs/2026-05-01-smart-search-design.md — спека smart-search (Phase 1 в работе)
  5. WORKFLOW_RULES.md — процессные правила (новые фичи: сначала показать код, ждать подтверждения; багфиксы и docs — можно сразу)
  6. ROADMAP.md, NEW_IMPROVEMENTS_SUMMARY.md — архив, не использовать для планирования

Команды

pnpm dev          # из apps/api или apps/web (нужен Redis: redis://localhost:6379)
pnpm build        # сборка
pnpm test         # jest (apps/api)
npx tsc --noEmit  # typecheck

Env загружается из корневого .env (см. .env.example; в т.ч. ADMIN_API_KEY).

Безопасность (внедрено 2026-06-11, ветка security/p0-hardening)

  • /api/queues/*, /api/embeddings/*, import-POST'ы /api/tmdb/* — guard AdminApiKeyGuard (заголовок X-Admin-Api-Key = env ADMIN_API_KEY, fail-closed)
  • watchlist/chat/recommendations(кроме popular)/users — SupabaseAuthGuard: user_id берётся ТОЛЬКО из JWT (@CurrentUser()), никогда из query/body
  • Rate limiting: глобально 100/мин (env RATE_LIMIT_*), chat 10/мин, search 30/мин
  • Глобальный ValidationPipe (whitelist+transform) + DTO в */dto/
  • При добавлении новых эндпоинтов СОХРАНЯТЬ эти паттерны

Известные ловушки

  • apps/api/src/queues/processors/imdb-update.processor.ts — НЕ компилируется (вызывает несуществующие методы tmdbService.updateMoviesImdbIds/updateTvShowsImdbIds). Это WIP для IMPROVEMENTS §15. Не регистрирован в модуле. Перед nest build учитывать.
  • Тестов 62 (2026-06-12); TDD обязателен для нового кода (superpowers skill)
  • Миграции: полная история — в корневом supabase/migrations/ (16 файлов); в packages/db/supabase/migrations лежит 1 дублирующий файл — консолидировать
  • CI: lint/check-types/test и build идут ДВУМЯ шагами (next build переписывает .next/types — гонка с tsc)
  • Миграция 20260612000001_add_ai_usage.sql могла быть ещё не применена — AiUsageService деградирует мягко (warn в логах)
  • KEY_ROTATION_GUIDE.md и SECURITY_AUDIT_REPORT.md упомянуты в IMPROVEMENTS, но в репо отсутствуют; актуальный чеклист: docs/KEY_ROTATION_CHECKLIST.md