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

103 lines
5.9 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.

# План работ: Модульная архитектура калькуляторов
## Статус выполнения
- [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`