- 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
94 lines
4.1 KiB
Markdown
94 lines
4.1 KiB
Markdown
# Правила проекта 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. ❌ Коммит без проверки линтера и сборки
|
||
|