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

5.2 KiB
Raw Blame History

История изменений

[Не опубликовано] - Рефакторинг под модульную архитектуру

Добавлено

  • Модульная система калькуляторов: Создана универсальная архитектура для добавления новых калькуляторов через конфигурационные файлы
  • Система типов (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/) с демонстрацией всех возможностей системы