328.87K

Travel_Collab_defense_clean

1.

МИНОБРНАУКИ РОССИИ
ФГБОУ ВО «ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Факультет компьютерных наук
Разработка системы Travel-Collab
для совместного планирования путешествий
Выпускная квалификационная работа
Маршрут
Чат
Расходы
Студент: ______________________
Руководитель: __________________
Воронеж, 2026
1

2.

Проблема: расходы сложно восстановить после
поездки
Практический пример: поездка с друзьями в Геленджик
1. Один платит за
всех
Например, за жилье, кафе или
такси.
2. Двое платят за
четверых
Суммы делятся между людьми
неравномерно.
3. Оплата за других
4. Наличка
Человек может оплатить покупку,
в которой сам не участвовал.
Часть операций не
видна в банковской
истории.
Итоговая проблема
После поездки приходится восстанавливать расходы по памяти, переводам и переписке. Из-за разных схем
оплаты легко ошибиться: кто оплатил, за кого оплатил и кто в итоге кому должен.
Та же проблема возникает не только в путешествиях: шашлыки, прогулка компанией, совместный выезд, мероприятие, обычный день с общими
тратами.
Вывод: сервис должен помогать не только ставить точки на карте, но и фиксировать групповые расходы в контексте события.
2

3.

Идея решения: единая рабочая область
Travel-Collab связывает план, участников, обсуждение и финансы в одном месте
Поездка / групповое
событие
Участники и роли
Маршруты
Точки на карте
Чат
Расходы и балансы
Система решает не только вопрос «где мы были», но и вопросы «что обсуждали», «что оплатили» и «кто кому
должен».
3

4.

Цель и задачи работы
Цель: разработать систему Travel-Collab для совместного планирования путешествий, маршрутов, точек интереса, обсуждения и
групповых расходов.
— Проанализировать предметную область и существующие решения
— Спроектировать архитектуру, модель данных и ролевую модель
— Реализовать backend, REST API, авторизацию и WebSocket
— Реализовать frontend с картой, маршрутами, чатом и расходами
— Подготовить мобильный сценарий и Android APK через Capacitor
— Провести тестирование основных пользовательских сценариев
4

5.

Аналоги и отличие Travel-Collab
Существующие сервисы закрывают отдельные части задачи
Возможность
Google Maps
Splitwise
Wanderlog
Travel-Collab
Карта и точки
Да
Нет
Да
Да
Маршруты
Частично
Нет
Да
Да
Чат внутри поездки
Нет
Нет
Не основной сценарий
Да
Групповые расходы
Нет
Да
Да
Да
Связь расходов с точками
Нет
Нет
Частично
Да
Отличие Travel-Collab — не замена всех внешних сервисов, а связка карты, маршрута, обсуждения
и финансовой части внутри одной поездки.
5

6.

Пользовательский сценарий
От создания поездки до итоговых взаиморасчетов
1
2
Создать
поездку
3
Пригласить
участников
Добавить точки
и маршрут
4
5
Обсудить
детали
6
Записать
расходы
Получить
взаиморасчеты
Зачем это удобно
Что получает группа
Все ключевые действия выполняются по ходу поездки или
события, а не восстанавливаются после него по памяти.
Общий план, историю обсуждений, список расходов,
баланс участников и понятные рекомендации переводов.
6

7.

Демонстрация: web-версия
Слайд предназначен для вставки скриншота или короткого видео с компьютера
ВСТАВИТЬ ВИДЕО / СКРИНШОТ WEB-ВЕРСИИ
Например: создание поездки, добавление точки на карту, открытие панели расходов.
— Экран списка поездок
и создание новой
поездки
— Страница поездки:
карта, маршруты,
участники
— Добавление точки
интереса и связь с
маршрутом
— Переход к модулю
расходов
Видео 30–45 секунд
7

8.

