1
0
forked from BRT/arc
arc/docs/ozon_screens.md

322 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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