Skip to content

unclled/Construction-Supervision

Repository files navigation

🏗️ Construction Accounting - Система Учета Строительных Работ

Android Kotlin Jetpack Compose

Современное Android приложение для управления строительными проектами


📋 Описание

Construction Accounting — это мобильное приложение для управления строительными проектами, разработанное с использованием современных Android-технологий. Приложение предоставляет инструменты для управления объектами, контроля материалов, ведения журнала работ и координации между участниками проекта.

Ключевой особенностью является реализация Offline-First подхода, обеспечивающего полную функциональность приложения даже при отсутствии подключения к сети.


✨ Ключевые особенности

  • Распознавание документов (OCR): Автоматическое сканирование и заполнение накладных и актов с помощью камеры устройства для ускорения ввода данных.
  • Геолокация и подтверждение присутствия: Использование GPS и Yandex Locator для фиксации местоположения сотрудников и подтверждения их нахождения на строительном объекте.
  • Многопроектное управление: Одновременная работа с несколькими строительными объектами.
  • Учет материалов: Полный цикл контроля материалов: планирование, приемка и расход.
  • Журнал работ: Ведение записей о выполненных работах с автоматическим обновлением статистики проекта.
  • Документооборот: Управление проектной и исполнительной документацией.
  • Система ролей: Разграничение доступа на основе ролей (MANAGER, SUPERVISOR, WORKER).
  • Offline-First: Полная работоспособность приложения без доступа к интернету с последующей синхронизацией данных.

🔌 Демонстрация связи с бэкендом

Архитектура приложения построена для эффективного взаимодействия с реальным сервером, обеспечивая надежную синхронизацию данных и отзывчивый интерфейс.

Стратегия синхронизации данных

  1. Оптимистичное обновление: Все операции (например, обновление расхода материалов или создание записи в журнале) немедленно сохраняются в локальную базу данных (Room). Пользовательский интерфейс обновляется мгновенно, не дожидаясь ответа от сервера.

  2. Фоновая синхронизация: После сохранения локальных изменений, приложение в фоновом режиме отправляет соответствующие запросы на сервер. Для этого используется WorkManager или кастомная система очередей, которая гарантирует доставку данных при появлении интернет-соединения.

  3. Очередь отложенных операций: Если в момент совершения операции сеть отсутствует, она добавляется в специальную очередь. Как только соединение восстанавливается, приложение автоматически обрабатывает эту очередь и отправляет все накопленные данные на сервер.

  4. Разрешение конфликтов: В качестве основной стратегии разрешения конфликтов используется подход "last write wins", где приоритет отдается данным, последними пришедшим на сервер. Локальные данные периодически синхронизируются с сервером для поддержания консистентности.

Основные эндпоинты API

Приложение взаимодействует со следующими ключевыми эндпоинтами для обмена данными:

Аутентификация

  • POST /api/auth/login: Вход пользователя в систему.
  • POST /api/auth/refresh: Обновление токена доступа.
  • GET /api/auth/me: Получение данных о текущем пользователе.

Объекты и этапы

  • GET /api/work-objects: Получение списка всех строительных проектов.
  • GET /api/work-objects/{id}: Получение детальной информации по конкретному проекту.
  • GET /api/stage-objects/search/by-object/{id}: Получение списка этапов для проекта.

Материалы

  • GET /api/work-objects/{id}/materials: Получение списка материалов по проекту.
  • PUT /api/work-objects/{objectId}/materials/{materialId}/actual-amount: Обновление фактического количества принятых материалов.
  • PUT /api/work-objects/{objectId}/materials/{materialId}/spent-amount: Обновление количества израсходованных материалов.

Журнал работ

  • GET /api/work-objects/{id}/messages: Получение записей журнала работ для проекта.
  • POST /api/work-objects/{id}/messages: Создание новой записи в журнале.

🛠️ Технологический стек

  • Язык: Kotlin
  • UI: Jetpack Compose, Material Design 3
  • Асинхронность: Coroutines, Flow
  • Архитектура: Clean Architecture, MVVM, Repository Pattern
  • DI: Hilt
  • База данных: Room (для offline-хранения)
  • Сеть: Retrofit, OkHttp, Gson
  • Навигация: Navigation Compose

🚀 Установка

Требования

  • Android Studio Hedgehog | 2023.1.1 или выше
  • JDK 17

Шаги установки

  1. Клонирование репозитория

    git clone https://github.com/your-repo/construction-accounting.git
    cd construction-accounting
  2. Настройка URL сервера

    Укажите URL вашего бэкенд сервера в файле core/common/src/main/java/com/project/common/Constants.kt:

    object Constants {
        const val SERVER_URL = "http://your-server-url:8080/"
    }
  3. Сборка и запуск проекта

    Откройте проект в Android Studio, дождитесь синхронизации Gradle и запустите приложение на эмуляторе или физическом устройстве.

Releases

No releases published

Packages

No packages published

Languages