# Ozon — экраны и дампы Чек-лист экранных дампов для банка **Ozon** (`appCode: ozon`). Используется, когда выходит новая версия приложения и нужно понять, **какие экраны переснять**. ## Как пользоваться при выходе новой версии 1. Завести папку `assets/ozon/<новая_версия>/` (по образцу `assets/dushanbe/<версия>/`). 2. Пройти по чек-листу ниже и снять XML+скриншот каждого экрана на устройстве с новой версией. Дампы кладутся под теми же именами (платёжные — в подпапку `pay/`). 3. Сверить новый дамп с картинкой ниже. 4. Если вёрстка/тексты разошлись с парсером — обновить `android/ozon/ScreenXmlParser.cpp`. ## Версионирование Сейчас парсер Ozon **не версионируется** — опирается на текстовые маркеры (`android/ozon/ScreenXmlParser.cpp`), а эталонные дампы лежат в корне `assets/ozon/` (платёжные — в `assets/ozon/pay/`) без разбивки по версиям. Ozon **тоже будет версионироваться**: конвенция папок `assets/ozon/<версия>/` вводится на будущее по образцу Dushanbe. Когда вёрстка разойдётся между версиями, по аналогии с `android/dushanbe/AppVersionTrack.h` понадобится завести `Ozon::AppVersionTrack` и вызывать `setVersionTrack(...)` в скриптах. **Картинка под каждым экраном — текущий дамп из корня.** Когда появятся папки `assets/ozon/<версия>/`, применяется тот же fallback по убыванию версии, что у Dushanbe. Экраны без эталонного дампа помечены ⚠️ — их надо снять в первую очередь. --- ## 0. Общие баннеры / оверлеи Всплывают поверх любого экрана и должны закрываться во всех задачах для прохождения флоу. #### Реклама на главной — `home_ad_1` Рекламный bottom-sheet (`tryToFindAdBanner()`, `resource-id design_bottom_sheet`). - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - home_ad_1 #### Обновление Google Play — `google_play` In-app update bottom-sheet (`tryToFindGooglePlayBanner()`). - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - google_play #### Баннер ипотеки — `banner_ipoteka` Промо-баннер на главной. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - banner_ipoteka #### Баннер карты — `card_banner` Промо-баннер «Заказать карту» на главной. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - card_banner #### Выбор (bottom-sheet) — `select_bank` Шторка выбора (`tryToFindSelectBottomSheet()`). - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - select_bank #### Онбординг «Обновили главную» ⚠️ `resource-id onboarding_viewpager`, кнопка «Пропустить» (`tryToFindOnboardingBanner()`). - [ ] **Эталонный дамп ещё не снят — приоритет при следующем съёме** - Текущий дамп: _нет_ #### Баннер безопасности ⚠️ «Мы заботимся о вашей безопасности» (`tryToFindSecurityBanner()`). - [ ] **Эталонный дамп ещё не снят — приоритет при следующем съёме** - Текущий дамп: _нет_ #### Системный диалог разрешений ⚠️ `com.google.android.permissioncontroller`, кнопка «ЗАПРЕТИТЬ» (`tryToFindSystemPermissionDenyButton()`). - [ ] **Эталонный дамп ещё не снят — приоритет при следующем съёме** - Текущий дамп: _нет_ --- ## 1. Мастер установок (`BankSetupWizard`) Цепочка: `runPinCheck → runProfileCheck → runCardCheck` (`views/bank/BankSetupWizard.cpp`). ### 1.1. Пин-код / вход (`LoginAndCheckAccountsScript`) #### Главный экран — `home_page` Кнопки «Перевести» + «Пополнить» (`isHomeScreen()`). - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - home_page #### Главный экран (альт. вид) — `home_page_2` Альтернативное состояние главной. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - home_page_2 #### Ввод PIN — `pin_code` Экран ввода пин-кода (`tryToFindPinCode()`). - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pin_code #### Запрос биометрии — `ask_biometry` Диалог предложения включить биометрию. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - ask_biometry ### 1.2. Профиль (`GetProfileInfoScript`) #### Профиль / Аккаунт — `profile` Заголовок «Аккаунт» + кнопка «Выйти» (`isProfileScreen()`), ФИО и телефон. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - profile ### 1.3. Карты (`GetCardInfoScript`) #### Карта — `card_screen` Основное состояние экрана карты. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - card_screen #### Карта (развёрнута) — `card_screen_open` Карта с раскрытыми деталями. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - card_screen_open #### Карта (свёрнута) — `card_screen_hide` Карта со скрытыми деталями. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - card_screen_hide #### Реквизиты счёта ⚠️ Заголовок «Реквизиты счёта» (`isAccountRequisitesScreen()`, `parseAccountNumberFromRequisites()`). - [ ] **Эталонный дамп ещё не снят — приоритет при следующем съёме** - Текущий дамп: _нет_ --- ## 2. fetch_transactions (`EventType::FetchTransactions` → `GetLastTransactionsScript`) ### 2.1. Список истории #### Страница платежей — `payments_page` Раздел платежей/операций. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - payments_page #### Последние транзакции — `last_transactions` Список операций (`isTransactionListScreen()`, `findTransactionButtons()`). - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - last_transactions #### Баннер в списке транзакций — `transaction_banner` Промо-баннер внутри списка операций. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - transaction_banner ### 2.2. Детали транзакции #### Детали транзакции — `transaction_info` Дата, отправитель, телефон, сумма (`parseTransactionDetail()`). - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - transaction_info #### Детали транзакции (СБП) — `transaction_info_spb` Версия деталей для перевода через СБП. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - transaction_info_spb #### Документ операции — `transaction_document` Чек/документ по операции. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - transaction_document --- ## 3. create_transaction (`EventType::CreateTransaction`) ### 3.1. Платёж по карте (`PayByCardScript`) #### Перевод по номеру карты — `pay/pay_by_card` Экран ввода номера карты получателя (WebView). - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pay_by_card #### Ввод суммы — `pay/pay_by_card_enter_sum` Поле суммы перевода по карте. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pay_by_card_enter_sum #### Успех — `pay/pay_by_card_success` Экран успешного перевода по карте. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pay_by_card_success ### 3.2. Платёж по телефону (`PayByPhoneScript`) #### Перевод по номеру — `pay/pay_buy_phone` Основной экран перевода по номеру телефона. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pay_buy_phone #### Ввод суммы — `pay/pay_buy_phone_enter_sum` Поле суммы перевода по номеру. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pay_buy_phone_enter_sum #### Выбор банка — `pay/pay_buy_phone_select_bank` Список банков получателя. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pay_buy_phone_select_bank #### Выбор банка (альт. вид) — `pay/pay_buy_phone_select_bank_1` Альтернативное состояние выбора банка. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pay_buy_phone_select_bank_1 #### Банк по умолчанию — `pay/pay_buy_phone_default_bank` Экран с предустановленным банком получателя. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pay_buy_phone_default_bank #### Проверка данных — `pay/pay_buy_phone_check_data` Экран сверки данных перед отправкой. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pay_buy_phone_check_data #### Перевод на новый номер — `pay/pay_to_new_number` Ввод нового, ранее не использованного номера. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pay_to_new_number #### Перевод на старый номер — `pay/pay_to_old_number` Выбор ранее использованного номера. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pay_to_old_number #### Отправлено — `pay/pay_buy_phone_sent_success` Экран успешной отправки перевода по номеру. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - pay_buy_phone_sent_success ### 3.3. Подтверждение (общее для обоих) #### Подтверждение платежа — `pay/confirm_payment` Экран подтверждения операции. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - confirm_payment #### Подтверждение — успех — `pay/confirm_payment_success` Успешное подтверждение, с него снимается ID операции. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - confirm_payment_success #### Подтверждение — ошибка — `pay/confirm_payment_error` Экран ошибки подтверждения платежа. - [ ] Снять под новую версию - Текущий дамп: **текущий (без версии)** - confirm_payment_error --- ## Сводные галереи (только экраны, используемые в коде) _Эталонные дампы, на которые сейчас нет активного кода (детектор не вызывается), в эти таблицы не включены._ ### Задача `fetch_profile` — вход, профиль, карты (`FetchProfile`) | | | | | | | | | |---|---|---|---|---|---|---|---| |
home_page
текущий (без версии) |
profile
текущий (без версии) | | | | | | | ### Задача `fetch_transactions` (`FetchTransactions`) | | | | | | | | | |---|---|---|---|---|---|---|---| |
payments_page
текущий (без версии) |
last_transactions
текущий (без версии) |
transaction_info
текущий (без версии) | | | | | | ### Задача `create_transaction` (`CreateTransaction`) | | | | | | | | | |---|---|---|---|---|---|---|---| |
pay_by_card
текущий (без версии) |
pay_by_card_enter_sum
текущий (без версии) |
pay_by_card_success
текущий (без версии) |
pay_buy_phone
текущий (без версии) |
pay_buy_phone_enter_sum
текущий (без версии) |
pay_buy_phone_select_bank
текущий (без версии) |
pay_buy_phone_default_bank
текущий (без версии) |
pay_to_new_number
текущий (без версии) | |
pay_to_old_number
текущий (без версии) |
pay_buy_phone_sent_success
текущий (без версии) |
confirm_payment
текущий (без версии) |
confirm_payment_success
текущий (без версии) |
confirm_payment_error
текущий (без версии) | | | | ### Оставшиеся экраны (баннеры/оверлеи, вне серверных задач) | | | | | | | | | |---|---|---|---|---|---|---|---| |
home_ad_1
текущий (без версии) |
google_play
текущий (без версии) | | | | | | |