golangconf-bot

command module
v0.0.0-...-7319542 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 19, 2024 License: MIT Imports: 7 Imported by: 0

README

Объем данных

  • Основные данные: незначительный объем (менее 100 MB):
    • до 100 докладов на одну конференцию
    • до 3000 пользователей на одну конференцию
    • это даёт до 300 000 оценок на одну конференцию, где каждая оценка — это пара чисел от 1 до 5 плюс текстовый комментарий
  • Вспомогательные данные (текущее состояние чатов): зависит от реализации

Важно

Для упрощения реализации нет требования сохранять целостность данных в БД бота: в БД могут быть доклады, не относящиеся к текущей конференции (по дате начала), могут быть оценки, не относящиеся к существующим докладам (по URL доклада), в избранных докладах могут быть отсутствующие в БД, etc. Поэтому все данные по докладам и оценкам в БД считаются либо актуальными (если относятся к докладам с датой начала, попадающей в интервал работы текущей конференции) либо неактуальными (такие просто игнорируются) - Бот даёт возможность пользователям (включая админов) работать только с актуальными данными

Чеклист

!!! - опциональные

Админы

  • Залить файл с расписанием докладов
    • Если данные в файле не проходят валидацию (описанную в разделе Данные), то весь файл игнорируется, и админ получает уведомление об ошибке(ах)
    • Доклады в БД с URL, отсутствующим в этом файле, удаляются из БД
      • Все пользователи получают уведомление о таких докладах
      • Из БД удаляются только доклады, остальные данные (наличие URL этого доклада в “Избранном”, оценки этого доклада) сохраняются (но не выводятся пользователю). Если доклад с этим URL будет снова добавлен, то связанная с ним информация снова должна показываться пользователю
    • Доклады в файле с URL, существующим в БД, обновляются в БД
      • Если у доклада изменилось время начала, то все пользователи получают уведомление о таких докладах
    • Доклады в файле с URL, не существующим в БД, добавляются в БД
      • Все пользователи получают уведомление о таких докладах
    • Админ получает уведомление о докладах в файле, у которых время начала не попадает в интервал работы конференции (такие доклады хранятся в БД, но нигде кроме этого уведомления, не показываются)
  • Скачать файл с оценками
  • !!! Задать/изменить/удалить текст общего уведомления
    • Этот текст (если он непустой/удален) отправляется:
      • всем текущим пользователям в момент задания/изменения этого текста
      • новым пользователям в момент подключения бота

Обычные юзеры

  • Команда просмотра информации о конференции
  • Просмотреть расписание докладов текущей конференции
  • Редактировать список избранных докладов
  • Редактировать свою идентификацию (номер билета/ФИО или др идентификатор)
  • Редактировать/Удалять свои оценки докладов
    • функционал доступен начиная со времени начала доклада и заканчивая временем завершения оценок конфы
    • если юзер не задал идентификацию, после добавления/изменения оценки ему нужно присылать уведомление, что его оценка не будет учтена, пока он не идентифицирует себя
  • Просмотр своих оценок на все доклады
  • Просмотреть все доклады без оценок
  • Напоминания для обычных юзеров:
    • За 10 минут до начала доклада: о начале доклада
      • для всех докладов, если нет "избранных" докладов, иначе только для "избранных"
    • После завершения доклада запрашивать оценку доклада, если она еще не задана
    • В конце дня (через 1 час после завершения последнего доклада): запросить оценку по всем докладам этого дня, по которым она не задана
    • Через 2 дня после завершения конфы: запросить оценку по всем докладам конфы, по которым она не задана

Другое

  • Настроить Линтер и запуск линтера в CI
  • Билд и запуск тестов в CI
  • Конфигурация через переменные окружения
  • !!! Добавить рейт лимит в конфиг (https://github.com/tucnak/telebot/pull/487)
  • !!! Структурное логирование
  • !!! Поддержка выбора формата логов (text, json)
  • !!! Служебные метрики (4 Golden Signals для API/БД/ресурсов)
  • !!! Бизнес-метрики (количество пользователей/докладов/оценок/…)
  • !!! Корректное восстановление состояния текущих диалогов после креша/перезапуска (скорее всего, потребует получения истории всех чатов через API Telegram, синхронизации её с данными в БД бота и продолжения текущего диалога при необходимости)

Формат файлов

Расписание

Start (MSK Time Zone),Duration (min),Title,Speakers,URL
21/07/2024 10:00:00,45,"Прагматичная архитектура: как проектировать Go-приложение, руководствуясь чисто практическими соображениями","Даниил Подольский, YADRO",<https://conf.ontico.ru/lectures/5088349/discuss>
22/07/2024 10:00:00,45,"Алиса? Салют? Алекса? Нет, <Название ассистента в разработке> !",Эдгар Сипки,<https://conf.ontico.ru/lectures/5389176/discuss>

Оценки

Этот файл содержит только записи, для которых истинно всё перечисленное:

  • Они относятся к актуальным докладам
  • Тип ответа задан как “Оценка”
  • У пользователя задана Идентификация
[
	{
		"user": "номер билета или другой текст (email/ФИО/...)",
		"url": "<https://conf.ontico.ru/lectures/5088349/discuss>",
		"content": 5,        // Целое число от 1 до 5.
		"performance": 3,    // Целое число от 1 до 5.
		"comment": "опциональный комментарий"
	},
	...
]

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
app
bot

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL