rabotaru / dochub Goto Github PK
View Code? Open in Web Editor NEWУправление архитектурой как кодом
Home Page: https://dochub.info/
License: Apache License 2.0
Управление архитектурой как кодом
Home Page: https://dochub.info/
License: Apache License 2.0
Очень не хватает подсказок при добавлении аспектов и links.
плагин будет сканировать текущие файлы и компоненты и будет помогать при добавлении новых элементов/связей при описании архитектуры.
Такая возможность станет киллер фичей для этого проекта :)
Очень не хватает возможности просмотра входящих связей компонента от других компонентов
Например, допустим у нас есть 10 разных сервисов и все делают запросы в сервис А.
У каждого сервиса мы прописываем, что он ссылается на этот сервис А.
Просматривая SELF-контекст каждого сервиса мы видим связь с сервисом А.
Но зайдя на страницу SELF-контекста сервиса А мы ничего не увидим, потому что внутри компонента сервиса А нет никаких описаний связей.
Дублировать эти связи очень накладно в плане поддержки. Поэтому нужна возможность отображения SELF-контекст включая extra-links (например, в виде кнопки включения/выключения или дополнительной вкладки self-with-extra-links), как это делается при описании контекстов.
Почему то не для всех вариантов направлений происходит окрашивание линий стрелок и они остаются красными.
components:
c1:
title: c1
entity: rectangle
c2:
title: c2
entity: rectangle
c3:
title: c3
entity: rectangle
c4:
title: c4
entity: rectangle
c5:
title: c5
entity: rectangle
c6:
title: c6
entity: rectangle
c7:
title: c7
entity: rectangle
c8:
title: c8
entity: rectangle
c9:
title: c9
entity: rectangle
c10:
title: c10
entity: rectangle
c11:
title: c11
entity: rectangle
c12:
title: c12
entity: rectangle
c13:
title: c13
entity: rectangle
c14:
title: c14
entity: rectangle
cc:
title: cc
entity: rectangle
links:
- id: c1
direction: ->
title: ->
- id: c2
direction: -->
title: -->
- id: c3
direction: --->
title: --->
- id: c4
direction: -u->
title: -u->
- id: c5
direction: -l->
title: -l->
- id: c6
direction: <-->
title: <-->
- id: c12
direction: <-l->
title: <-l->
- id: c13
direction: <-d->
title: <-d->
- id: c14
direction: <->
title: <->
- id: c7
direction: <-
title: <-
- id: c8
direction: <--
title: <--
- id: c9
direction: <---
title: <---
- id: c10
direction: <-u-
title: <-u-
- id: c11
direction: <-l-
title: <-l-
context:
cc:
title: cc
location: cc
extra-links: false
uml:
$before: >
skinparam {
linetype ortho
actorStyle awesome
nodesep 75
ranksep 150
}
components:
- cc
- c1
- c2
- c3
- c4
- c5
- c6
- c7
- c8
- c9
- c10
- c11
- c12
- c13
- c14
различать условные PULL/PUSH(GET/POST) типы связи.
например, цветом. Условно красные - pull, зеленые - push, синие - и туда и туда.
Не работает авторизация через Gitlab v15.0.0
Dochub v2
Тегирование например, или как-то еще.
Ну и плюс сделать вызовы plantuml через POST (опционально)
Схема из 500-600 элементов не пролазиет в GET :)
При наведении курсора мыши отображать всплывающую подсказку, в которой отображается текст для этой связи.
Тултипы помогают понять что это за линия, когда самой подписи к стрелке не видно из-за большой схемы.
А если подписи нет то отображать текст типа "BBB → AAA"
При просмотре аспектов список контекстов, в которых встречается аспект, отображается в табах.
Если названия контекстов длинные (а они обычно длинные), то промотать на самый последний контекст можно только прощелкав все табы. (пример #28)
Было очень удобней смотреть сразу весь список контекстов, в которых встречается аспект. Например, в выпадающем списке, где навигация до последнего контекста была бы в два клика.
Не все взаимодействия современных систем можно описать в нотации OpenAPI, для событийно-ориентированных сервисов хорошо бы добавить поддержку AsyncAPI.
Если давать ссылку на созданный раздел не авторизированному раннее пользователю, то схема не отобразиться, на веб-морде не появиться никаких предупреждений, при этом фронт будет ловить ошибку 401
Авторизоваться можно только через корень - https://dochub2.rabota.space/ , только при переходе по этой ссылке пользователя перекинет на страницу авторизации
При локальной сборке докхаба (не в режиме плагина) командой docker compose up --build в лог вылезает несколько ошибок вида:
dochub | sed: can't create temp file '/usr/share/nginx/html/50x.htmlXXXXXX': Permission denied
Кажется на работу это не влияет, но вдруг.
Я полечил это не самым элегантным образом - в файл Dockerfile вставил строку USER root перед строкой
COPY --chown=101 --from=builder /var/www/dist /usr/share/nginx/html
Хотелось бы по какому-то параметру схлопывать одинаковые ссылки (например, если одна и та же ссылка описана в двух местах - в исходящием компоненте и во входящем тоже)
Помню, что мы говорили про возможность введения параметра single:true.
Можно ли как то задать entity стиль, например, изменить цвет?
попробовал добавить uml в описание ентити:
title: пример
entity: rectangle
aspects:
- bla.blabla
uml:
$before: >
skinparam classFontColor red
но это не сработало
Добрый день.
Интересует такая возможность, что бы при описании конкретного контекста можно было указать серию компонентов через указание его родительского неймспейса.
Например, имеется 3 компонента:
components:
- dochub.services: components/dochub/l2/services.yaml
- dochub.services.service1: components/dochub/l3/service1.yaml
- dochub.services.service2: components/dochub/l3/service2.yaml
- dochub.services.service3: components/dochub/l3/service3.yaml
и в контексте указываешь вот так:
...
dochub.services:
title: сервисы
location: dochub/services
extra-links: true
components:
- dochub.services.*
...
Возможна ли такая фича в будущем? (ща это не прокатывает)
Хочу иметь возможность экспорта любой(!) схемы в картинку
Если рутовым манифестом сделать ссылку без расширения *.yaml, то докхаб определяет файл как JSON объект, хотя реально внутри находится yaml-файл
При текущей реализации при возникновении ошибки заполнения файла манифеста отваливается весь проект. Нужно перехватывать ошибки и пропускать только ту часть где была ошибка, обрабатывая остальные
Иногда стрелка связи в схеме может быть длинной и хотелось бы ее как то подсветить, что бы при навигации по схеме можно было проследить куда эта стрелка ведет
пример графа зависимостей maven в Idea
Когда у тебя много контекстов в схеме, то открывается как правило просто первый (по какому-то принципу) контекст. В большинстве случаев этот контекст никак не объясняет выбранный аспект.
Хочется иметь возможность задавать линки в рамках контекста вручную. Чтобы можно было легко описать бизнес-процесс.
Текущая реализация: набор доп. полей задается в разрезе каждого entity единственным набором (https://arch.sblogistica.ru/docs/dochub.forms)
Так как за архитектурным компонентом могут стоять различные по сути сущности (системы, подсистемы, микросервисы, бизнес-домены и проч.) с потенциально совершенно отличным друг от друга атрибутным составом, то хотелось бы расширить возможность гибкого определения набора доп.полей в разрезе произвольного набора компонент (в дискуссии упоминалась реализация через фильтр).
Добавили поле description через forms - заполнили его длинным текстом. Длинный текст полностью не показывается - обрезается из-за чего смысл сводки теряется - пользователь ожидает увидеть интересную ему инфу в карточке объекта, а не видит...
Нужен образ докхаба, залитый в публичное хранилище (на hub.docker.com)
Отталкиваясь от интерфейса информации о компоненте, где отображаются блоки Сводка, Контекст, Документ, Иерархия, добавить еще один блок - References.
В этом блоке будут перечислены ссылки на внешнюю документацию с краткий описанием ссылки (например. формате md).
References нужны в момент, когда переносить ранее созданную документацию внутрь DocHub, например, из конфлюенса, трудозатратно, поэтому на первом этапе описания было бы неплохо видеть ссылки на первоисточники.
Предлагается поддержать возможность задавать пунктирные стрелки на схемах. Стандартный plantuml это поддерживает, цитата: Links between elements are made using combinations of dotted line (..), straight line (--), and arrows (-->) symbol
Пример:
components:
example_system:
title: Система
entity: component
links:
- id: system2
direction: <..>
В контекстах должна быть возможность описывать(или указывать) именно те стрелки, которые я хочу видеть.
Для конкретного контекста интересуют именно конкретные связи внутри систем, другие будут лишь засорять схему.
(при этом неплохо оставить текущую возможность просто указать системы)
Некорректно работает список контекстов в табах при переключении на стрелочки слево или вправо. (Chrome,Safari, ветка archops-conception-v2)
Прошу реализовать возможность добавлять / просматривать информацию об аспектах. В текущей реализации я могу перейти в карточку аспекта и увидеть сводную по нему, но не хватает раздела с текстовым описанием того что это за аспект, как он работает и прочую полезную инфу
Чтобы не нужно было самому собирать.
Для описания архитектуры СБЛ необходимо задать один набор дополнительных полей для компонентов с entity = component (читай - для системы или ее слагающих), другой набор дополнительных полей для компонентов с entity = actor (для бизнес-владельцев систем). Для этого требуется описание полей в forms через массив (см. приложенный рисунок).
Баг состоит в том, что использование синтаксиса массива проглатывается докхабом (то есть ошибка не выдается), но при этом новые поля на компонентах не появляются, хотя должны.
p.s.: если задавать общий набор доп.полей forms единой кучей, то есть один набор для нескольких entity, то проблем нет.
Хочется для некоторых компонентов какие-то краткие пояснения оставлять, о чем вообще компонент
Добрый день.
Как указать гиперссылку на внешний ресурс как подпись к стрелке?
Сейчас при переходе по ссылке внутри документа страница перегружается. Для тяжелых манифестов это достаточно критично. Нужно, чтобы ссылки перехватывались и открытие внутренних страниц происходило без перезагрузки.
Сделали возможность в контексте (на картинке) по правой кнопке "скопировать json" - это оч. удобно для опытов в https://try.jsonata.org/.
Но проблема в том, что таким образом выгружается не весь репо, а отфильтрованная его часть (фильтр - это контекст). А мне нужен именно весь "глобальный" json - хочется на нем отрабатывать выборки с помощью jsonata - чтобы потом получившиеся сниппеты использовать внутри контекста для преобразования источника (см. доку https://dochub.info/docs/dochub.contexts - в самом конце)
По примеру #19 при переходе по ссылке, которая содержит в себе адрес внешнего интернета происходит переход не на внешний сайт, а на текущий.
Например, имеется
title: "[[https://github.com/RabotaRu/DocHub {перейти в описание} DocHub]]"
entity: rectangle
links:
- id: blabla
direction: -->
При клике на ссылку происходит переход не на
https://github.com/RabotaRu/DocHub
а на
http://localhost:8080/RabotaRu/DocHub
ветка master
Необходима возможность обработки разметки ссылки в формате plantUML. Например,
title: [[https://github.com/RabotaRu/DocHub {перейти в описание} DocHub]]
entity: rectangle
links:
- id: blabla
direction: -->
Идея запускает бесконечный цикл индексации
korus/spk/arch/dochub.yaml
java.lang.NullPointerException: Cannot invoke "String.getBytes(java.nio.charset.Charset)" because the return value of "java.util.ArrayList.get(int)" is null
at org.dochub.idea.arch.indexing.DocHubIndexData.stringify(DocHubIndexData.java:67)
at org.dochub.idea.arch.indexing.DocHubIndex$2.save(DocHubIndex.java:26)
at org.dochub.idea.arch.indexing.DocHubIndex$2.save(DocHubIndex.java:23)
at com.intellij.util.indexing.impl.ValueContainerImpl.saveTo(ValueContainerImpl.java:448)
at com.intellij.util.indexing.impl.ChangeTrackingValueContainer.saveTo(ChangeTrackingValueContainer.java:173)
at com.intellij.util.indexing.impl.ValueContainerExternalizer.save(ValueContainerExternalizer.java:23)
at com.intellij.util.indexing.impl.ValueContainerExternalizer.save(ValueContainerExternalizer.java:12)
at com.intellij.util.io.PersistentMapImpl.doPut(PersistentMapImpl.java:383)
В версии 2.2 рендеринг перестал работать корректно. К ссылке на документ добавляется параметр ?id={component_id} и отправляется сразу два запроса - с параметром и без параметра. После отправки запроса докхаб зависает так и не отрендерив документ.
При этом в некоторых случаях все отрабатывает корректно.
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.