1. Functionality
Пользовательский интерфейс реализован с использованием телеграм-бота, предоставляющий следующий набор команд:
-
/start
- Описание: запускает бота.
- Предшествующие команды: не влияют на поведение программы.
- Результат выполнения: пользователю отправляется сообщение с описанием и синтаксисом доступных команд.
-
/help
- Описание: напоминает пользователю список доступных команд.
- Предшествующие команды: не влияют на поведение программы.
- Результат выполнения: пользователю отправляется сообщение с описанием и синтаксисом доступных команд.
-
/subscribe {anime_link}
- Описание: добавляет аниме в список отслеживаемых сериалов.
- Предшествующие команды: если аниме уже было добавлено командой /subscribe, список отслеживаемых сериалов не изменится.
- Требования к аргументам: ссылка должна вести на существующую страницу на сайте myanimelist.
- Результат выполнения: если требования к аргументу выполнены, в списке отслеживаемых сериалов для данного пользователя появится указанное аниме, и после выхода нового эпизода ему будет приходить соответствующее уведомление. Если же требования не выполнены: аргумент команды не является ссылкой или ссылка не валидна – пользователю сообщается об ошибке.
-
/unsubscribe {anime_link}
- Описание: удаляет аниме из списка отслеживаемых сериалов.
- Предшествующие команды: для успешного удаления аниме должен быть добавлен командой /subscribe.
- Требования к аргументам: ссылка должна вести на существующую страницу на сайте myanimelist.
- Результат выполнения: Если аниме уже было добавлено командой /subscribe и не было удалено командой /unsubscribe, оно будет удалено из списка. Если аниме уже было удалено, будет выведено сообщение об ошибке. Если аниме никогда не добавлялось в список отслеживаемых, будет выведено соответствующее сообщение. Если требования к аргументу не выполнены: аргумент команды не является ссылкой или ссылка не валидна – пользователю сообщается об ошибкe.
-
/list
- Описание: выводит список отслеживаемых аниме.
- Предшествующие команды:команды /subscribe и /unsubscribe позволяют добавлять и удалять аниме из списка. Изначально список пустой.
- Результат выполнения: пользователю присылается список ссылок на аниме, которые отслеживаются этим пользователем. Если список пустой, выводится соответствующее сообщение.
-
/weekly
- Описание: выводит список отслеживаемых пользователем и ожидаемых на текущей неделе аниме.
- Предшествующие команды:команды /subscribe и /unsubscribe позволяют управлять списком отслеживаемых аниме.
- Результат выполнения: Пользователю отправляется сообщение с данными об аниме из его списка, если выход новой серии ожидается на текущей неделе.
-
Асинхронное взаимодействие
В день выхода новой серии аниме из списка пользователя бот должен отправлять сообщение, содержащее информацию о добавлении нового эпизода.
2. Usability
Внешний интерфейс telegram-бота должен быть достаточно комфортным и простым в использовании:
- Среднее время ознакомления с ботом составляло не более 5 минут
- Среднее время составления запроса не более 1 минуты
- Наличие /help со всем перечисленным функционалом, подсказки при ошибочном оформлении запроса по необходимости
3. Reliability
- Availability
Сервис должен быть доступен 23,5 часов в сутки. При нормальной работе бота ответ должен приходить в течение минуты. В случае незапланированного сбоя системы запрос может быть не обработан
- MTTR
Среднее время восстановления работоспособности должно составлять около 1 дня в случае если сервер прекратил работу из-за внутренней ошибки.
4. Performance
- Response time
Время ответа бота на присланные пользователем команды не должно превышать 5 секунд.
- Throughput
Сервер должен выдерживать нагрузку в 1000 команд в секунду.
- Capacity
Предполагаемое количество пользователей: 10000. Количество аниме в списке одного пользователя может достигать 100.
6. Design Constraints
- Требования к серверу
Операционная система Linux, Ubuntu 20.04. Процессор intel core i5. RAM не меньше 8ГБ, диск SSD не меньше 256ГБ.
- Требования к хранению данных
Для каждого пользователя сохраняется список выбранных им аниме как список ссылок на сайт myanimelist. Для идентификации используется id телеграм-чата пользователя с ботом. Эти данные хранятся в базе данных. Рекомендуется использовать PostgreSQL. База данных будет запускаться на удаленном сервере.
- Требования к используемым библиотекам
Для создания бота используется Telegram Bot API. Для получения данных о выходе новых эпизодов аниме используется REST API Jikan. Для увеличения доступности в течение дня код бота должен быть размещен на удаленном сервере. Рекомендуется использовать Яндекс.Облако.
7. On-line User Documentation and Help System Requirements
Пользователь должен получать всю необходимую информации после использования команды /help.
9. Interfaces
- User Interfaces
Пользовательский интерфейс реализован через телеграм-бота с набором описанных ранее команд.
- Hardware Interfaces
Программа будет взаимодействовать с API Jikan через JikanPy, отправляя запросы о текущем статусе выбранных аниме и появлении новых эпизодов и принимая от API json-файлы.
10. Licensing Requirements
Используемое для получения информации об аниме API задаёт следующие ограничения на количество запросов:
- Per Minute: 60 requests
- Per Second: 3 requests
11. Legal, Copyright, and Other Notices
Предполагается использование MIT License, разрешающей свободное использование кода при условии сохранения текста лицензии и указания авторства.
12. Applicable Standards
Данная секция будет заполнена в ходе дальнейшей работы над SRS-документацией, при разработке кода и интегрируемыми в связи с этим стандартами.