-
Notifications
You must be signed in to change notification settings - Fork 7
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
added Openapi specification visualization to Swagger UI #201
base: develop
Are you sure you want to change the base?
Conversation
WalkthroughИзменения включают внесение мелких корректировок комментариев и обновлений версии, добавление новых XML-файлов для описания метаданных модулей, шаблонов и перечислений, а также появление новых библиотек в модулях для обработки HTTP-запросов, маршрутизации, формирования ответов и сопоставления с REST-статусами. Обновлена конфигурация системы с включением новых компонентов, относящихся к спецификациям OpenAPI и REST. Changes
Sequence Diagram(s)sequenceDiagram
participant Клиент
participant OpenAPI_Module
participant РесурсХэндлер
participant ОшибкаОбработчик
Клиент->>OpenAPI_Module: Отправка запроса спецификации
OpenAPI_Module->>OpenAPI_Module: ПолучитьОбработчикРесурса(запрос)
alt Ресурс найден
OpenAPI_Module->>РесурсХэндлер: Обработка запроса
РесурсХэндлер-->>OpenAPI_Module: Результат обработки
OpenAPI_Module-->>Клиент: Возврат спецификации
else Ресурс не найден
OpenAPI_Module->>ОшибкаОбработчик: Генерация ошибки
ОшибкаОбработчик-->>Клиент: Возврат сообщения об ошибке
end
Possibly related PRs
Suggested labels
Tip 🌐 Web search-backed reviews and chat
📜 Recent review detailsConfiguration used: .coderabbit.yaml 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (3)
src/cf/CommonModules/пбп_ПостроительСпецификацииOpenAPI/Ext/Module.bsl (1)
349-373
: Убедиться в корректности извлечения параметра имени сервиса.Код
ПолучитьКлючСервиса(Запрос)
(строки 349-373) берёт часть URL, начиная от последнего слэша. Если формат URL может отличаться или содержать дополнительные параметры, стоит проверить корректность обработки, чтобы исключить неверное определение имени сервиса.src/cf/Enums/пбп_ТипыОтветовREST/Ext/ManagerModule.bsl (1)
6-16
: Свести дублирующиеся коды ответов в единый справочник (если потребуется).Функция
ПолучитьПользовательскиеВидыОтветов
дублирует некоторые коды, которые могут быть также определены в служебных видах ответов. Если в будущем потребуется расширенное единообразие, рассмотрите идею объединить общие коды или вынести логику в одно место.src/cf/CommonTemplates/СпецификацияСтраницаREST/Ext/Template.txt (1)
3-8
: Добавьте мета-теги для улучшения SEO и поддержки мобильных устройств.Рекомендуется добавить следующие мета-теги в секцию head для улучшения SEO и корректного отображения на мобильных устройствах.
<head> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<meta name="description" content="API Documentation"> <link rel="icon" type="image/png" href="[Иконка16Ссылка]" sizes="16x16">
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
src/cf/CommonTemplates/СпецификацияИконка16СтраницыREST/Ext/Template.bin
is excluded by!**/*.bin
src/cf/CommonTemplates/СпецификацияИконка32СтраницыREST/Ext/Template.bin
is excluded by!**/*.bin
📒 Files selected for processing (18)
src/cf/Catalogs/пбп_ИсторияИнтеграции/Ext/ManagerModule.bsl
(1 hunks)src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl
(2 hunks)src/cf/CommonModules/пбп_ПостроительСпецификацииOpenAPI.xml
(1 hunks)src/cf/CommonModules/пбп_ПостроительСпецификацииOpenAPI/Ext/Module.bsl
(1 hunks)src/cf/CommonModules/пбп_ПостроительСпецификацииOpenAPIПереопределяемый.xml
(1 hunks)src/cf/CommonModules/пбп_ПостроительСпецификацииOpenAPIПереопределяемый/Ext/Module.bsl
(1 hunks)src/cf/CommonModules/пбп_ПостроительСпецификацииOpenAPIПовтИсп.xml
(1 hunks)src/cf/CommonModules/пбп_ПостроительСпецификацииOpenAPIПовтИсп/Ext/Module.bsl
(1 hunks)src/cf/CommonTemplates/СпецификацияИконка16СтраницыREST.xml
(1 hunks)src/cf/CommonTemplates/СпецификацияИконка32СтраницыREST.xml
(1 hunks)src/cf/CommonTemplates/СпецификацияСкриптыСтраницыREST.xml
(1 hunks)src/cf/CommonTemplates/СпецификацияСтилиСтраницыREST.xml
(1 hunks)src/cf/CommonTemplates/СпецификацияСтраницаREST.xml
(1 hunks)src/cf/CommonTemplates/СпецификацияСтраницаREST/Ext/Template.txt
(1 hunks)src/cf/Configuration.xml
(5 hunks)src/cf/Enums/пбп_ТипыОтветовREST.xml
(1 hunks)src/cf/Enums/пбп_ТипыОтветовREST/Ext/ManagerModule.bsl
(1 hunks)src/cf/Subsystems/пбп_УправлениеИнтеграциями.xml
(1 hunks)
✅ Files skipped from review due to trivial changes (9)
- src/cf/Catalogs/пбп_ИсторияИнтеграции/Ext/ManagerModule.bsl
- src/cf/CommonTemplates/СпецификацияСтилиСтраницыREST.xml
- src/cf/CommonTemplates/СпецификацияИконка32СтраницыREST.xml
- src/cf/CommonTemplates/СпецификацияСтраницаREST.xml
- src/cf/CommonTemplates/СпецификацияИконка16СтраницыREST.xml
- src/cf/CommonModules/пбп_ПостроительСпецификацииOpenAPIПереопределяемый.xml
- src/cf/CommonTemplates/СпецификацияСкриптыСтраницыREST.xml
- src/cf/CommonModules/пбп_ПостроительСпецификацииOpenAPI.xml
- src/cf/CommonModules/пбп_ПостроительСпецификацииOpenAPIПовтИсп.xml
🔇 Additional comments (15)
src/cf/CommonModules/пбп_ПостроительСпецификацииOpenAPI/Ext/Module.bsl (3)
32-66
: Уточнить безопасность динамического вызова обработчика.Данный участок кода формирует строку для последующего безопасного вычисления обработчика (
ВычислитьВБезопасномРежиме
). Однако важно убедиться, что Обработчик не содержит произвольного пользовательского ввода, который может привести к потенциальным уязвимостям. Рекомендуется дополнительно проверить, что имя обработчика берётся только из доверенных источников.
223-235
: Проверить логику ответа о состоянии сервиса.Функция
ОбработчикМетодаСостоянияСервиса
возвращает статус"pass"
. Если в будущем потребуется расширять информацию о состоянии сервиса (например, добавлять дополнительные поля), убедитесь, что код обрабатывает возможные изменения без нарушения обратной совместимости.
241-315
: Проверьте корректность формирования ошибки и заголовков.Блок генерации ответа с ошибкой (строки 241-315) формирует JSON с деталями. Убедитесь, что структура данных ошибки (свойство
detail
) всегда содержит человеку-читаемое пояснение. Также важно, чтобы коды ответа корректно соответствовали перечислениям изпбп_ТипыОтветовREST
.src/cf/Enums/пбп_ТипыОтветовREST/Ext/ManagerModule.bsl (1)
18-31
: Уточнить назначение служебных ответов.Функция
ПолучитьСлужебныеВидыОтветов
возвращает коды для ситуаций, связанных с аутентификацией, авторизацией и сложными ошибками (422, 500). Убедитесь, что реальный бизнес-процесс корректно обрабатывает эти ответы, а код 422 действительно используется только для валидации или ошибок спецификации, чтобы избежать путаницы.src/cf/CommonModules/пбп_ПостроительСпецификацииOpenAPIПереопределяемый/Ext/Module.bsl (1)
24-34
: Проверить корректность сопоставления сервисов и макетов.В функции
ИменаМакетовСервисов
(строки 24-34) создаётся соответствие между именем сервиса и именем макета. Убедитесь, что данные пары являются актуальными для всех сервисов, а в случае отсутствия ключа будет корректно обрабатываться ошибка (например, в связке с функциями из основного модуля).src/cf/CommonModules/пбп_ОбновлениеИнформационнойБазыПБП/Ext/Module.bsl (1)
77-77
: Корректное обновление версии.Версия обновлена с 1.0.5.25 до 1.0.6.0, что соответствует добавлению функциональности визуализации спецификации OpenAPI.
src/cf/Subsystems/пбп_УправлениеИнтеграциями.xml (1)
59-67
: Корректное добавление модулей и шаблонов.Новые модули и шаблоны для спецификации OpenAPI добавлены структурированно и согласованно с существующей конфигурацией подсистемы управления интеграциями.
src/cf/Enums/пбп_ТипыОтветовREST.xml (4)
1-2
: Проверка заголовка и пространств имен.
XML-заголовок и пространство имен заданы корректно и соответствуют требованиям системы.
3-17
: Проверка секции InternalInfo.
Раздел InternalInfo содержит корректно сгенерированные типы (EnumRef, EnumManager, EnumList) с уникальными идентификаторами. Убедитесь, что назначенные TypeId и ValueId соответствуют плану использования в системе.
18-93
: Проверка секции Properties.
Секция Properties включает подробное описание перечисления: имя, синоним на русском, комментарии и настройки стандартных атрибутов (Order и Ref). Все элементы заполнены корректно, и форматирование соответствует ожиданиям для метаданных данного формата.
94-215
: Проверка секции ChildObjects и элементов EnumValue.
Определены все необходимые значения перечисления для REST-ответов (например, «Успешно», «ОшибкаНеКорректныйЗапрос», «ОшибкаНеАвторизован» и т.д.) с уникальными UUID и корректно структурированными свойствами. Рекомендуется проверить, что список EnumValue полностью покрывает все планируемые ответы для API.src/cf/Configuration.xml (4)
60-60
: Обновление версии конфигурации.
Версия изменена на 1.0.6.0, что свидетельствует об обновлении и, возможно, интеграции новых компонентов. Убедитесь, что все связанные модули и зависимости совместимы с данной версией.
280-284
: Добавление шаблонов для спецификации REST.
В блоке ChildObjects добавлены новые элементы CommonTemplate:
- СпецификацияИконка16СтраницыREST
- СпецификацияИконка32СтраницыREST
- СпецификацияСкриптыСтраницыREST
- СпецификацияСтилиСтраницыREST
- СпецификацияСтраницаREST
Эти шаблоны, судя по комментариям, предназначены для визуализации спецификации OpenAPI через Swagger UI. Проверьте, что они корректно подключены в систему.
329-331
: Добавление модулей для построения спецификации OpenAPI.
Новые CommonModule:
- пбп_ПостроительСпецификацииOpenAPI
- пбп_ПостроительСпецификацииOpenAPIПереопределяемый
- пбп_ПостроительСпецификацииOpenAPIПовтИсп
добавлены для генерации спецификаций OpenAPI, что соответствует целям данного PR по визуализации спецификации. Рекомендуется убедиться в корректной интеграции этих модулей с Swagger UI.
367-373
: Обновление перечня перечислений (Enum).
В разделе Enum наблюдается изменение порядка следующих элементов:
- пбп_НаправленияИнтеграционныхПотоков
- пбп_МетодыЗапросаREST
- пбп_ТипыОтветовREST
Новый enum пбп_ТипыОтветовREST, описанный в отдельном файле, теперь включён в конфигурацию. Проверьте, что данный порядок соответствует необходимой логике обработки REST-ответов в системе.
Обработчики.Вставить("/swagger-ui-bundle.js", | ||
"пбп_ПостроительСпецификацииOpenAPI.ОбработчикМетодаСкриптовДокументацииСервиса"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Удалите дублирующийся обработчик.
Обработчик для /swagger-ui-bundle.js
уже определен в строках 34-35. Повторное определение избыточно и может привести к непредсказуемому поведению.
Обработчики.Вставить("/swagger-ui-bundle.js",
"пбп_ПостроительСпецификацииOpenAPI.ОбработчикМетодаСкриптовДокументацииСервиса");
- Обработчики.Вставить("/swagger-ui-bundle.js",
- "пбп_ПостроительСпецификацииOpenAPI.ОбработчикМетодаСкриптовДокументацииСервиса");
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
Обработчики.Вставить("/swagger-ui-bundle.js", | |
"пбп_ПостроительСпецификацииOpenAPI.ОбработчикМетодаСкриптовДокументацииСервиса"); | |
Обработчики.Вставить("/swagger-ui-bundle.js", | |
"пбп_ПостроительСпецификацииOpenAPI.ОбработчикМетодаСкриптовДокументацииСервиса"); |
|
Summary by CodeRabbit