Демонстрация: Android APK и мобильный сценарий
Слайд для записи с телефона или эмулятора
Зачем показывать
APK
Комиссия видит, что приложение рассчитано
не только на desktop, но и на использование
во время поездки.
ВСТАВИТЬ
ВИДЕО APK
Что показать
Вход, открытие поездки, просмотр
карты, чат или добавление расхода.
Как лучше записать
Записать короткий вертикальный фрагмент 20–30 секунд: открыть
APK, войти, показать поездку, открыть расходы. В презентации
можно вставить его как видео рядом с web-демо.
Важно: мобильный сценарий нужен не для “галочки”, а потому что
расходы часто фиксируются прямо во время поездки или мероприятия.
8

9.

Сценарий короткого демонстрационного видео
Оптимальная длительность: 60–90 секунд
0–15 с
Создать новую поездку
название, даты, описание
15–30 с
Добавить участника / показать invite-код
объяснить групповую работу
30–45 с
Добавить точку на карту
показать связь с маршрутом
45–65 с
Создать расход
плательщик, участники, равное или ручное распределение
65–80 с
Показать баланс
кто оплатил больше и кто кому должен
80–90 с
Открыть APK / мобильный экран
показать тот же сценарий на телефоне
Можно синхронизировать запись с компьютера и телефона, но лучше не усложнять: достаточно одного общего сценария и одного короткого
мобильного фрагмента.
9

10.

Модуль расходов: от платежа до взаиморасчетов
Ключевая прикладная часть проекта
Расход
Кто оплатил и сколько
Между кем распределить
Баланс каждого участника
Пример
Отель — 9000 ₽
Оплатил: Иван — 9000 ₽
Участники: Иван, Анна, Олег
Распределение: поровну, по 3000 ₽
Анна → Ивану: 3000 ₽
Олег → Ивану: 3000 ₽
Кто кому должен
Система отдельно учитывает плательщиков и участников распределения. Это покрывает ситуации, когда один
платит за всех, двое платят за четверых или человек оплачивает расход, в котором сам не участвует.
10

11.

Расходы связаны с контекстом поездки
Финансовая запись не оторвана от маршрута, карты и обсуждения
Кафе на набережной
Расход: 4200 ₽, распределение между участниками
Отель
Экскурсия
Расход: 6000 ₽, оплачено одним участником
Кафе
Экскурсия
Такси до отеля
Расход: 1500 ₽, участники выбраны вручную
Пользователь видит не только сумму, но и контекст: где возник расход и к какой части поездки он
относится.
11

12.

Архитектура системы
Простая клиент-серверная схема без лишней сложности
Web-браузер
Мобильный браузер
Frontend
Vue 3 + TypeScript
Backend
Go + Chi
PostgreSQL
+ PostGIS
Android APK
REST API — основные операции
WebSocket — чат и real-time
Capacitor — сборка APK
PostGIS — координаты точек
12

13.

Модель данных и проверка доступа
Центральная сущность системы — поездка
trips
Участники
Маршрут и карта
users + trip_members
роли owner / editor / viewer
trip_routes + locations
координаты через PostGIS
Обсуждение
Финансы
messages
история + WebSocket
expenses
плательщики, распределение, баланс
Проверка доступа на backend: JWT подтверждает пользователя, trip_members подтверждает участие в поездке, роль определяет разрешенные
действия.
Скрытие кнопок в интерфейсе не заменяет серверную проверку прав.
13

14.

Результаты работы и дальнейшее развитие
Реализовано
Развитие
Создание поездок и invite-коды
Роли owner / editor / viewer
Маршруты и точки на карте
WebSocket-чат поездки
Расходы, балансы и взаиморасчеты
Web-версия и Android APK
Backend-проверки доступа и финансовых данных
HTTPS / WSS и production-развертывание
Refresh-токены и rate limiting
Push-уведомления
Мультивалютность
Экспорт финансовой сводки
Расширение сценариев групповых событий
Итог: разработано приложение, которое объединяет планирование поездки, карту, обсуждение и расчет групповых расходов в одной
рабочей области.
14
English     Русский Правила