-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathREADME.txt
41 lines (25 loc) · 2.55 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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