# История изменений ## [Не опубликовано] - Рефакторинг под модульную архитектуру ### Добавлено - **Модульная система калькуляторов**: Создана универсальная архитектура для добавления новых калькуляторов через конфигурационные файлы - **Система типов** (`frontend/lib/calculator-types.ts`): Типизация для полей, шагов расчета, подитогов и конфигураций калькуляторов - **Реестр калькуляторов** (`frontend/lib/calculator-registry.ts`): Централизованная система регистрации и управления калькуляторами - **Универсальный компонент CalculatorEngine** (`frontend/components/CalculatorEngine.tsx`): Динамический рендеринг форм на основе конфигурации - **Компонент меню выбора** (`frontend/components/CalculatorMenu.tsx`): Интерфейс для выбора калькулятора - **Модуль калькулятора мыла** (`frontend/calculators/soap/`): Калькулятор мыла вынесен в отдельный модуль с конфигурацией - **Модуль калькулятора свечей** (`frontend/calculators/candles/`): Добавлен пример калькулятора свечей для демонстрации модульной системы - **Универсальный бэкенд**: Адаптирован `backend/bot.js` для работы с любыми типами калькуляторов - **Команда /myid**: Добавлена команда в бота для получения chat_id пользователя - **Документация**: Создано руководство по созданию новых калькуляторов (`frontend/docs/calculator-creation-guide.md`) ### Изменено - **Главная страница** (`frontend/app/page.tsx`): Теперь отображает меню выбора калькулятора вместо прямого отображения калькулятора мыла - **Бэкенд API** (`backend/bot.js`): Универсализирован для обработки данных от любых калькуляторов с поддержкой форматирования сообщений через конфигурацию ### Удалено - **Старый компонент SoapCalculator** (`frontend/components/SoapCalculator.tsx`): Заменен на модульную систему - **Старая логика расчетов** (`frontend/lib/calc.ts`): Перенесена в модуль калькулятора мыла ### Исправлено - **Отступы между полями и блоками расчета**: Добавлены правильные отступы между группами полей и соответствующими блоками расчета - **Расчет цены за 100г**: Исправлена формула, теперь корректно использует дополнительные расчеты - **NaN в расчетах**: Добавлены проверки на деление на ноль и пустые значения - **URL API для локальной разработки**: Исправлен URL бэкенда для работы с localhost ### Технические детали - Каждый калькулятор теперь состоит из конфигурационного файла (`config.ts`) и опционального файла с функциями расчета (`calc.ts`) - Добавление нового калькулятора требует только создания модуля и регистрации в реестре - Все поля, формулы и подитоги настраиваются через конфигурацию - Поддержка различных типов полей: text, number, file - Группировка полей через `groupName` с показом блоков расчета после групп через `showStepAfter` - Динамическое форматирование сообщений для Telegram через функцию `formatTelegramMessage` в конфигурации - Дополнительные расчеты могут зависеть от других дополнительных расчетов (передается 4-й параметр `additional`) - Автоматическое определение URL API (localhost для разработки, продакшн для деплоя) ## Добавлено после первоначального релиза - **Калькулятор свечей**: Добавлен полнофункциональный пример калькулятора для свечей (`frontend/calculators/candles/`) с демонстрацией всех возможностей системы - **Исправления для production build**: Устранены ошибки ESLint (удален `any`, добавлен комментарий для ``) - **База знаний и правила проекта**: Создана документация для контекста разработки (`.cursorrules`, `docs/KNOWLEDGE_BASE.md`, `docs/PROJECT_RULES.md`) - **Организация документации**: Вся документация собрана в папке `docs/`