system of crush
О проекте
REST API для эффективной работы аварийных служб в сфере водоснабжения и водоотведения.
Оператор в веб-клиенте оформляет обращения жителей и создаёт заявки на ремонт, указывая необходимость отключения воды и все данные для устранения аварии.
Бригадиры в мобильном приложении выбирают задачи, видят адреса и точные данные о материалах. Они фиксируют начало и завершение работ. После выполнения заявок оператор просматривает общую статистику по работе бригад и устраненным авариям.
Администратор управляет сотрудниками и их ролями в системе.
Функционал
Основные функции веб-приложения:
- Сбор обращений от населения.
- Составление заявок на ремонт аварии.
- Фиксация отключения воды.
- Просмотр подробной статистики о работе бригад и оператора.
- Управление пользователями системы.
Основные функции мобильного приложения:
- Выбор заявок на ремонт.
- Просмотр необходимых для работ данных.
- Фиксация начала и завершения работ.
Технический функционал(для фронтенда):
- Swagger документация по всем эндпоинтам и моделям
- Возращение статус-кодов(200, 201, 404, 401, 500)
- JWT Аутентификация
Технологии
Список технологий используемых в проекте
Архитектура
Основная логика
flowchart TB
Client["Front-end"] --> API["Transport REST API"]
API --> JWT["JWT Аутентификация"]
JWT --> Service["Бизнес-логика"]
Service --> DatabaseLayer["Взаимодействие с БД"]
DatabaseLayer --> DB["PostgreSQL"]
API --> Swagger["Swagger UI"]
Инфраструктура
flowchart LR
Docker["Docker"] --> GoApp["Go-приложение"]
Docker --> Swagger["Swagger UI"]
Docker --> DB["PostgreSQL"]
Структура проекта

База данных

Установка и запуск
1. Клонировать репозиторий
git clone https://github.com/Flectere/system_of_crush
cd system_of_crush
2. Настройка .env и конфига
- Создайте
.env файл в корне проекта по шаблону .env.example
- Измените параметры
local_config.json(опционально)
3. Запуск через docker-compose
docker compose up
Использование
Swagger
Для того чтобы перейти на веб-страницу с документацией введите в адресной строке: http://localhost:8080/docs. Там вы сможете просмотреть все эндпоинты, модели запросов и ответов, а так же протестировать работу запросов.
Примеры эндпоинтов
- GET /appeals — получить список обращений.
- POST /appeals — создать новое обращение.
- GET /mobile/application/brigadir/{id_brigadir} — список присвоенных заявок для бригадира.
- PATCH /mobile/{id}/start-application — зафиксировать начало работы.
- GET /statistics/brigades — получить статистику по работе бригад.
Аутентификация
- Вход через эндпоинт
POST /auth/login
- JWT токен передаётся в заголовке
Authorization: Bearer <token>
Роли
- Оператор — веб-клиент, создание заявок и просмотр статистики
- Бригадир — мобильное приложение, выбор и выполнение задач
- Администратор — веб-клиент, управление сотрудниками и ролями