${chatId}\n\nВы можете открыть калькулятор напрямую по ссылке:\n${WEBAPP_BASE_URL}/?chat_id=${chatId}`,
+ { parse_mode: 'HTML' }
+ );
+ } catch (err) {
+ console.error('Ошибка в обработчике /myid:', err);
+ }
+});
+
// 7) Ловим ошибки polling-а и логируем детали
bot.on('polling_error', (err) => {
console.error('Polling error:', err);
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
new file mode 100644
index 0000000..448a400
--- /dev/null
+++ b/docs/CHANGELOG.md
@@ -0,0 +1,52 @@
+# История изменений
+
+## [Не опубликовано] - Рефакторинг под модульную архитектуру
+
+### Добавлено
+
+- **Модульная система калькуляторов**: Создана универсальная архитектура для добавления новых калькуляторов через конфигурационные файлы
+- **Система типов** (`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`, добавлен комментарий для `Калькулятор не найден
+ {onBack && ( + + )} +