Используемые технологии:
- Go
- SQLite
- GitHubActions CI/CD
Чат-бот, написанный на Golang, для ВКонтакте. Имеет функционал, предоставляющий расписание занятий для студентов НИУ МГСУ.
Создан как проект, чтобы научиться работать с SQL (использована база данных SQLite. Запросы написаны на чистом SQL без использования ORM), также разобраться в CI/CD процессах, GitHubActions и хостингах.
•Университет не предоставляет удобный способ получения обновленного расписания занятий. Таким образом, чат-бот может стать альтернативным и удобным способом получения расписания занятий для студентов, которым требуется более быстрый и удобный доступ к этой информации.
•Студентам часто бывает трудно запомнить свое расписание или не могут найти его в нужный момент. Чат-бот может стать удобным и быстрым способом для получения расписания занятий, без необходимости запоминать его или искать на других ресурсах, помимо мессенджера.
•Наличие чат-бота может значительно упростить и улучшить жизнь студентов. Это может повысить удобство использования и повысить охват пользователей, что приведет к увеличению числа пользователей и возможному расширению функционала чат-бота в будущем.
•Чат-бот работает на платформе ВКонтакте
1)Пользователь отправляет запрос в чат-бот с указанием номера группы и дня недели, на который он хочет получить расписание. 2)Чат-бот обрабатывает запрос и выдает пользователю расписание занятий на указанный день.
•Регистрация и настройка сообщества чат-бота на платформе ВКонтакте.
•Создание определенного алгоритма обработки запросов пользователя. Написание программного кода для обработки запросов от пользователей. Для сохранения чистой архитектуры проекта и следованию принципам SOLID, алгоритм разработки был:
- Инициализация конфига
- Инициализация логгирования
- Описание структуры базы данных и её методов
- Инициализация базы данных (в данном случае SQLite)
- Описание интерфейса базы данных
- Описание поведения чат-бота
- Инициализация приложения
•Кодовая база разделена по модулям (пакетам) в соответсивии golang-standards/project-layout, также использована библиотека линтеров golangci-lint
•Определение структуры данных, используемых для хранения информации о расписании занятий. Была использована база данных SQLite для хранения данных пользователей и расписания занятий, поскольку она легковесная и с ней не появляется необходимость в Docker-контейнерах и их оркестрации. База данных имеет 2 схемы: schedule с полями lesson_id INTEGER PRIMARY KEY, institute TEXT, course INTEGER, group_number INTEGER, lesson_name TEXT, lesson_type TEXT, date_range TEXT, day TEXT, audience TEXT, lesson_number INTEGER, week TEX и users с полями user_id INTEGER PRIMARY KEY, institute TEXT, course INTEGER, group_number INTEGER, peer_id INTEGER, week TEXT.
Получение расписания для конкретного пользователя через JOIN, с сравнением полей схем и peer_id пользователя ВКонтакте.
•Следование SOLID-принципам и принципам чистой архитектуры, для предотвращения роста технического долга проекта.
•Установка необходимых инструментов. Например GCC и G++ компиляторы на Windows, для запуска инструментов вне UNIX-подобных систем.
•Внесение данных в базу из неудобных для парсинга форматов(PDF).
•Выбор хостинга и дистрибутива для приложения (приложение было поднято на Ubuntu 22.04 из-за glibc-библиотеки, необходимой для чат-бота).
•Деплой на удаленный хостинг, связанный с малым опытом в разработке.
•Размещение и тестирование чат-бота на платформе ВКонтакте.
•Улучшение коммуникации между студентами и университетом. Чат-бот может стать дополнительным каналом связи между студентами и университетом, что может помочь улучшить коммуникацию и облегчить процесс получения информации.
•Удобство использования чат-бота и возможность быстрого доступа к расписанию занятий. Приложение может предоставлять студентам расписание, не выходя из приложения ВКонтакте, что может увеличить удобство получения информации.
•Уменьшение технического долга, рефакторинг.
•Добавление новых функций, например, напоминаний о ближайших занятиях или уведомлений об изменениях в расписании.
•Работа с другими форматами начальных данных.
•Написание API для неавторизированных пользователей.