1
0
forked from BRT/arc
arc/README.md
2026-05-25 15:48:53 +05:00

6.6 KiB
Raw Blame History

ARC Desktop

Десктопное Qt6/C++ приложение для мониторинга и автоматизации Android-приложений мобильных банков через ADB. Принимает задачи с бэкенда (получение профиля/балансов, выписка по транзакциям, создание платежей), исполняет их в реальном приложении банка на подключённом устройстве и возвращает результат.

Репозиторий: git@git.brtservice.io:BRT/arc.git


Быстрый старт

git clone git@git.brtservice.io:BRT/arc.git
cd arc

# macOS
brew install qt tesseract leptonica
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
./ARCDesktopProject

Подробнее — см. BUILD.md (macOS + Windows).

При первом запуске потребуется токен авторизации; настройки лежат в config.ini.


Документация

Все актуальные материалы в каталоге docs/. Точка входа — docs/index.md.

Архитектура и фичи

Документ О чём
docs/index.md Общая схема приложения, потоки, технологии
docs/events.md Жизненный цикл задачи: API → БД → выполнение скриптом → отчёт
docs/bank-setup-wizard.md BankSetupWizard — мастер заведения банковского профиля (Ozon, Black, Dushanbe)
docs/status-sync.md Синхронизация online/offline статусов устройств и сервиса
docs/black_tasks.md Скрипты для банка Black (Birbank)
docs/ozon_tasks.md Скрипты для Ozon

Backend API

Документ О чём
docs/api/auth.md Логин, refresh, хранение токенов
docs/api/profile.md bank_profile и material (карты)
docs/api/device.md Регистрация десктопов и Android-устройств, отправка скриншотов
docs/api/task.md Получение задач, отправка результатов
docs/api/network.md Полная карта HTTP-вызовов приложения
docs/api/openapi.json OpenAPI спецификация бэкенда

Сборка и тесты

Документ О чём
BUILD.md Сборка под macOS и Windows
tests/mock_server/README.md Локальный mock-бэкенд для интеграционных тестов
tests/mock_server/WINDOWS.md Особенности запуска моков на Windows
tutorials/ui_info.md Туториал по UI приложения

Архитектура

MainWindow (Qt6 GUI)
  ├── DeviceScreener  (QThread) — опрос ADB-устройств, скриншоты
  ├── EventHandler    (QThread) — оркестратор задач, запуск bank-скриптов
  └── NetworkService  (QThread) — REST API + monitoring relay
android/<bank>/        — автоматизация конкретного банка (ozon, black, dushanbe, ...)
  ├── *Script.{h,cpp}       — CommonScript, LoginAndCheckAccountsScript, PayByCardScript, GetLastTransactionsScript, ...
  └── ScreenXmlParser       — парсинг ADB UI dump

android/adb/           — обёртка над adb (скриншот, tap, swipe, input, uiautomator dump)
android/ocr/           — Tesseract + утилиты поиска текста на скриншоте
android/dump/          — захват UI-дампов

database/              — SQLite через DatabaseManager (singleton) + DAO-слой
  Таблицы: devices → applications → accounts → transactions/events

models/                — POCO: DeviceInfo, AccountInfo, EventInfo, TransactionInfo, ...
services/              — фоновые потоки (DeviceScreener, EventHandler, NetworkService, AppLogger, LogArchiveSender)
views/                 — Qt-виджеты: MainWindow, DeviceWidget, BankSetupWizard, AccountWindow, ...

Полная диаграмма потоков и сигналов — docs/index.md, детально по задачам — docs/events.md.


Технологии

  • Qt 6 (Widgets, Network, Sql, Xml)
  • C++17, CMake (опционально Ninja)
  • SQLite (через QtSql)
  • ADB (платформенные бинари в tools/adb/)
  • Tesseract OCR + Leptonica (eng.traineddata, rus.traineddata)

Поддерживаемые банки (в текущем config.ini): Ozon, Black (Birbank), Dushanbe City Bank. Список расширяется через [apps] list= в config.ini.


Конфигурация

Главный файл — config.ini:

Секция Назначение
[common] Версия, валюты, токен
[apps] list= Активные банки
[db] dbPath= Путь к SQLite (./database/app_data.db)
[net] apiBase, пути ручек, мониторинг-релей
[<bank>] android_package_name, currency, country, app_version, ...

Схема БД — migrations.sql (5 таблиц).


Полезные пути

  • Логи приложения: application.log (в корне), архив отправляется через LogArchiveSender на monitoringBase
  • ADB-бинари для Windows: tools/adb/windows/
  • Тестовые скриншоты/XML: assets/<bank>/
  • Иконки и ресурсы: images/, arc.icns, arc.ico, app.rc

Скрипты бэкенда и операционные ссылки

  • Backend API (prod): см. apiBase в config.ini
  • Monitoring relay: 142.93.102.40:8080 — релеит /monitoring/log и /monitoring/dump в Telegram (systemd arc-monitoring.service)