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