Fix: Enable autosave for delivery address fields with partial data

Исправлена проблема с автосохранением полей адреса доставки. Теперь адрес
сохраняется при заполнении любого поля, а не только при наличии улицы и
номера дома.

Изменения в Backend (address_service.py):
- Изменена логика валидации в process_address_from_form()
- Теперь адрес сохраняется если заполнено хотя бы одно поле
- Удалено жёсткое требование заполнения street и building_number
- Проверяем наличие данных во всех полях адреса

Изменения в Frontend (autosave.js):
- Переработана логика сбора данных адреса
- address_mode='new' устанавливается при заполнении любого поля адреса
- Все непустые поля адреса отправляются на сервер
- Используется более элегантный подход с Object.values() и .some()

Теперь автосохранение работает корректно:
- Заполнение поля "Улица" → автосохранение срабатывает
- Заполнение "Номер дома" → автосохранение срабатывает
- Заполнение любого другого поля адреса → автосохранение срабатывает
- После перезагрузки страницы все данные восстанавливаются

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-25 19:49:58 +03:00
parent fbc9d86a62
commit a3f5ac4c08
2 changed files with 40 additions and 31 deletions

View File

@@ -74,11 +74,23 @@ class AddressService:
street = form_data.get('address_street', '').strip()
building_number = form_data.get('address_building_number', '').strip()
if not street or not building_number:
# Если обязательные поля не заполнены, возвращаем None
# Для автосохранения разрешаем сохранять адрес даже если не все поля заполнены
# Проверяем только что хотя бы одно поле адреса заполнено
has_any_address_data = any([
street,
building_number,
form_data.get('address_apartment_number', '').strip(),
form_data.get('address_entrance', '').strip(),
form_data.get('address_floor', '').strip(),
form_data.get('address_intercom_code', '').strip(),
form_data.get('address_delivery_instructions', '').strip(),
])
if not has_any_address_data:
# Если все поля адреса пустые, возвращаем None
return None
# Создаем новый адрес
# Создаем новый адрес (даже если не все обязательные поля заполнены)
address = AddressService.create_address_from_form_data(form_data)
return address