- 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
4.1 KiB
4.1 KiB
Правила проекта DoSoap
Общие принципы
1. Модульность
- Каждый калькулятор должен быть независимым модулем
- Не должно быть жестких зависимостей между калькуляторами
- Добавление нового калькулятора не должно ломать существующие
2. Типизация
- Запрещено использовать
anyв TypeScript - Все типы должны быть определены в
calculator-types.ts - Все функции должны иметь явные типы параметров и возвращаемого значения
3. Обработка ошибок
- Все расчеты должны проверять деление на ноль
- Пустые значения должны возвращать 0, а не NaN
- API запросы должны обрабатывать ошибки сети
4. Форматирование кода
- Используй ESLint правила проекта
- Код должен проходить
npm run lintбез ошибок - Production build не должен падать из-за линтера
Структура модуля калькулятора
Обязательные файлы:
config.ts- конфигурация калькулятора (обязательно)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- разработка
Коммиты:
- Используй понятные сообщения коммитов
- Один коммит = одно логическое изменение
Перед коммитом:
- Проверь линтер:
npm run lint - Убедись, что сборка проходит:
npm run build - Проверь типы: TypeScript должен компилироваться без ошибок
Деплой на сервер
Порядок действий:
- Закоммитить изменения в ветку
dev - Отправить на сервер:
git push origin dev - На сервере:
git pull origin dev - Пересобрать фронтенд:
cd frontend && npm run build - Перезапустить процессы:
pm2 restart dosoap-frontend dosoap-backend
Тестирование
Локальная разработка:
- Frontend:
npm run dev(порт 3000) - Backend:
node bot.js(порт 3001)
Проверка перед деплоем:
- Все расчеты работают корректно
- Нет ошибок в консоли браузера
- Отправка в Telegram работает
- Production build успешно собирается
- Линтер не выдает ошибок
Запрещенные практики
- ❌ Использование
anyв TypeScript - ❌ Прямые импорты между калькуляторами
- ❌ Изменение
CalculatorEngineбез обновления документации - ❌ Хардкод значений, которые должны быть в конфигурации
- ❌ Коммит без проверки линтера и сборки