- 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
103 lines
5.9 KiB
Markdown
103 lines
5.9 KiB
Markdown
# План работ: Модульная архитектура калькуляторов
|
||
|
||
## Статус выполнения
|
||
|
||
- [x] Создать систему типов (calculator-types.ts) с FieldConfig, CalculationStep, SubtotalConfig, CalculatorConfig
|
||
- [x] Вынести калькулятор мыла в модуль (calculators/soap/config.ts и calc.ts)
|
||
- [x] Создать универсальный компонент CalculatorEngine.tsx для динамического рендеринга и расчетов
|
||
- [x] Создать компонент CalculatorMenu.tsx для выбора калькулятора на главной странице
|
||
- [x] Создать систему регистрации калькуляторов (calculator-registry.ts)
|
||
- [x] Обновить app/page.tsx для отображения меню выбора калькулятора
|
||
- [x] Адаптировать backend/bot.js для универсальной обработки разных калькуляторов
|
||
- [x] Удалить старые файлы SoapCalculator.tsx и calc.ts после миграции
|
||
- [x] Создать документацию по созданию калькуляторов (calculator-creation-guide.md)
|
||
- [x] Создать CHANGELOG.md с описанием изменений
|
||
- [x] Создать 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` (этот файл)
|
||
|
||
## Следующие шаги (будущие улучшения)
|
||
|
||
### Возможные улучшения
|
||
- [ ] Добавить валидацию полей на основе конфигурации
|
||
- [ ] Добавить поддержку условных полей (показывать/скрывать в зависимости от значений)
|
||
- [x] Добавить поддержку групп полей с показом расчетов между группами
|
||
- [x] Создать пример калькулятора свечей для демонстрации
|
||
- [ ] Добавить тесты для модульной системы
|
||
- [ ] Улучшить обработку ошибок валидации
|
||
- [ ] Добавить поддержку единиц измерения (г, кг, шт и т.д.)
|
||
- [ ] Добавить сохранение истории расчетов (локально)
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
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
|
||
```
|
||
|
||
## Как добавить новый калькулятор
|
||
|
||
1. Создать папку `frontend/calculators/[название]/`
|
||
2. Создать файл `config.ts` с конфигурацией
|
||
3. Опционально создать `calc.ts` для сложных расчетов
|
||
4. Зарегистрировать в `calculator-registry.ts`
|
||
|
||
Подробные инструкции в `frontend/docs/calculator-creation-guide.md`
|
||
|