Skip to content

InnoScripts2/My-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

План интеграции и миграции

Этап 0. Инвентаризация активов

  • Систематизировать содержимое блоков 1–6 и связанных каталогов libs/python, libs/cpp, Android-проектов.
  • Зафиксировать для каждого артефакта язык, назначение, зависимости, состояние готовности.
  • Определить дубли и устаревшие компоненты, которые можно исключить сразу.
  • Для блок 4 (Windows-приложение) подготовить отдельный отчёт: модули, используемые библиотеки, последовательности команд, точки интеграции с OBD-оборудованием.

Этап 1. Архитектурный макет

  • Построить целевую архитектуру: Android-клиент (Kotlin/Java) как фронт, JNI-слой на C++, обвязка Python-инструментов.
  • Зафиксировать жизненный цикл диагностики: UI → JNI → драйвер → Python-аналитика → UI.
  • Определить, где выполняются Python-скрипты (на устройстве или на отдельном сервисе) и как организована передача данных.
  • Сформировать схемы потоков данных и ответственности модулей после удаления Node.js.

Этап 2. Рефакторинг репозитория

  • Перенести актуальные Android-модули в apps-unified/android-kiosk, настроить Gradle.
  • Создать структуры libs/cpp и libs/python под итоговые пакеты; зафиксировать стандарты сборки (CMake, setuptools или equivalents).
  • Архивировать/удалить Node.js проекты и TypeScript-пакеты; сохранить полезные артефакты (иконки, сертификаты, документацию) отдельно.
  • Обновить корневые конфиги, указаним новые корневые директории и скрипты сборки.

Этап 3. Анализ и перенос Windows-приложения

  • Разобрать логику блок 4: последовательность запросов к OBD, обработка ответов, управление потоками, логирование.
  • Выделить переносимые части: алгоритмы диагностики, обработка кодов, работа с последовательным портом.
  • Составить маппинг WinForms UI → Android-экранов, описать необходимые элементы интерфейса.
  • Подготовить план переписывания: что переносится в C++ (драйвер), что в Kotlin (оркестрация), что в Python (аналитика).

Этап 4. Подготовка C++ инфраструктуры

  • Собрать исходники из блок 3, блок 6, libs/cpp в единый модуль.
  • Описать целевые API C++ (инициализация адаптера, чтение DTC, очистка ошибок, события).
  • Настроить сборку через CMake/Gradle NDK, подготовить заголовки для JNI.
  • Добавить модульные тесты на уровне C++ (GoogleTest или аналог) для базовых операций.

Этап 5. Обвязка JNI и интеграция в Android

  • Сгенерировать JNI-интерфейсы для вызова C++ API из Kotlin/Java.
  • Настроить Gradle-проекты Android на сборку и поставку .so библиотек.
  • Реализовать Kotlin-обёртки (Repository/UseCase) поверх JNI.
  • Обновить Android UI-потоки с учётом новых источников данных.

Этап 6. Консолидация Python-инструментов

  • Проанализировать блок 1, блок 5, libs/python; выбрать полезные скрипты и модули.
  • Стандартизировать структуру пакета: пакеты, точка входа, зависимости (pip requirements).
  • Определить способ запуска: встроенный интерпретатор (Chaquopy, BeeWare) или сторонний сервис.
  • Написать адаптеры взаимодействия Android ↔ Python (IPC, HTTP локальный, gRPC или встраивание).

Этап 7. Удаление Node.js и связанных сервисов

  • Из репозитория удаляются apps/kiosk-agent, apps/kiosk, apps-unified/kiosk-agent, связанные скрипты infra.
  • Обновляются документация, CI/CD, скрипты сборки для работы без Node.js.
  • Переносится полезная бизнес-логика и макеты из фронтендов на Android.
  • Проверяется, что в проекте не осталось ссылок на Node.js.

Этап 8. Сборка Android-приложения

  • Провести глубокий рефакторинг UI/UX, опираясь на опыт Windows-приложения.
  • Настроить экраны: приветствие, выбор услуг, диагностика, отчёты.
  • Интегрировать новый стек: вызовы JNI, обработка ответов Python, визуализация результатов.
  • Реализовать сохранение отчётов, логирование сеансов, работу с файлами.

Этап 9. Тестирование и сертификация

  • Подготовить тестовое покрытие: unit (Kotlin), instrumentation tests, C++ tests, Python tests.
  • Организовать интеграционные тесты: эмуляция устройства, проверка цепочки UI → C++ → Python.
  • Настроить автоматическую сборку (CI) и статический анализ (lint, clang-tidy, mypy).
  • Протестировать на целевых устройствах Android, проверить производительность и надёжность.

Этап 10. Документация и подготовка к релизу

  • Обновить README, архитектурные схемы, технические спецификации.
  • Подготовить инструкции по сборке, развёртыванию, тестированию.
  • Обновить планы сопровождения и roadmap.
  • Сформировать backlog улучшений и задач для пострелизного этапа.

Android WebView оболочка для киоска

Этот модуль — минимальный 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.

Сборка

  1. Установите Android Studio (или командно-строчные инструменты).
  2. Если хотите собирать из консоли, добавьте Gradle в PATH (choco install gradle) или сначала откройте проект в Android Studio, чтобы он сгенерировал wrapper.
  3. Сборка из корня репозитория:
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 lint
export THICKNESS_REPORT_RETENTION_RELEASE=150
export THICKNESS_REPORT_RETENTION_DEBUG=30
./gradlew lint

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published