Skip to content

Latest commit

 

History

History
41 lines (25 loc) · 4.43 KB

README.md

File metadata and controls

41 lines (25 loc) · 4.43 KB

MathMech Chat Bot

Проект по ООП студентов УрФУ

Название проекта: Чат-бот "Матмех"

Участники: Рязанова Яна Андреевна ФТ-202, Бараковский Михаил Сергеевич ФТ-202, Павлов Захар Витальевич ФТ-202, Рогов Артемий Фт-201

Основные сценарии использования

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

  1. Оповещает о начале занятия за 10 минут (где, когда)
  2. По просьбе скидывает расписание
  3. По просьбе возвращает ссылки на учебные чаты (предварительно их нужно будет забить)
  4. Наличие кнопки «Я в столовой» и остальные пользователи бота увидят, сколько человек в столовой, чтобы оценить свои шансы поесть в большак

Основные компоненты системы

Внешный слой (User Interface) — взимодействие с пользователем. Будет класс, который обрабатывает запрос пользователя (разбивает запрос на поля, например метод «дать расписание», ID пользователя — группа) и передаёт дальше. Это будет инфраструктура, которая может быть использована потом в других проектах. Этот слой взаимодействует с Application, чтоб отображать данные на нужной платформе, с Domain, чтобы передавать полученные от пользователя данные, и с Infrastructure, чтобы делать запросы к базе данных.

Application — Интерфейс взаимодействия с разными платформами (Алиса, Телеграм)

Domain — есть интерфейс, который описывает поведение всех «фич», и от которого наследуются классы каждой отдельной «фичи». Каждая фича — отдельный класс (Single Responsibility Principle). Оповещение о начале занятий: не получает никаких данных, отправляет пользователю информацию, основываясь на Базе Данных (делаем запрос к Infrastructure) и текущем времени. Все действия типа «получить команду от пользователя и выдать что-то из Базы Данных» помещаем в один абстрактный класс (Расписание/ссылки на чаты): получаем запрос от пользователя скинуть расписание/ссылку на чат, обращаемся к Infrastructure и выдаём пользователю информацию из БД. Кнопки «Я в столовой»/«Сколько людей в столовой»: вызывается функция «увеличить счётчик» / возвращается счётчик.

Infrastructure — База данных хранит расписание. Должен быть класс, который принимает от внешнего слоя данные, которые ввёл пользователь, и добавляет новое значение в базу данных

Точки расширения

  1. Разные статусы пользователей

    1.1. Интерфейс для студента

    1.2. Интерфейс для преподавателя (он сможет скидывать дз учебным группам, которые есть в ботe)

  2. Кроссплатформенность

    2.1. Интерфейс для телеграма

    2.2. Интерфейс для Алисы

  3. База данных

    3.1. JSON-файл храним в коде проекта

    3.2. FireBase от Google