An IoT service with mobile client and microservices arhitecture.
vityaman-edu / nexo-hub Goto Github PK
View Code? Open in Web Editor NEWAn IoT service with mobile client and microservices arhitecture.
License: The Unlicense
An IoT service with mobile client and microservices arhitecture.
License: The Unlicense
An IoT service with mobile client and microservices arhitecture.
Сейчас зависимости в части проектов используются при помощи groupId:artifactId:version
. Нужно заменить такое использование на libs.*
, как это сделано в модуле common
и вытащить все зависимости в корень проекта (graddle/libs.versions.toml
)
На защите от нас требуется отчет, содержащий следующие пункты:
Не хочется копировать ТЗ и архитектуру из маркдаун файлов куда-то, поэтому хочется как-то собирать докумен из нескольких .md файлов в один .pdf с номерами страниц и в принципе красивый. Для этого можно попробовать использовать Pandoc.
Сейчас устройства отображаются просто картинкой и непонятно, какое у них состояние
Комментарии Аркадия Олеговича предлагаю писать в комментарии к этому тикету.
Нужно добавить туда поля с кодом возврата (статусом выполнения) и сообщение об ошибке
В рамках задачи нужно
Изучить содержимое ТЗ в ГОСТ, убрать лишние разделы, добавить недостающие.
Для начала хочется понять, что вообще писать в диздоке, поэтому накидаю список пунктов.
nexohub-fake-users | Exception in thread "pool-1-thread-12" Too many publishes in progress (32202)
nexohub-fake-users | at org.eclipse.paho.client.mqttv3.internal.ClientState.send(ClientState.java:524)
nexohub-fake-users | at org.eclipse.paho.client.mqttv3.internal.ClientComms.internalSend(ClientComms.java:161)
nexohub-fake-users | at org.eclipse.paho.client.mqttv3.internal.ClientComms.sendNoWait(ClientComms.java:191)
nexohub-fake-users | at org.eclipse.paho.client.mqttv3.MqttAsyncClient.publish(MqttAsyncClient.java:1251)
nexohub-fake-users | at org.eclipse.paho.client.mqttv3.MqttClient.publish(MqttClient.java:570)
nexohub-fake-users | at org.eclipse.paho.client.mqttv3.MqttClient.publish(MqttClient.java:562)
nexohub-fake-users | at org.vivlaniv.nexohub.ScenarioKt.authUser(Scenario.kt:132)
nexohub-fake-users | at org.vivlaniv.nexohub.ScenarioKt$startUserScenario$onSuccessRegistration$1.invoke(Scenario.kt:58)
nexohub-fake-users | at org.vivlaniv.nexohub.ScenarioKt$startUserScenario$onSuccessRegistration$1.invoke(Scenario.kt:56)
nexohub-fake-users | at org.vivlaniv.nexohub.ScenarioKt$registerUser$$inlined$subscribe$1$1.invokeSuspend(Mqtt.kt:37)
nexohub-fake-users | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
nexohub-fake-users | at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
nexohub-fake-users | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
nexohub-fake-users | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
nexohub-fake-users | at java.base/java.lang.Thread.run(Thread.java:1583)
Перед тем, как приступить вливать документы в главную ветку, хорошо было бы иметь автоматическую проверку на качество markdown текста для повышения качества содержимого репозитория. Предлагаю использовать Markdownlint, в ресурсах прикрепил ссылку на пример его использования.
сейчас сигналы и свойства устройств имеют только значение и не понятно, как их отображать и какие значения можно задавать.
Нужно добавить схему описание типов
Сейчас собираются только бэкенды и общие библиотеки.
Расписать раздел "3 Технические требования".
Влит MR с заполненным разделом в ТЗ
Создать docker-compose.yml
, содержащий все необходимые сервисы для поднятия
Что нужно сделать в рамках задачи:
Комментарии Аркадия Олеговича предлагаю писать в комментарии к этому тикету.
Необходимо продумать пользовательские сценарии и построить Use-Case диаграмму для определения требуемых к реализации функций в приложении.
Для генерации идей вариантов использования приложения (пользовательских сценариев) соданно обсуждение #26, на основе которого строится Use-Case диаграмма.
Текущий вариант диаграммы:
Чтобы не говнячили особо.
Зависит от #32
Расписать раздел "2 Общее описание". Все пункты, кроме, возможно, полного описания функционала.
Добавить в connection-service
ручки для получения свойств и состояний устройств (одного устройства)
Хочется иметь зафиксированное описание процесса разработки в нашей команде.
Следует включить туда:
Сейчас температура чайника изменяется внутри него самого. Нужно вынести это изменение в процесс погоды
Мы все-таки решили, что лучше полагаться на word-wrapping -- он есть везде. Поэтому надо настроить конфиг маркдаунлинта так, чтобы он не ругался на линии длиннее 80 симолов (можно выставить 2к просто) в параграфах и вставках кода.
В презентации нашел такие слова про ТЗ:
Составляете список заинтересованных лиц (например, мы делаем какую-то систему для какого-то завода)
• Директор завода
• Мастер цеха
• Бухгалтер
• Главный инженер
• Рабочий
• Охранник
• Дворник
• Гость/посетитель
• Разработчик системы
...
Составляете список требований для каждого из заинтересованных лиц
Предлагаю добавить раздел с заинтересованными лицами и списком требований для каждого их них. Возможно, мы можем просто перечислить идентификаторы требований для каждого лица.
https://github.com/YuikoSempai/sample-db-service - шаблон сервис (в разработке)
На данный момент нужно описать сущности которые будут храниться в базе данных, единственное что пришло в голову:
Перед тем, как начать разрабатывать компоненты системы, хорошо бы создать для каждого из них свою папочку. Поскольку стек у нас очень похож, все можно собирать с помощью gradle. Также важно создать отдельный проект с логикой сборки, чтобы разделять скрипты для запуска линтеров, например. Предлагается такая структура.
nexo-hub
- build-logic
- android-app
- gateway-service
- log-service
- database-service
- load-generator
Над названиями долго не думал, хорошо бы придумать нормальные, говорящие и не такие скучные.
В каждом подпроекте будет свой settings.gradle.kts, но все будут подтягивать build-logic в качестве зависимости, а там уже будут описаны всякие общие штуки.
Продумать разделы, из которых будет состоять техническое задание и создать документ скелет.
Идеи для требований к функциональности и удобству можно обрести, посмотрев на наших конкурентов -- систем для управления умным домом от больших компаний вроде Сбера, Яндекса, Гугла, Амазона и других. У них есть свои приложения. Также нужно понять, примерно каким образом они работают: на каких технологиях, протоколах и прочем.
Добавить в connection-service
ручки для отправки сигналов устройствам
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.