# Правила проекта DoSoap ## Общие принципы ### 1. Модульность - Каждый калькулятор должен быть независимым модулем - Не должно быть жестких зависимостей между калькуляторами - Добавление нового калькулятора не должно ломать существующие ### 2. Типизация - **Запрещено** использовать `any` в TypeScript - Все типы должны быть определены в `calculator-types.ts` - Все функции должны иметь явные типы параметров и возвращаемого значения ### 3. Обработка ошибок - Все расчеты должны проверять деление на ноль - Пустые значения должны возвращать 0, а не NaN - API запросы должны обрабатывать ошибки сети ### 4. Форматирование кода - Используй ESLint правила проекта - Код должен проходить `npm run lint` без ошибок - Production build не должен падать из-за линтера ## Структура модуля калькулятора ### Обязательные файлы: 1. `config.ts` - конфигурация калькулятора (обязательно) 2. `calc.ts` - функции расчета (опционально, только для сложной логики) ### Регистрация: Каждый новый калькулятор должен быть зарегистрирован в `frontend/lib/calculator-registry.ts`: ```typescript import { myCalculatorConfig } from '@/calculators/my-calc/config'; registerCalculator(myCalculatorConfig); ``` ## Соглашения об именовании ### Файлы и папки: - Калькуляторы: `kebab-case` (например: `soap`, `candles`) - Компоненты: `PascalCase.tsx` - Утилиты: `camelCase.ts` ### ID полей и расчетов: - Используй `camelCase` для ID - Названия должны быть понятными и описательными ## Работа с Git ### Ветки: - `main` / `master` - продакшн - `dev` - разработка ### Коммиты: - Используй понятные сообщения коммитов - Один коммит = одно логическое изменение ### Перед коммитом: 1. Проверь линтер: `npm run lint` 2. Убедись, что сборка проходит: `npm run build` 3. Проверь типы: TypeScript должен компилироваться без ошибок ## Деплой на сервер ### Порядок действий: 1. Закоммитить изменения в ветку `dev` 2. Отправить на сервер: `git push origin dev` 3. На сервере: `git pull origin dev` 4. Пересобрать фронтенд: `cd frontend && npm run build` 5. Перезапустить процессы: `pm2 restart dosoap-frontend dosoap-backend` ## Тестирование ### Локальная разработка: - Frontend: `npm run dev` (порт 3000) - Backend: `node bot.js` (порт 3001) ### Проверка перед деплоем: - [ ] Все расчеты работают корректно - [ ] Нет ошибок в консоли браузера - [ ] Отправка в Telegram работает - [ ] Production build успешно собирается - [ ] Линтер не выдает ошибок ## Запрещенные практики 1. ❌ Использование `any` в TypeScript 2. ❌ Прямые импорты между калькуляторами 3. ❌ Изменение `CalculatorEngine` без обновления документации 4. ❌ Хардкод значений, которые должны быть в конфигурации 5. ❌ Коммит без проверки линтера и сборки