DoSoapCalc/CHANGELOG.md
DosAi 02c7520c90 Refactor: Modular calculator architecture
Created modular system for calculators, added soap and candles calculators, universal components, updated backend
2025-11-02 15:45:07 +03:00

50 lines
5.2 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.

# История изменений
## [Не опубликовано] - Рефакторинг под модульную архитектуру
### Добавлено
- **Модульная система калькуляторов**: Создана универсальная архитектура для добавления новых калькуляторов через конфигурационные файлы
- **Система типов** (`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/`) с демонстрацией всех возможностей системы