Реализован базовый функционал для работы с черновиками заказов.
Это первый этап из трех для полной реализации автосохранения.
Изменения:
1. Модель Order (orders/models.py):
- Добавлен статус 'draft' в STATUS_CHOICES
- Добавлено поле last_autosave_at для отслеживания автосохранения
- Добавлен метод is_draft() для проверки статуса черновика
2. Миграция (0005_add_draft_support.py):
- Добавление поля last_autosave_at в Order
- Добавление статуса 'draft' в choices
3. Service Layer (orders/services/draft_service.py):
- Класс DraftOrderService с методами:
* create_draft() - создание нового черновика
* update_draft() - обновление существующего черновика
* add_item_to_draft() - добавление товара в черновик
* remove_item_from_draft() - удаление товара из черновика
* finalize_draft() - завершение черновика (draft → new)
* get_user_drafts() - получение черновиков пользователя
* delete_old_drafts() - очистка старых черновиков
- Вся бизнес-логика инкапсулирована в сервисный слой
Архитектурные решения:
- Использование service layer pattern для изоляции бизнес-логики
- Транзакционность всех операций с черновиками
- Автоматический пересчет итоговой суммы при изменении товаров
- Связь временных комплектов с черновиками через FK
Следующие этапы (в следующих коммитах):
- Этап 2: AJAX endpoints и модификация views
- Этап 3: JavaScript автосохранение и UI
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
18 KiB
18 KiB