# 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`).
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Обновление Google Play — `google_play`
In-app update bottom-sheet (`tryToFindGooglePlayBanner()`).
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Баннер ипотеки — `banner_ipoteka`
Промо-баннер на главной.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Баннер карты — `card_banner`
Промо-баннер «Заказать карту» на главной.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Выбор (bottom-sheet) — `select_bank`
Шторка выбора (`tryToFindSelectBottomSheet()`).
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Онбординг «Обновили главную» ⚠️
`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_2`
Альтернативное состояние главной.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Ввод PIN — `pin_code`
Экран ввода пин-кода (`tryToFindPinCode()`).
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Запрос биометрии — `ask_biometry`
Диалог предложения включить биометрию.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
### 1.2. Профиль (`GetProfileInfoScript`)
#### Профиль / Аккаунт — `profile`
Заголовок «Аккаунт» + кнопка «Выйти» (`isProfileScreen()`), ФИО и телефон.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
### 1.3. Карты (`GetCardInfoScript`)
#### Карта — `card_screen`
Основное состояние экрана карты.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Карта (развёрнута) — `card_screen_open`
Карта с раскрытыми деталями.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Карта (свёрнута) — `card_screen_hide`
Карта со скрытыми деталями.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Реквизиты счёта ⚠️
Заголовок «Реквизиты счёта» (`isAccountRequisitesScreen()`, `parseAccountNumberFromRequisites()`).
- [ ] **Эталонный дамп ещё не снят — приоритет при следующем съёме**
- Текущий дамп: _нет_
---
## 2. fetch_transactions (`EventType::FetchTransactions` → `GetLastTransactionsScript`)
### 2.1. Список истории
#### Страница платежей — `payments_page`
Раздел платежей/операций.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Последние транзакции — `last_transactions`
Список операций (`isTransactionListScreen()`, `findTransactionButtons()`).
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Баннер в списке транзакций — `transaction_banner`
Промо-баннер внутри списка операций.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
### 2.2. Детали транзакции
#### Детали транзакции — `transaction_info`
Дата, отправитель, телефон, сумма (`parseTransactionDetail()`).
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Детали транзакции (СБП) — `transaction_info_spb`
Версия деталей для перевода через СБП.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Документ операции — `transaction_document`
Чек/документ по операции.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
---
## 3. create_transaction (`EventType::CreateTransaction`)
### 3.1. Платёж по карте (`PayByCardScript`)
#### Перевод по номеру карты — `pay/pay_by_card`
Экран ввода номера карты получателя (WebView).
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Ввод суммы — `pay/pay_by_card_enter_sum`
Поле суммы перевода по карте.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Успех — `pay/pay_by_card_success`
Экран успешного перевода по карте.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
### 3.2. Платёж по телефону (`PayByPhoneScript`)
#### Перевод по номеру — `pay/pay_buy_phone`
Основной экран перевода по номеру телефона.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Ввод суммы — `pay/pay_buy_phone_enter_sum`
Поле суммы перевода по номеру.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Выбор банка — `pay/pay_buy_phone_select_bank`
Список банков получателя.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Выбор банка (альт. вид) — `pay/pay_buy_phone_select_bank_1`
Альтернативное состояние выбора банка.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Банк по умолчанию — `pay/pay_buy_phone_default_bank`
Экран с предустановленным банком получателя.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Проверка данных — `pay/pay_buy_phone_check_data`
Экран сверки данных перед отправкой.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Перевод на новый номер — `pay/pay_to_new_number`
Ввод нового, ранее не использованного номера.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Перевод на старый номер — `pay/pay_to_old_number`
Выбор ранее использованного номера.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Отправлено — `pay/pay_buy_phone_sent_success`
Экран успешной отправки перевода по номеру.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
### 3.3. Подтверждение (общее для обоих)
#### Подтверждение платежа — `pay/confirm_payment`
Экран подтверждения операции.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Подтверждение — успех — `pay/confirm_payment_success`
Успешное подтверждение, с него снимается ID операции.
- [ ] Снять под новую версию
- Текущий дамп: **текущий (без версии)**
-
#### Подтверждение — ошибка — `pay/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
текущий (без версии) | | | | | | |