- Систематизировать содержимое блоков 1–6 и связанных каталогов
libs/python,libs/cpp, Android-проектов. - Зафиксировать для каждого артефакта язык, назначение, зависимости, состояние готовности.
- Определить дубли и устаревшие компоненты, которые можно исключить сразу.
- Для
блок 4(Windows-приложение) подготовить отдельный отчёт: модули, используемые библиотеки, последовательности команд, точки интеграции с OBD-оборудованием.
- Построить целевую архитектуру: Android-клиент (Kotlin/Java) как фронт, JNI-слой на C++, обвязка Python-инструментов.
- Зафиксировать жизненный цикл диагностики: UI → JNI → драйвер → Python-аналитика → UI.
- Определить, где выполняются Python-скрипты (на устройстве или на отдельном сервисе) и как организована передача данных.
- Сформировать схемы потоков данных и ответственности модулей после удаления Node.js.
- Перенести актуальные Android-модули в
apps-unified/android-kiosk, настроить Gradle. - Создать структуры
libs/cppиlibs/pythonпод итоговые пакеты; зафиксировать стандарты сборки (CMake, setuptools или equivalents). - Архивировать/удалить Node.js проекты и TypeScript-пакеты; сохранить полезные артефакты (иконки, сертификаты, документацию) отдельно.
- Обновить корневые конфиги, указаним новые корневые директории и скрипты сборки.
- Разобрать логику
блок 4: последовательность запросов к OBD, обработка ответов, управление потоками, логирование. - Выделить переносимые части: алгоритмы диагностики, обработка кодов, работа с последовательным портом.
- Составить маппинг WinForms UI → Android-экранов, описать необходимые элементы интерфейса.
- Подготовить план переписывания: что переносится в C++ (драйвер), что в Kotlin (оркестрация), что в Python (аналитика).
- Собрать исходники из
блок 3,блок 6,libs/cppв единый модуль. - Описать целевые API C++ (инициализация адаптера, чтение DTC, очистка ошибок, события).
- Настроить сборку через CMake/Gradle NDK, подготовить заголовки для JNI.
- Добавить модульные тесты на уровне C++ (GoogleTest или аналог) для базовых операций.
- Сгенерировать JNI-интерфейсы для вызова C++ API из Kotlin/Java.
- Настроить Gradle-проекты Android на сборку и поставку
.soбиблиотек. - Реализовать Kotlin-обёртки (Repository/UseCase) поверх JNI.
- Обновить Android UI-потоки с учётом новых источников данных.
- Проанализировать
блок 1,блок 5,libs/python; выбрать полезные скрипты и модули. - Стандартизировать структуру пакета: пакеты, точка входа, зависимости (pip requirements).
- Определить способ запуска: встроенный интерпретатор (Chaquopy, BeeWare) или сторонний сервис.
- Написать адаптеры взаимодействия Android ↔ Python (IPC, HTTP локальный, gRPC или встраивание).
- Из репозитория удаляются
apps/kiosk-agent,apps/kiosk,apps-unified/kiosk-agent, связанные скриптыinfra. - Обновляются документация, CI/CD, скрипты сборки для работы без Node.js.
- Переносится полезная бизнес-логика и макеты из фронтендов на Android.
- Проверяется, что в проекте не осталось ссылок на Node.js.
- Провести глубокий рефакторинг UI/UX, опираясь на опыт Windows-приложения.
- Настроить экраны: приветствие, выбор услуг, диагностика, отчёты.
- Интегрировать новый стек: вызовы JNI, обработка ответов Python, визуализация результатов.
- Реализовать сохранение отчётов, логирование сеансов, работу с файлами.
- Подготовить тестовое покрытие: unit (Kotlin), instrumentation tests, C++ tests, Python tests.
- Организовать интеграционные тесты: эмуляция устройства, проверка цепочки UI → C++ → Python.
- Настроить автоматическую сборку (CI) и статический анализ (lint, clang-tidy, mypy).
- Протестировать на целевых устройствах Android, проверить производительность и надёжность.
- Обновить README, архитектурные схемы, технические спецификации.
- Подготовить инструкции по сборке, развёртыванию, тестированию.
- Обновить планы сопровождения и roadmap.
- Сформировать backlog улучшений и задач для пострелизного этапа.
Этот модуль — минимальный Android-проект, который разворачивает фронтенд в WebView. Подходит для быстрых APK-сборок.
- URL берётся из
res/values/strings.xml(kiosk_url). Для эмулятора Android Studio localhost агента/статики доступен какhttp://10.0.2.2:8080/. - Для реального телефона укажите URL ПК в одной сети Wi‑Fi, например
https://192.168.1.10:8443/(с нашим dev-сертификатом). - Поддержан mixed content (для локального HTTP), но для PWA/Service Worker нужен HTTPS.
- Установите Android Studio (или командно-строчные инструменты).
- Если хотите собирать из консоли, добавьте Gradle в PATH (choco install gradle) или сначала откройте проект в Android Studio, чтобы он сгенерировал wrapper.
- Сборка из корня репозитория:
pwsh -NoProfile -ExecutionPolicy Bypass -Command "npm run apk:build"
# Для релизной сборки (понадобится signingConfig):
pwsh -NoProfile -ExecutionPolicy Bypass -Command "npm run apk:build:release"Примечания:
- Скрипт
infra/scripts/setup-gradle-wrapper.ps1попытается сгенерировать gradle-wrapper.jar, если его нет. Для этого требуется установленный Gradle в PATH. Если его нет — откройте проект в Android Studio и запустите Sync, тогда wrapper появится автоматически. - Убедитесь, что переменные среды Android SDK настроены (
ANDROID_HOME/ANDROID_SDK_ROOT), а platform-tools и build-tools доступны в PATH. - Локально можно переопределять лимит хранения отчётов толщиномера:
./gradlew -PthicknessReportRetentionRelease=150 -PthicknessReportRetentionDebug=30 lintили установив переменные окруженияTHICKNESS_REPORT_RETENTION_RELEASE/THICKNESS_REPORT_RETENTION_DEBUG. Без переопределений используется значение по умолчанию200/50.
$env:THICKNESS_REPORT_RETENTION_RELEASE = 150
$env:THICKNESS_REPORT_RETENTION_DEBUG = 30
./gradlew lintexport THICKNESS_REPORT_RETENTION_RELEASE=150
export THICKNESS_REPORT_RETENTION_DEBUG=30
./gradlew lint