МЕССЕНДЖЕР (mesaĜilo)

1. Общее описание

Разрабатывается по аналогии с Телеграм, ВКонтакте и Фейсбук. Приложение состоит из 5 моделей.

1.1 Модель чата (MesagxiloBabilejo)

поля:

  • id - типа int - уникальный номер, добавляется автоматически
  • nomo - название чата (многоязыковое)
  • personal - логический - личный (true) или групповой (false) чат
  • bildo_info - информационное изображение
  • mesagxo - закреплённое сообщение - ссылка на модель MesagxiloMesagxo

Блок логических настроек:

  • opcio_partoprenantoj - Могут приглашать участников в беседу (ложь - только администраторы чата), по умолчанию - истина
  • opcio_info - Могут редактировать информацию беседы (ложь - только администраторы чата), по умолчанию - истина
  • opcio_kovris - Могут менять закреплённое сообщение (ложь - только администраторы чата), по умолчанию - истина
  • opcio_aldoni - Могут добавлять администраторов (истина - создатель и администраторы чата, ложь - только создатель чата), по умолчанию - ложь
  • opcio_del - запрещено полное удаление сообщения (истина - администраторы могут видеть, ложь - возможно удаление), по умолчанию - ложь

1.2 Модель участники чатов (MesagxiloPartoprenanto)

  • partoprenanto - участник чата - ссылка на Uzanto
  • posedanto - если владельцем чата является сообщество
  • babilejo - чат - сылка на MesagxiloBabilejo
  • is_admin - права админа чата, по умолчанию - ложь
  • sciigoj - тип способа уведомления - связь многие-ко-многим с InformilojSciigoTipo (типы оповещений, на текущий момент два типа: внутреннее (в браузере) - interna и на почту - powto) через модель MesagxiloSciigoj
  • sciigi - оповещать о новых сообщениях в целом - по умолчанию - истина
  • lasta_mesagxo - последнее прочитанное сообщение (что бы указывать откуда начинаются не прочитанные/новые) - ссылка на MesagxiloMesagxo

1.3 Модель сообщения чатов (MesagxiloMesagxo)

  • babilejo - чат - сылка на MesagxiloBabilejo
  • posedanto - кто написал (владелец) сообщения - ссылка на Uzanto
  • komunumo - если написано от имени сообщества
  • teksto - текст сообщения (многоязыковое)
  • mesagxo - комментируемое сообщение - ссылка на себя
  • enskribo - ссылка на запись стены сообщества
  • enskribo_uzanto - ссылка на запись стены пользователя
  • investoj - логическое - вложения (инстина - есть вложения), по умолчанию - ложь
  • vidita - логическое - прочитано сообщение другим пользователем

При добавлении новой записи, создаются записи в MesagxiloMesagxoUzanto для каждого члена чата. При удалении сообщения (удалить может только создатель) помечается на удаление запись в MesagxiloMesagxoUzanto. Если на удаление сообщение передать forigo_all в True, то пометятся на удаление у всех пользователей чата.

При установки на удаление последней записи в чате, если чат личный, то чат помечается на удаление.

1.4 Модель вложения к сообщениям (MesagxiloInvestoj)

  • babilejo - чат - сылка на MesagxiloBabilejo

  • mesagxo - комментируемое сообщение - ссылка на MesagxiloMesagxo

  • dosiero - присоединенный файл

  • type_dosiero - тип int - тип присоединённого файла (0 - изображение, 1 - видео, 2 - документ, 3 - аудио)

    На текущий момент работают только изображения („JPEG“, „PNG“, „GIF“)

1.5 Модель подписки на чат (MesagxiloSciigoj)

  • partoprenanto - ссылка на MesagxiloPartoprenanto

  • sciigo - ссылка на InformilojSciigoTipo

  • sciigi - логическое - оповещать о новых сообщениях, по умолчанию - истина

    • в броузере - звуковое оповещение
    • для почты - оповещение не чаще раза в сутки (при false)
  • sciigi_dato - типа датавремя

    • для внутреннего: дата и время включения оповещений (если дата/время после текущей, то не оповещать) - можно остановить оповещение на часы и т.д.
    • для почты: дата последней отправки оповещения

1.6 Модель настроек пользователей, относящаяся ко всем чатам (MesagxiloUzantoOpcio)

  • uzanto - участник чата, ссылка на Uzanto, 1к1, уникальная

  • privata - Int - Кто может писать мне личные сообщения

  • настройка - код - код списка

    • Все пользователи - 0
    • Только друзья - 1
    • Друзья и друзья друзей - 2
    • Никто - 3
    • Все, кроме…
    • Кому разрешен доступ
    • всем пользователям - 4
    • только друзьям - 5
    • друзьям и друзья друзей - 6
    • некоторым друзьям (выбор списком) - 7 - 11
    • Кому запрещен доступ (выбор списком) - 8 - 12
    • Некоторые друзья (выбор списком) - 9 - 13
  • grupo - Int - разрешения добавления в групповые чаты

настройка - код - код списка

  • Все пользователи - 0
  • Только друзья - 1
  • Друзья и друзья друзей - 2
  • Никто - 3
  • Все, кроме…
  • Кому разрешен доступ
  • всем пользователям - 4
  • только друзьям - 5
  • друзьям и друзья друзей - 6
  • некоторым друзьям (выбор списком) - 7 - 21
  • Кому запрещен доступ (выбор списком) - 8 - 22
  • Некоторые друзья (выбор списком) - 9 - 23

Списки настройек работают совместно с моделью списков доступа (MesagxiloUzantoAliro)

1.7 Модель списков доступа пользователям (MesagxiloUzantoAliro)

  • opcio - ссылка на MesagxiloUzantoOpcio
  • grupo - код списка пользователей (по описанию из п.1.6)
  • uzantoj - список ссылко на Uzanto (поле многие-ко-многим - ManyToManyField)

1.8 Сообщения чатов для пользователей (MesagxiloMesagxoUzanto)

  • posedanto - ссылка на Uzanto - у кого в общении показывать сообщение
  • mesagxo - ссылка на MesagxiloMesagxo

2. Запросы на получение и редактирование данных

Запросы строятся согласно Построению запросов API

2.1 Запросы на получение

  • mesagxilojBabilejo
  • mesagxilojPartoprenanto
  • mesagxilojMesagxo
  • mesagxilojInvestoj
  • mesagxilojSciigoj

2.2 Запросы на изменения

  • redaktuMesagxiloBabilejo

  • redaktuMesagxiloPartoprenanto

    sciigoj меняется через Partoprenanto

  • redaktuMesagxiloMesagxo

  • redaktuMesagxiloInvestoj

3. Уведомления

  • где выбор: внутренние, на почту, на телефон

на текущий момент (14 сентября 2019) работает только внутренний

  • Есть уведомление от конкретного чата - канала, конкретной личной переписки - поле sciigi
  • Есть приостановление на время - поле sciigi_dato

Планируются оповещения по аналогии с Телеграм, ВКонтакте и Фейсбук.