Skip to content

Commit

Permalink
Merge pull request #73 from RabotaRu/validators
Browse files Browse the repository at this point in the history
Validators
  • Loading branch information
rpiontik authored Aug 15, 2022
2 parents 1d7cfbb + 0b5832e commit 0eb95b9
Show file tree
Hide file tree
Showing 62 changed files with 10,740 additions and 1,347 deletions.
23 changes: 13 additions & 10 deletions example.env
Original file line number Diff line number Diff line change
@@ -1,35 +1,38 @@
# URI в формате DocHub корневого манифеста (обязательно)
VUE_APP_DOCHUB_ROOT_MANIFEST=gitlab:34:main@root.yaml
# VUE_APP_DOCHUB_ROOT_MANIFEST=gitlab:34:main@root.yaml

# Идентификатор документа главной страницы. По умолчанию dochub_welcome
VUE_APP_DOCHUB_ROOT_DOCUMENT=dochub_welcome
# VUE_APP_DOCHUB_ROOT_DOCUMENT=dochub_welcome

# URL GitLab (необязательно)
VUE_APP_DOCHUB_GITLAB_URL=https://foo.space
# VUE_APP_DOCHUB_GITLAB_URL=https://foo.space

# Персональный токен gitlab. Используется для локальной разработки
VUE_APP_DOCHUB_PERSONAL_TOKEN=9H...FR
# VUE_APP_DOCHUB_PERSONAL_TOKEN=9H...FR

# Идентификатор приложения зарегистрированного в GitLab (обязательно, если есть VUE_APP_DOCHUB_GITLAB_URL)
# https://docs.gitlab.com/ee/integration/oauth_provider.html
VUE_APP_DOCHUB_APP_ID=5f3...f0
# VUE_APP_DOCHUB_APP_ID=5f3...f0

# Секрет приложения (обязательно, если есть VUE_APP_DOCHUB_GITLAB_URL)
# https://docs.gitlab.com/ee/integration/oauth_provider.html
VUE_APP_DOCHUB_CLIENT_SECRET=1e4...384
# VUE_APP_DOCHUB_CLIENT_SECRET=1e4...384

# Сервер рендеринга PlantUML (По умолчанию www.plantuml.com/plantuml/svg/)
# При сборке через docker-compose по умолчанию localhost:8079/svg/
VUE_APP_PLANTUML_SERVER=localhost:8079/svg/
# VUE_APP_PLANTUML_SERVER=localhost:8079/svg/

# Больше информации о переменных среды выполнения
# https://cli.vuejs.org/ru/guide/mode-and-env.html

# Если "y" подключает в описание документацию DocHub
VUE_APP_DOCHUB_APPEND_DOCHUB_DOCS= y / n
# VUE_APP_DOCHUB_APPEND_DOCHUB_DOCS= y / n

# Если "y" подключает контроль метамодели DocHub
# VUE_APP_DOCHUB_APPEND_DOCHUB_METAMODEL= y / n

# Если "plugin" сборка осуществляется для использования в IDEA плагине https://github.com/RabotaRu/DocHubIdeaPlugin
#VUE_APP_DOCHUB_MODE=plugin
# VUE_APP_DOCHUB_MODE=plugin

