Ответ
Заголовок бага: [Мобильное приложение] Некорректное сохранение номера квартиры при выборе адреса через автозаполнение Google Places API.
Шаги воспроизведения:
- Открыть экран оформления заказа в приложении доставки еды.
- В поле "Адрес" начать вводить "ул. Ленина, 10".
- Выбрать подсказку из выпадающего списка (Google Places API).
- Нажать "Подтвердить адрес".
- Перейти к подтверждению заказа.
Фактический результат: В итоговом заказе адрес отображается как "ул. Ленина, 1, кв 0".
Ожидаемый результат: Адрес должен сохраняться точно как выбранный пользователем, например, "ул. Ленина, 10".
Причина: Ошибка в функции парсинга структурированного ответа от Google Places API. Код неправильно извлекал номер дома и номер квартиры из массива address_components.
Код с ошибкой:
// Функция парсинга адреса (упрощенно)
function parseGoogleAddress(components) {
let streetNumber = '';
let apartment = '';
for (let comp of components) {
if (comp.types.includes('street_number')) {
streetNumber = comp.longText; // Ошибка: 'longText' не существует
}
if (comp.types.includes('subpremise')) {
apartment = `кв ${comp.shortText}`;
}
}
// Опасная конкатенация: если streetNumber = "10", apartment = "", результат "10"
// Но если streetNumber = "", apartment = "", результат "1" из-за дефолтного значения
return `ул. Ленина, ${streetNumber || '1'}, ${apartment || 'кв 0'}`;
}
Доказательства:
- Скриншот экрана с ошибкой.
- Лог ответа от API в формате JSON, приложенный к багу.
Серьезность (Severity): Major (приводит к доставке не по тому адресу).
Приоритет (Priority): High.
Предложенное исправление:
- Использовать корректные свойства объекта (
comp.long_name). - Убрать подстановку дефолтных значений "1" и "кв 0".
- Добавить валидацию: если номер дома не распознан, запросить у пользователя ввод вручную.
Среда: iOS/Android, версия приложения 2.5.1.