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

94 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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