DoSoapCalc/docs/CHANGELOG.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

53 lines
5.7 KiB
Markdown
Raw Permalink 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/`) с демонстрацией всех возможностей системы
- **Исправления для production build**: Устранены ошибки ESLint (удален `any`, добавлен комментарий для `<img>`)
- **База знаний и правила проекта**: Создана документация для контекста разработки (`.cursorrules`, `docs/KNOWLEDGE_BASE.md`, `docs/PROJECT_RULES.md`)
- **Организация документации**: Вся документация собрана в папке `docs/`