Sheet 1
База постов
  Подсистемы разметки
    Подсистема телеграма
      Система разметки поста для телеграма
        Система шаблонизатора
  Управление постом
    Файлы (мн число)
    Тексты (мн число)
    Установка триггера публикации
    Превью для подсистем разметки
  Подсистема публикации
    Подсистема триггеров публикации
      Триггер точного времени
      Триггер на основе результатов голосования
        Настройки вариантов голосований
          Шаблоны вариантов голосований
        Настройки исходного рейтинга постов
          Шаблоны настроек исходных рейтингов постов
    Подсистема публикации
Пока пост не размечен (хотя бы шаблонизатором) - не будет публиковаться
Сам по себе имеет следующие методы для общения:
* Запрос публикации - На входе будет id публикации и контрольное слово. Если контрольное слово не совпадает с записанным в бд подсистемы триггеров для поста - пост не публикуется. В момент назначения триггера для постинга такое контрольное слово передаётся триггеру
* Запрос на отмену триггера как назначенного
Предполагается, что триггеры будут иметь следующий примерный набор методов для обращения:
* Назначить для поста - передаёт контрольное слово для триггеринга публикации
* Убрать для поста
* Получить вьюху для настройки триггера публикации со страницы управления постом
* Получить вьюху для настройки триггера публикации на отдельной странице
Все вьюхи опциональны
Сам по себе имеет следующие методы для общения:
* Запрос публикации - На входе будет id публикации и контрольное слово. Если контрольное слово не совпадает с записанным в бд подсистемы триггеров для поста - пост не публикуется. В момент назначения триггера для постинга такое контрольное слово передаётся триггеру
* Запрос на отмену триггера как назначенного
Предполагается, что триггеры будут иметь следующий примерный набор методов для обращения:
* Назначить для поста - передаёт контрольное слово для триггеринга публикации
* Убрать для поста
* Получить вьюху для настройки триггера публикации со страницы управления постом
* Получить вьюху для настройки триггера публикации на отдельной странице
Все вьюхи опциональны
* Назначить для поста - ставит "неопределённое время" публикации до установки времени
* Убрать для поста - просто удаляет время триггера из бд
* Получить вьюху для настройки триггера публикации со страницы управления постом - возвращает какой-нибудь DateTimePicker
* Получить вьюху (пока назову так) для настройки триггера паубликации на отдельной странице - возвращает какой-нибудь DateTimePicker
Будет иметь рейтинговую систему для всех постов, на которые назначен
Эта подсистема, фактически, являет собой систему одного интерфейса:
На вход родительской подсистеме должен передаваться список объектов, имплементирующих интерфейс вида:
interface Publisher {
suspend fun publish(postId: PostId)
}