moex-vibe/AGENTS.md

4.3 KiB
Raw Permalink Blame History

MoexVibe — Инструкция для агента

Репозиторий

npm workspaces монорепозиторий: apps/backend (NestJS), apps/frontend (React + Vite).

Обязательный подход к разработке

  • SDD (Specification-Driven Development): перед написанием кода сначала сформировать спецификацию — PRD, доменную модель, ADR, OpenAPI-контракт, архитектуру фронтенда и бэкенда, план реализации по этапам.
  • Superpowers: обязательно использовать скиллы (Skills) при старте любой задачи — brainstorming, frontend-design, test-driven-development, writing-plans, executing-plans, requesting-code-review.
  • MCP-инструменты: использовать MCP для анализа и генерации дизайна, работы с API, генерации кода.

Команды

Команда Что делает
npm run dev:backend Запуск NestJS в режиме watch на :3000
npm run dev:frontend Vite dev-сервер на :5173, проксирует /api → :3000
npm run build:backend nest build
npm run build:frontend tsc -b && vite build (в две фазы)
npm run test:backend vitest run (SWC, не ts-jest)
npm run lint ESLint только для бэкенда
npm run format Prettier для всех *.{ts,tsx}
npm run codegen -w apps/frontend openapi-typescript из локального Swagger → src/api/types.ts

Один тест: npx vitest run path/to/test.spec.ts -w apps/backend

Переменные окружения

Переменная По умолчанию Описание
PORT 3000 Порт бэкенда
MOEX_BASE_URL https://iss.moex.com/iss Endpoint MOEX ISS
MOEX_RATE_LIMIT 10 Запросов/с к MOEX
CACHE_MARKET_DATA_TTL 900 TTL рыночных данных (с)
CACHE_HISTORY_TTL 3600 TTL истории (с)
CACHE_CANDLES_TTL 3600 TTL свечей (с)
CACHE_SECURITY_TTL 86400 TTL спецификации (с)
CACHE_SEARCH_TTL 3600 TTL результатов поиска (с)

Архитектура

  • Бэкенд — единственный клиент MOEX. Фронтенд никогда не обращается к MOEX напрямую.
  • Feature-модули: MoexClientModule (глобальный), CacheModule (глобальный), SharesModule, BondsModule, SecuritiesModule, CandlesModule, HealthModule.
  • MoexClientService использует p-queue (rate limiter) + circuit breaker (5 ошибок → 30s открыт).
  • In-memory кеш через @nestjs/cache-manager. Путь миграции на Redis описан (см. ADR-002).
  • Глобальный префикс NestJS: /api/v1. Swagger: /api/docs.
  • Глобальный ValidationPipe (transform: true, whitelist: true), HttpExceptionFilter, TransformInterceptor, middleware логирования запросов.
  • Ответы API обёрнуты в { data: T, meta: { fromCache, cachedAt } }.
  • Алиасы: @/*src/* в обоих пакетах.

Фронтенд

  • React 18 + react-router-dom v6 + TanStack Query v5.
  • lightweight-charts v4 для графиков цен.
  • openapi-fetch + рукописные типы responses.ts (не полностью codegen'овые).
  • TanStack Query по умолчанию: staleTime: 900s, retry: 2, refetchOnWindowFocus: false.
  • Конвенция ключей запросов: ['stock', secid], ['securities', 'search', query], и т.д.
  • CSS через styles.css (CSS custom properties, без CSS-in-JS или Tailwind).

Стиль кода

  • Prettier: одинарные кавычки, trailing commas, printWidth 100, точки с запятой.
  • Бэкенд: const, PascalCase для модулей/контроллеров/сервисов, DTO в dto/ внутри каждого модуля.
  • Бэкенд использует SWC через unplugin-swc (vitest config).
  • Тесты фронтенда отсутствуют.
  • CI/CD в репозитории нет.