Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validators #73

Merged
merged 14 commits into from
Aug 15, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
14 commits
Select commit Hold shift + click to select a range
5507bda
Добавлена возможность формировать контекст на основании источника данных
rpiontik Jul 29, 2022
0366ba5
Добавлена документация по источникам контекстов
rpiontik Aug 4, 2022
f64248a
Добавлены страницы руководства с описанием работы валидаторов и исклю…
rpiontik Aug 6, 2022
3d47ff5
Добавлен хелпер архитектурных правил
rpiontik Aug 8, 2022
eec42fa
Добавлено дерево валидаторов
rpiontik Aug 9, 2022
bd305ae
Доработано дерево валидаторов для автоматического раскрытия при перех…
rpiontik Aug 10, 2022
7c71268
Merge branch 'master' into validators
rpiontik Aug 10, 2022
ff9dcf1
Добавлена карточка отклонения и исключения. Добавлена сортировка дере…
rpiontik Aug 10, 2022
2fc1c07
Создан валидатор на проверку заполнения поля файла исходных кодов
rpiontik Aug 11, 2022
ea22575
Доработаны валидаторы. Стандартные правила валидации перенесены в ass…
rpiontik Aug 12, 2022
fcdd634
Добавлен вывод ошибок синтаксиса и сетевых ошибок
rpiontik Aug 15, 2022
aa23419
Устранены выявленные баги
rpiontik Aug 15, 2022
6d8bc95
Добавлено поле title в документацию валидаторов
rpiontik Aug 15, 2022
0b5832e
Подвезены изменения из master
rpiontik Aug 15, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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