Skip to content

syeysk/django-sy-platform

 
 

Repository files navigation

Платформа межкомандного взаимодействия

Введение

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

Данный репозиторий – это микросервис, предоставляющий единую точку входа в мир единого пространства.

Терминология

Понятие "информационный" тождественно понятию "цифровой".

В контексте материального мира (материальный контекст):

  • Ресурс материальный - материальный объект: грузовой автомобиль, пластмасса и т. п.
  • Ресурс информационный - нематериальный объект: цифровая книга, цифровая модель изделия, научная статья и т. п.
  • Фабрика материальная - машина, электроника, программное обеспечение либо устройство из взаимосвязанного перечисленного либо комплекс таких устройств, выполняющих обработку материальных ресурсов. Например, 3D-принтер, автомобилестроительное предприятие, фармакологическое предприятие
  • Фабрика информационная - программное обеспечение, обрабатывающее нематериальные ресурсы. Например, искусственная нейронная сеть, система автоматизированного проектирования
  • Пользователь — человек либо программное обеспечение, действующее от имени человека.
  • Микросервис - программное обеспечение и электроника, обеспечивающие доступ к управлению фабрикой (например, микросервис заметок, микросервис 3D-печати).
  • Проект - деятельность человека, ориентированная на производство некоего продукта либо нематериального результата - услуги.

В контексте программирования (в определении (понятии) терминов жирным выделены термины, употреблённые в материальном контексте):

  • Ресурс - множество свойств материального или информационного ресурса. Конкретное множество свойств может отражать реальный ресурс либо предполагаемый (которыйц можно произвести либо в котором есть потребность, но ресурса нет в наличии)
  • Фабрика - микросервис, предоставляющий доступ для управления фабрикой
  • Пользователь - множество свойств, обеспечивающих доступ пользователя к управлению микросервисом
  • Микросервис (microservice) - программное обеспечение, обеспечивающее пользователю управление фабрикой для обработки "ресурса". Термин тождественнен понятию "микросервис" из микросервисной архитектуре
  • Проект (project) - множество свойств и информации, отражающих проект

Термины в контексте программирования являются гипонимами для термина "сущность". Другими словами, "ресурс", "фабрика", "пользователь", "микросервис" и "проект" - это разновидности "сущностей".

В контексте программирования есть и другие сущности, порождённые микросервисами:

  • Заметка
  • База знаний (knowledge_base) - множество заметок
  • Холст фасилитации (faci)
  • Бот (bot)

Термины, планируемые к употреблению:

  • Хранилище — склад ресурсов
  • Транспорт (доставка)

Концепция архитектуры

Совмещение единства и индивидуальности:

  1. Единое пространство.
  2. Единство достигается за счёт связывания функций независимых друг от друга микросервисов.
  3. Единство не означает единственность: участник может запустить собственную копию единого пространства.

Подробно:

  1. Отдельный микросервис работает как полноценное приложение, которым можно пользоваться в отдельности от Платформы
  2. Все микросервисы вместе работают как единая платформа, с общим дизайном.
  3. Интеграция с внешними сервисами подразумевает встраивание функционала внешнего сервиса в графический и API интерфейс, будто он составляет микросервис единой платформы.
  4. Запущенные одновременно копии микросервисов работают как альтернативные площадки единой платформы, имея возможность получать доступ к содержимому другихкопий.

Обобществление результатов интеллектуального труда:

  1. Данные, введённые одним пользователем, доступны для других пользователей, в том числе и для не зарегистрированных. Исключением являются чувствительные данные: ключи доступа, персональные данные.

Экономика реального времени с автоматическим расширением:

  1. Фабрика автоматически удовлетворяет потребности проектов: в режиме реального времени, при ручном заказе либо автоматическом обнаружении соответствия "потребность проекта"-"возможность фабрики".
  2. Фабрики имеют программный и транспортный (доставка ресурса от производства к производству) интерфейс, позволяющий соединять фабрики в конвейер, образуя новую фабрику.
  3. При увеличении потребностей автоматически увеличивается объём производства (за счёт увеличения количества производств либо за счёт оптимизации имеющегося производства).
  4. Производственные цепочки меняются динамически, в зависимости от потребностей и технологических возможностей.

Самоорганизация пользователей:

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

Учесть биологию поведения человека при проектировании архитектуры:

  1. Платформа нацелена на коллективное ведение общественно значимых проектов. При этом архитектура обязана позволить пользователю:
    • вести индивидуальные проекты
    • вносить индивидуальные корректировки в общественный проект
  2. Психика любого человека может подвергнуться внезапному расстройству по непредсказуемым причинам, что может приводить к непредсказуемому деструктивному поведению: вандализм, агрессия против других людей и т. д. В архитектуре обязана быть заложена невозможность наносить вред сообществу при появлении деструктивного поведения у пользователя.

Как реализовать на практике отдельные пункты концепции - является открытым вопросом.

На Платформе:

  1. Запрещено любое обсуждение и критика любых идеологий, религий, политического устройства существующих государств (признанных, непризнанных, квази).
  2. Запрещены идеологически окрашенные термины.

Запрет вытекает из общей семантики: т. к. идеологические термины имеют разное значение у разных людей (являются сверхвысокоабстрактными), то такие обсуждения не ведут к решению задач, но ведут к нарастанию нестабильности в обществе.

Состав Платформы

  1. Фреймворк — django-фреймворк, обеспечивает микросервисы общим шаблоном, механизмом авторизации, статикой.
  2. Микросервис авторизации — обеспечивает единую точку управления учётными записями пользователей.
  3. Шаблон микросервисов — пустой микросервис, на базе которого, путём клонирования, удобно создавать новые микросервисы.
  4. Библиотека API на Python — модуль, предоставляющий доступ к микросервисам через API.
  5. Микросервис проектов - управление проектами, соединяет проекты с микросервисами заметок, фасилитации и ресурсов.
  6. Микросервис заметок — создание, хранение и обмен фантастическими заметками пользователей.
  7. Микросервис фасилитации — проведение продуктивных встреч между пользователями.
  8. Микросервис ботов — управление ботами
  9. Микросервис ресурсов — API для унифицированного управления ресурсами и фабриками
  10. Приложение фабрик - приложение для децентрализованного подсоединения станков к микросервису ресурсов

Предыстория

Микросервис является форком сервиса https://github.com/tvp-support/knowledge-api, который реализовался как спешный и экспериментальный вариант приложения https://github.com/tvp-support/activista, которое, в свою очередь основано на концепции Ольги Ермаковой: https://prezi.com/v7almr-yrv4w/forge/ , https://prezi.com/cmlnos6vh9ac/concept/

Установка

Установка

API сервера

Документация API

План разработки сервиса и микросервисов

  1. Трансформация форка
  2. Улучшение сервиса и добавление новых модулей
  3. Интеграция сервиса с внешними сервисами

Вдохновение

Источником вдохновения стали программы:

  • Blender - идентичные комбинации клавиш для схожего функционала в разных рабочих пространствах, переиспользование созданного в одном пространстве объекта в другом пространстве;
  • FreeCAD - взгляд на CAD-систему как на набор отдельных кардинально различающихся по функциям и назначению верстаков, переиспользование созданного в одном пространстве объекта в другом пространстве;
  • activista - идея объединить разнообразные по назначению микросервисы для создания пространства для активистов некоммерческих сообществ.

Releases

No releases published

Packages

No packages published

Languages

  • Python 47.4%
  • JavaScript 34.0%
  • HTML 18.3%
  • Dockerfile 0.3%