Files

5.7 KiB

Tasks

1. Скелет проекта и сборка

  • 1.1 Создать верхнеуровневый Gradle-проект android/ (Kotlin, Jetpack Compose, version catalog, minSdk 28) и проверить, что ./gradlew :app:assembleDebug собирает APK
  • 1.2 Задать структуру пакетов (app/data/domain/ui) и проверить, что ./gradlew lint и сборка проходят без ошибок
  • 1.3 Добавить цель android в Makefile и проверить, что make android собирает APK
  • 1.4 Настроить debug- и release-подпись (release keystore вне репозитория) и проверить, что release-конфигурация резолвится без секретов в репозитории

2. Сеть и настройка сервера

  • 2.1 Экран ввода базового URL, проверка GET /api/health, хранение в DataStore — проверить против запущенного galo
  • 2.2 Шлюз «небезопасное соединение» для http — тест: HTTP заблокирован по умолчанию и разрешён после включения тумблера
  • 2.3 OkHttp-клиент, резолвящий относительные URL объектов против базового адреса — unit-тест на /api/objects/<key>?...
  • 2.4 Маппинг ошибок {error:{code,message}} и сообщений для пользователя — unit-тест на разборе ошибки
  • 2.5 Auth API (register/login/refresh/logout), защищённое хранение токенов (Keystore) и прозрачный refresh на 401 — тест: сессия переживает перезапуск, 401 приводит к обновлению и повтору

3. Браузинг и кэш

  • 3.1 Схема Room для альбомов/фото и репозиторий с фолбэком на кэш — unit-тест репозитория в онлайн- и офлайн-ветках
  • 3.2 Экран списка альбомов с обложками, счётчиками и признаком офлайн — UI-тест/ручная проверка
  • 3.3 Сетка альбома с постраничной загрузкой по курсору — тест слияния страниц
  • 3.4 Кэш Coil по пути объекта без query — unit-тест ключа и проверка переиспользования при смене подписи
  • 3.5 Открытие альбома из кэша офлайн — проверить в режиме полёта на прогретом кэше

4. Просмотр медиа

  • 4.1 Полноэкранный просмотр изображений (preview/medium) со свайп-навигацией — UI-тест
  • 4.2 Воспроизведение видео (Media3) с постером и перемоткой — проверить Range/seek против сервера
  • 4.3 Просмотр панорамы 360 — проверить поведение перетаскивания на паритет с веб-реализацией

5. Real-time

  • 5.1 SSE-клиент (okhttp-sse) на активном экране альбома с токеном — проверить обновление сетки по событию
  • 5.2 Переподключение с backoff и догон через ?since= — тест сверки пропущенных событий

6. Конвейер загрузки

  • 6.1 Системный Photo Picker (мультивыбор), выбор альбома и постановка задания в Room — проверить создание queued-заданий
  • 6.2 WorkManager-воркер: один файл на multipart POST, per-file статус — интеграционный тест против сервера
  • 6.3 Конвертация HEIC/HEIF→JPEG с сохранением даты/геолокации и имени файла — unit-тест EXIF и проверка приёма сервером
  • 6.4 Foreground-уведомление прогресса для крупных/видео-загрузок и retry с backoff — проверить продолжение загрузки в фоне
  • 6.5 Сетевые ограничения (Wi-Fi-only) и сохранность очереди между запусками — тест возобновления после перезапуска процесса
  • 6.6 UI статусов загрузки с per-file статусом и ошибками сервера — UI-тест

7. Интеграция и документация

  • 7.1 End-to-end прогон: онбординг → вход → браузинг → загрузка → появление фото через SSE на реальном инстансе galo
  • 7.2 README Android-клиента (настройка URL, заметка про HEIC, LAN/cleartext, сборка и подпись) — проверить, что команды выполняются как описано
  • 7.3 Обновить project.md §17, чтобы он больше не исключал мобильный клиент — проверить, что формулировка отражает Android-приложение

Workflow follow-up

  • Заархивировать изменение после выполнения требований ревью проекта.
  • Проверить результат архивации.