- 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
5.9 KiB
5.9 KiB
План работ: Модульная архитектура калькуляторов
Статус выполнения
- Создать систему типов (calculator-types.ts) с FieldConfig, CalculationStep, SubtotalConfig, CalculatorConfig
- Вынести калькулятор мыла в модуль (calculators/soap/config.ts и calc.ts)
- Создать универсальный компонент CalculatorEngine.tsx для динамического рендеринга и расчетов
- Создать компонент CalculatorMenu.tsx для выбора калькулятора на главной странице
- Создать систему регистрации калькуляторов (calculator-registry.ts)
- Обновить app/page.tsx для отображения меню выбора калькулятора
- Адаптировать backend/bot.js для универсальной обработки разных калькуляторов
- Удалить старые файлы SoapCalculator.tsx и calc.ts после миграции
- Создать документацию по созданию калькуляторов (calculator-creation-guide.md)
- Создать CHANGELOG.md с описанием изменений
- Создать PLAN.md с планом работ и отслеживанием прогресса
Выполненные задачи
✅ Этап 1: Система типов
- Создан файл
frontend/lib/calculator-types.ts - Определены типы:
FieldConfig,CalculationStep,SubtotalConfig,CalculatorConfig - Поддержка типов полей: text, number, file
- Типы для результатов расчетов:
CalculatorValues,CalculationResults
✅ Этап 2: Модуль калькулятора мыла
- Создана папка
frontend/calculators/soap/ - Создан файл
calc.tsс функциями расчета - Создан файл
config.tsс полной конфигурацией калькулятора мыла - Все поля, формулы и подитоги перенесены в модуль
✅ Этап 3: Универсальные компоненты
- Создан
CalculatorEngine.tsx— динамический рендеринг на основе конфигурации - Создан
CalculatorMenu.tsx— меню выбора калькулятора - Обновлен
app/page.tsxдля использования меню
✅ Этап 4: Система регистрации
- Создан
calculator-registry.tsдля управления калькуляторами - Реализованы функции:
registerCalculator,getCalculator,getAllCalculators - Автоматическая инициализация при импорте
✅ Этап 5: Адаптация бэкенда
- Обновлен
backend/bot.jsдля универсальной обработки - Поддержка готовых сообщений из конфигурации калькулятора
- Fallback на универсальное форматирование при отсутствии
formatTelegramMessage
✅ Этап 6: Очистка
- Удален старый
SoapCalculator.tsx - Удален старый
calc.ts - Все зависимости обновлены
✅ Этап 7: Документация
- Создано руководство
docs/calculator-creation-guide.md - Создан
CHANGELOG.md - Создан
PLAN.md(этот файл)
Следующие шаги (будущие улучшения)
Возможные улучшения
- Добавить валидацию полей на основе конфигурации
- Добавить поддержку условных полей (показывать/скрывать в зависимости от значений)
- Добавить поддержку групп полей с показом расчетов между группами
- Создать пример калькулятора свечей для демонстрации
- Добавить тесты для модульной системы
- Улучшить обработку ошибок валидации
- Добавить поддержку единиц измерения (г, кг, шт и т.д.)
- Добавить сохранение истории расчетов (локально)
Структура проекта
frontend/
calculators/ # Модули калькуляторов
soap/
config.ts # Конфигурация калькулятора мыла
calc.ts # Функции расчета
candles/
config.ts # Конфигурация калькулятора свечей
calc.ts # Функции расчета
components/
CalculatorEngine.tsx # Универсальный компонент
CalculatorMenu.tsx # Меню выбора
lib/
calculator-types.ts # Типы системы
calculator-registry.ts # Реестр калькуляторов
app/
page.tsx # Главная страница с меню
docs/
calculator-creation-guide.md # Руководство
backend/
bot.js # Универсальный обработчик API
Как добавить новый калькулятор
- Создать папку
frontend/calculators/[название]/ - Создать файл
config.tsс конфигурацией - Опционально создать
calc.tsдля сложных расчетов - Зарегистрировать в
calculator-registry.ts
Подробные инструкции в frontend/docs/calculator-creation-guide.md