# Определяет движок рендеринга (graphviz | smetana | elk). По умолчанию ELK
# VUE_APP_DOCHUB_RENDER_CORE= ELK
# VUE_APP_DOCHUB_RENDER_CORE=ELK
10,624 changes: 9,610 additions & 1,014 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"@mdi/font": "5.9.55",
"axios": "0.21.1",
"dateformat": "3.0.3",
"jsonata": "1.8.4",
"jsonata": "1.8.6",
"swagger-ui": "3.24.3",
"vue": "2.6.11",
"vue-code-diff": "0.0.4",
Expand Down
16 changes: 14 additions & 2 deletions public/documentation/arch/aspects.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
aspects: # Архитектурные аспекты
dochub:
title: DocHub
location: DocHub
dochub.git:
title: Git
location: DocHub/Git
dochub.git.client:
title: Развитие репы
location: DocHub/GitLab/Git-клиент
dochub.gitlab:
title: GitLab
location: DocHub/GitLab
dochub.gitlab.auth:
title: Авторизация GitLab
location: DocHub/GitLab/Авторизация
Expand All @@ -26,12 +35,15 @@ aspects: # Архитектурные аспекты
dochub.cache:
title: Кэш данных
location: DocHub/Кэш
dochub.manifest:
title: Манифесты
location: DocHub/Манифесты
dochub.manifest.storage:
title: Хранилище манифестов
location: DocHub/Хранилище манифестов
location: DocHub/Манифесты/Хранилище манифестов
dochub.manifest.parsing:
title: Парсинг манифестов
location: DocHub/Парсинг манифестов
location: DocHub/Манифесты/Парсинг манифестов
dochub.dataset:
title: Источники данных
location: DocHub/Источники данных
Expand Down
3 changes: 2 additions & 1 deletion public/documentation/arch/components/browser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ components:
dochub.browser:
title: Браузер
entity: component
# expert: R.Piontik # Намеренно допущена ошибка для примера
technologies:
- Chrome
- Firefox
Expand All @@ -14,7 +15,7 @@ components:
#***********************************************************
dochub.browser.localstorage:
title: LocalStorage
entity: component
entity: database
technologies:
- Chrome
- Firefox
Expand Down
22 changes: 21 additions & 1 deletion public/documentation/arch/components/front.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ components:
dochub.front: # Идентификатор компонента
title: DocHub # Название компонента
entity: component # Сущность компонента из PlantUML (https://plantuml.com/ru/deployment-diagram)
source: ./ # Произвольное поле определенное в forms указывающее на исходный код
expert: R.Piontik # Эксперт по компоненту
technologies: # Используемые технологии
- JavaScript
- VUEJS2
Expand Down Expand Up @@ -39,6 +41,7 @@ components:
dochub.front.spa:
title: SPA приложение DocHub
entity: component
source: ./main.js
technologies:
- JavaScript
- VUEJS2
Expand Down Expand Up @@ -82,6 +85,7 @@ components:
dochub.front.spa.user_interface:
title: Интерфейс пользователя
entity: actor
source: ./src/components/Root.vue
technologies:
- JavaScript
- VUE2
Expand All @@ -91,24 +95,28 @@ components:
dochub.front.spa.vue2:
title: VUE2
entity: component
source: ./src/main.js
technologies:
- JavaScript
- VUE2
dochub.front.spa.router:
title: VUE Router
entity: component
source: ./src/router/index.js
links:
- id: dochub.front.spa.vue2
dochub.front.spa.vuex:
title: VUEX
entity: component
source: ./src/storage/gitlab.js
technologies:
- JavaScript
- VUE2
- VUEX
dochub.front.spa.menu:
title: DocHub меню
entity: component
source: ./src/components/Menu.vue
technologies:
- JavaScript
- VUE2
Expand All @@ -122,7 +130,7 @@ components:
dochub.front.spa.workspace:
title: Рабочая область
entity: component
source_file: src/components/Root.vue
source: ./src/router/index.js
technologies:
- JavaScript
- VUE2
Expand All @@ -133,6 +141,7 @@ components:
dochub.front.spa.jsonata:
title: JSONata
entity: component
source: ./src/manifest/query.js
technologies:
- JavaScript
- VUE2
Expand All @@ -143,6 +152,7 @@ components:
dochub.front.spa.manifest_parser:
title: Manifest parser
entity: component
source: ./src/manifest/manifest_parser.js
technologies:
- JavaScript
- VUE2
Expand All @@ -161,6 +171,7 @@ components:
dochub.front.spa.blank:
title: Карточка объекта
entity: component
source: ./src/Architecture/*
technologies:
- JavaScript
- VUE2
Expand All @@ -177,56 +188,65 @@ components:
dochub.front.spa.blank.radar:
title: Тех. радар
entity: component
source: ./src/Techradar/*
technologies:
- JavaScript
- VUE2
dochub.front.spa.blank.aspect:
title: Карточка аспекта
entity: component
source: ./src/Architecture/Aspect.vue
technologies:
- JavaScript
- VUE2
dochub.front.spa.blank.component:
title: Карточка компонента
entity: component
source: ./src/Architecture/Component.vue
technologies:
- JavaScript
- VUE2
dochub.front.spa.blank.context:
title: Карточка контекста
entity: component
source: ./src/Architecture/Context.vue
technologies:
- JavaScript
- VUE2
dochub.front.spa.blank.doc:
title: Карточка документа
entity: component
source: ./src/Docs/*
technologies:
- JavaScript
- VUE2
dochub.front.spa.blank.doc.markdown:
title: Markdown
entity: component
# source: ./src/Docs/DocMarkdown.vue
technologies:
- JavaScript
- VUE2
- Markdown
dochub.front.spa.blank.doc.swagger:
title: Swagger
entity: component
source: ./src/Docs/DocSwagger.vue
technologies:
- JavaScript
- VUE2
- Markdown
dochub.front.spa.blank.doc.table:
title: Таблицы
entity: component
source: ./src/Docs/DocTable.vue
technologies:
- JavaScript
- VUE2
dochub.front.spa.dataset:
title: Источники данных
entity: component
source: ./src/helpers/datasets.js
technologies:
- JavaScript
- VUE2
Expand Down
1 change: 1 addition & 0 deletions public/documentation/arch/components/gitlab.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ components:
dochub.gitlab:
title: GitLab
entity: component
expert: R.Piontik
technologies:
- GitLab
aspects:
Expand Down
1 change: 1 addition & 0 deletions public/documentation/arch/components/plantuml.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ components:
dochub.plantuml:
title: PlantUML render server
entity: component
expert: R.Piontik
technologies:
- PluntUML
aspects:
Expand Down
1 change: 1 addition & 0 deletions public/documentation/arch/components/web.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ components:
dochub.web:
title: WEB
entity: component
expert: R.Piontik
technologies:
- HTTP
aspects:
Expand Down
15 changes: 15 additions & 0 deletions public/documentation/arch/contexts.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,21 @@ contexts: # Контексты представления архитектур
location: DocHub/Компонентная архитектура
components:
- dochub.front.spa.*
dochub.custom:
title: Компоненты эксперта R.Piontik
location: DocHub/Контекст по источнику
extra-links: false # Отключаем вывод связанных компонентов, явно не определенных в контексте
# Определяем источник данных для контекста.
source: > # Отбираем все компоненты у которых кастомное поле "expert" = "R.Piontik"
(
$ ~> | $ | {
"components": $merge(components.$spread().(
$.*.expert = 'R.Piontik' ? $ : {}
))
} |
)
components:
- dochub.* # Выводим все компоненты домена dochub
dochub.front.spa.blank:
title: Карточка объекта
components:
Expand Down
11 changes: 6 additions & 5 deletions public/documentation/arch/forms.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
forms:
entity: component
fields:
source_file:
title: Файл
required: true
- entity:
- component
fields:
source:
title: Файл
required: true
1 change: 1 addition & 0 deletions public/documentation/arch/namespaces.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# !Устарело!
# Манифест описывающий пространство имен dochub и gitlab
namespaces:
dochub: # Идентификатор области имен
Expand Down
4 changes: 4 additions & 0 deletions public/documentation/arch/root.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,7 @@ imports: # Подключение манифестов
- namespaces.yaml
- forms.yaml
- technologies.yaml
- rules.yaml
components:
dochub: # Корневой компонент (домен)
title: DocHub
53 changes: 53 additions & 0 deletions public/documentation/arch/rules.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
rules:
validators:
dochub.fields:
title: Заполнение полей # Название валидатора
dochub.fields.experts: # Валидатор контролирует заполнение поля expert для компонентов L1
title: Не указаны эксперты для компонентов # Название валидатора
source: > # Источник данных об ошибках. В данном случае JSONata запрос
([([
components.$spread().( /* Сканируем все компоненты */
$ID := $keys()[0];
{ /* Генерируем массив признаков проблем */
"isComponent": *.entity = "component", /* Это компонент */
"isDocHubL1Domain": $boolean($match($ID, /dochub\.[^\.]*$/)), /* в домене DocHub L1 */
"isExpertEmpty": $not($boolean("" & *.expert)), /* и поле expert не заполнено */
"id": $ID
}
)
][isDocHubL1Domain and isExpertEmpty and isComponent]).{ /* Отбираем все компоненты где поле 'expert' пустое*/
"uid": "expert-component-" & id, /* Уникальный идентификатор выявленной ошибки */
"location": "/architect/components/" & id, /* Ссылка на расположение объекта ошибки */
"correction": "Укажите эксперта по компоненту", /* Рекомендации как исправить проблему */
"description": "Компоненты L1 должены иметь сведения об экспертах."
}])
dochub.fields.source: # Валидатор контролирует заполнение поля указывающего на исходник для домена DocHub
title: Не указан файл исходного кода # Название валидатора
source: > # Источник данных об ошибках. В данном случае JSONata запрос
([([
components.$spread().( /* Сканируем все компоненты */
$ID := $keys()[0];
{ /* Генерируем массив признаков проблем */
"isComponent": *.entity = "component", /* Это компонент */
"isDocHubDomain": $boolean($match($ID, /dochub\.front.*/)), /* в домене DocHub */
"isSourceEmpty": $not($boolean("" & *.source)), /* и поле source не заполнено */
"id": $ID
}
)
][isDocHubDomain and isSourceEmpty and isComponent]).{ /* Отбираем все компоненты где поле 'source' пустое*/
"uid": "source-component-" & id, /* Уникальный идентификатор выявленной ошибки */
"location": "/architect/components/" & id, /* Ссылка на расположение объекта ошибки */
"correction": "Укажите где расположен файл с исходными кодами", /* Рекомендации как исправить проблему */
"description": "Компоненты должены иметь сведения о файлах исходного кода в которых они реализуются.
Если необходимо исключить для данного компонента эту информацию,
укажите идентификатор ошибки в разделе 'exceptions' с описанием причиныsss
",
"isDocHubDomain":isDocHubDomain
}])
exceptions: # Исключения для валидаторов
"source-component-dochub.front.spa.blank.doc.markdown": # UID ошибки для исключения
reason: > # Причина исключения
Пример исключения для указания исходных кодов
cause: /docs/dochub.exceptions.examples.doc_markdown # Документ-основание исключения
"$dh-mm-ofb-dochub":
reason: Корневой компонент может не входить в контекст
1 change: 1 addition & 0 deletions public/documentation/docs/manual/components.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ components:
dochub.front: # Идентификатор компонента
title: DocHub # Название компонента
entity: component # Сущность компонента из PlantUML (https://plantuml.com/ru/deployment-diagram)
source: ./ # Кастомное поле определенное в forms
technologies: # Используемые технологии
- JavaScript
- VUEJS2
Expand Down
Loading

0 comments on commit 0eb95b9

Please sign in to comment.