# Dushanbe — экраны и дампы
Чек-лист экранных дампов для банка **Dushanbe City Bank** (`appCode: dushanbe` /
`dushanbe_city_bank`). Используется, когда выходит новая версия приложения и нужно
понять, **какие экраны переснять**.
## Как пользоваться при выходе новой версии
1. Завести папку `assets/dushanbe/<новая_версия>/` (например `assets/dushanbe/3.2.42/`).
2. Пройти по чек-листу ниже и снять XML+скриншот каждого экрана на устройстве с новой
версией. Дампы кладутся в новую папку под теми же именами.
3. Сверить новый дамп с картинкой ниже (на ней — **самый свежий из имеющихся** дампов).
4. Если вёрстка/тексты разошлись с парсером — обновить `android/dushanbe/ScreenXmlParser.cpp`
и при необходимости завести новый трек в `android/dushanbe/AppVersionTrack.h`.
## Версионирование
Парсер Dushanbe версионируется: `android/dushanbe/AppVersionTrack.h`, треки
**Legacy** (< 3.2.33) / **V3_2_33** (3.2.33 .. < 3.2.38) / **V3_2_38** (>= 3.2.38, по
умолчанию). Скрипты выставляют трек один раз: `setVersionTrack(trackForVersion(app.appVersion))`.
Новый трек добавляется **только** если вёрстка реально разошлась с V3_2_38 — иначе хватает
свежих эталонных дампов в `assets/dushanbe/<версия>/`.
**Картинка под каждым экраном — самый свежий доступный дамп** (приоритет
`3.2.41` → `3.2.39` → `3.2.33` → корень `assets/dushanbe/`). Подпись «Текущий дамп»
показывает, из какой версии реально взята картинка. Если эталонного дампа ещё нет —
экран помечен ⚠️ и его надо снять в первую очередь.
---
## 1. Мастер установок (`BankSetupWizard`)
Цепочка: `runPinCheck → runProfileCheck → runCardCheck` (`views/bank/BankSetupWizard.cpp`).
### 1.1. Пин-код / вход (`LoginAndCheckAccountsScript`)
#### Экран запуска — `launch_screen`
Сплэш/загрузка приложения сразу после старта.
- [ ] Снять под новую версию
- Текущий дамп: **3.2.33**
-
#### Экран ввода PIN — `pin_code` ⚠️
Цифровая клавиатура ввода пин-кода. Детектор `isPinCodeScreen()` ещё не реализован
(`ScreenXmlParser.h:45` — TODO «после снятия XML дампов экранов»).
- [ ] **Эталонный дамп ещё не снят — приоритет при следующем съёме**
- Текущий дамп: _нет_
#### Главный экран — `home_screen`
«Главная»: нижняя навигация (Переводы/Сервисы/История) + карточка баланса «TJS\n<дата>».
- [ ] Снять под новую версию
- Текущий дамп: **3.2.33**
-
### 1.2. Профиль (`GetProfileInfoScript`)
#### Боковое меню / профиль — `side_menu`
Шторка профиля: ФИО, телефон, версия/сборка. Из неё парсятся данные профиля.
- [ ] Снять под новую версию
- Текущий дамп: **3.2.41**
-
### 1.3. Карты (`GetCardInfoScript`)
#### Список карт — `cards_screen`
Экран «Мои карты» со списком карт (last numbers, баланс).
- [ ] Снять под новую версию
- Текущий дамп: **3.2.33**
-
#### Детали карты — `card_detail`
Заголовок «Карта»: полный номер, баланс, держатель.
- [ ] Снять под новую версию
- Текущий дамп: **3.2.33**
-
#### Детали карты (альт. вид) — `card_detail_2`
Альтернативное состояние экрана детали карты.
- [ ] Снять под новую версию
- Текущий дамп: **корень (база)**
-
#### Bottom-sheet «Настройки карты» ⚠️
Шторка с пунктами «Реквизиты карты» / «Заблокировать карту» и т.д. (`isCardSettingsBottomSheet()`).
- [ ] **Эталонный дамп ещё не снят — приоритет при следующем съёме**
- Текущий дамп: _нет_
#### Экран «Реквизиты и информация» ⚠️
Табы «Реквизиты карты» / «Реквизиты счета», номер счёта (`isCardRequisitesScreen()`).
- [ ] **Эталонный дамп ещё не снят — приоритет при следующем съёме**
- Текущий дамп: _нет_
---
## 2. fetch_transactions (`EventType::FetchTransactions` → `GetLastTransactionsScript`)
### 2.1. Список истории
#### История операций — `history_screen`
Табы «Операции» / «Выписка», список транзакций.
- [ ] Снять под новую версию
- Текущий дамп: **3.2.33**
-
#### Выписка — `statement_screen`
Экран «Выписка» (появился в 3.2.39+).
- [ ] Снять под новую версию
- Текущий дамп: **3.2.41**
-
#### Экран переводов — `transfers_screen`
Список переводов / вкладка переводов.
- [ ] Снять под новую версию
- Текущий дамп: **3.2.33**
-
### 2.2. Детали транзакции
#### Детали транзакции — `tx_detail`
«Дата операции:», «Номер операции:», сумма, статус (`isTransactionDetailScreen()`).
- [ ] Снять под новую версию
- Текущий дамп: **3.2.33**
-
#### Детали транзакции перевода — `card_transfer_tx_detail`
Детали операции, открытые из истории переводов по карте.
- [ ] Снять под новую версию
- Текущий дамп: **3.2.33**
-
---
## 3. create_transaction (`EventType::CreateTransaction`)
### 3.1. Перевод по карте (`PayByCardScript`)
#### Ввод суммы — `card_transfer_input`
Поле суммы + якорь «Мин. сумма: …» под полем.
- [ ] Снять под новую версию
- Текущий дамп: **3.2.33**
-
#### Подтверждение — `card_transfer_confirm`
Bottom-sheet подтверждения, оранжевая кнопка «Подтверждаю» (RGB 255,117,40).
- [ ] Снять под новую версию
- Текущий дамп: **3.2.33**
-
#### Подтверждение (детали) — `card_transfer_confirm_detail`
Развёрнутые детали в шторке подтверждения.
- [ ] Снять под новую версию
- Текущий дамп: **корень (база)**
-
#### Успех — `card_transfer_success`
Экран «Платёж выполнен», с него снимается ID операции (OCR).
- [ ] Снять под новую версию
- Текущий дамп: **3.2.33**
-
### 3.2. Перевод по телефону (`PayByPhoneScript`)
#### Ввод номера/суммы — `phone_transfer_input`
Поле номера телефона получателя + сумма.
- [ ] Снять под новую версию
- Текущий дамп: **3.2.41**
-
#### Подтверждение — `phone_transfer_confirm`
Шторка подтверждения перевода по номеру.
- [ ] Снять под новую версию
- Текущий дамп: **3.2.41**
-
#### Успех — `phone_transfer_success`
Экран успешного перевода по номеру.
- [ ] Снять под новую версию
- Текущий дамп: **3.2.41**
-
---
## Сводные галереи (только экраны, используемые в коде)
_Эталонные дампы, на которые сейчас нет активного кода (детектор не вызывается), в эти таблицы не включены._
### Задача `fetch_profile` — вход, профиль, карты (`FetchProfile`)
| | | | | | | | |
|---|---|---|---|---|---|---|---|
| 
home_screen
3.2.33 | 
side_menu
3.2.41 | 
cards_screen
3.2.33 | 
card_detail
3.2.33 | | | | |
### Задача `fetch_transactions` (`FetchTransactions`)
| | | | | | | | |
|---|---|---|---|---|---|---|---|
| 
history_screen
3.2.33 | 
statement_screen
3.2.41 | 
transfers_screen
3.2.33 | 
tx_detail
3.2.33 | 
card_transfer_tx_detail
3.2.33 | | | |
### Задача `create_transaction` (`CreateTransaction`)
| | | | | | | | |
|---|---|---|---|---|---|---|---|
| 
card_transfer_input
3.2.33 | 
card_transfer_confirm
3.2.33 | 
card_transfer_success
3.2.33 | 
phone_transfer_input
3.2.41 | 
phone_transfer_confirm
3.2.41 | 
phone_transfer_success
3.2.41 | | |