Принципиальная схема, описание потоков данных сервиса начисления баллов

Моделирование выполняется в рамках создания сервиса начисления баллов для последующего использования в распределения эмиссии токенов между участниками экономики сообщества.

Сервис использует данные из различных источников. Функционально его можно разделить на агрегатор событий и сервис начисления баллов. На данном этапе все выполняется в рамках одного сервиса, и более того они используют одну базу данных. Разделю их в функциональном описании как Агрегатор событий и Сервис начисления баллов. Что бы отделить агрегатор событий для начисления баллов от агрегатора событий с фронтенда, они будут называться по разному: агрегатор событий (домашний) и агрегатор событий (улица).

Моделирование выполню в таблице. Что бы не усложнять этот вариант функционального моделирования на нем будут четыре основные типа объектов Сервис (источник данных), данные и Сервис (приемник данных) и способ получения данных. Данная таблица описывает граф, то-есть один и тот же узел этого графа когда он предоставляет данные для другого сервиса является источником, а когда получает данные из сервиса то является приемником.

Добавлена колонка статус, что бы отслеживать текущее состояние по реализации этих функций.

Так-же моделирование будет выполнено в “функциональном” стиле сверху вниз, начиная от поведения в надсистеме. Так оказалось проще заполнять таблицу в отличии от “императивного” стиля снизу вверх.

Статус Сервис (источник данных) Данные Способ получения Сервис (приемник данных)
В процессе.
Делаются тестовые варианты.
Сервис начисления баллов Данные для распределения недельной эмиссии токенов.

Дата начала недели, идентификатор пользователя, баллы.
Через запрос к API получаем файл .csv, который дальше загружается вручную в криптосервис. Криптосервис Solana
создаются различные внешние виды расшифровки для тестирвоания Сервис начисления баллов Расшифровка начисления.
В виде файла pdf.
Запрос к API. Фронтенд личного кабинета пользвоателя.
Репозиторий проекта на Git Правила начисления баллов. Правила в формате JSON. Через сборку кодовой базы в работающий сервис, правила становятся частью экземпляра работающего сервиса начислений. Сервис начисления баллов
Агрегатор событий (домашний) События:
ExerciseSave, SectionCompleted, ClubCommentReceived, ClubCommentWritten, ClubLike, ClubLikeReceived, ClubText
Запрос к PostHog Сервис начисления баллов
так реализовано сейчас в тестовой версии API aisystant Данные о квалификации участника Запрос к API Сервис начисления баллов
возможный вариант API aisystant,
Агрегатор событий (домашний)
Данные о квалификации участника Если есть в Агрегатор событий (домашний) запись об получении квалификации то оттуда.
Если нет то через запрос к API aisystant
Сервис начисления баллов
Сейчас API aisystant Данные о систематичности.
День занятий без перерыва.
Запрос к API Сервис начисления баллов
Если там будут все события.
Вариант 1
Агрегатор событий (домашний) Данные о систематичности.
День занятий без перерыва.
Запрос к PostHog.
Получение записи о дне систематичности.
Сервис начисления баллов
Если там будут все события.
Вариант 2
Агрегатор событий (домашний) Данные о систематичности.
День занятий без перерыва.
Запрос к PostHog и расчет дня систематичности.
Сервис начисления баллов
Сейчас в тестовом начислении. Планируем отказаться. Агрегатор событий (улица) События:
exerciseSave (ExerciseSave), sectionCompleted (SectionCompleted)
Запрос к PostHog.
И мэпинг наименований.
Агрегатор событий (домашний)
рассматриваем такой вариант API aisystant ExerciseSave,
SectionCompleted
Запрос к API Агрегатор событий (домашний)
реализована тестовая версия.
Надо проверить временные пояса в возвращаемом времени.
Клуб. SectionCompleted, ClubCommentReceived, ClubCommentWritten, ClubLike, ClubLikeReceived, ClubText Запрос к API клуба сделанному с помощью плагина Data Exploer. Агрегатор событий (домашний)

На данной расшифровке не отражено такое событие как Point, оно является особенностью работы “Сервис начисления баллов”. Начисленные баллы сохраняются в эти события (при этом до конца не понятен онтологический смысл - это событие или скорее запись о начислении), далее по ним подсчитываются баллы, используется ссылка из этих события что бы исключить повторные начисления по событиям по которым было начислено, даже если нулевая сумма.. Также заполненные доп. реквизиты в этих полях необходимы для формирования расшифровки начисления в формате .pdf для участника.

Это следствие того что сознательно убрал колонку, того в какие промежуточные данные заполняются сервисами. Произошло игнорирование внутренних состояний, что упростило таблицу и стало выполнено в функциональном стиле.

В будущем возможно добавить колонку “Тип эмиссии” - что бы в случае появления новых видов начислений токенов, разделить потоки данных.

1 лайк