DoSoapCalc/docs/PROJECT_RULES.md
DosAi 88ed4b3580 docs: Add knowledge base, project rules and organize documentation
- Created .cursorrules for development context

- Added KNOWLEDGE_BASE.md with architecture details

- Added PROJECT_RULES.md with coding standards

- Updated README.md with project overview

- Moved CHANGELOG.md and PLAN.md to docs/ folder

- Updated CHANGELOG.md with latest changes
2025-11-02 16:09:30 +03:00

4.1 KiB
Raw Blame History

Правила проекта 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:

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. Коммит без проверки линтера и сборки