Skip to content

[Bug] Не работают якорные ссылки для перехода на внешний DocHub-документ/ метод Swagger/ markdown-файл #539

@villanella

Description

@villanella

Не работают якорные ссылки на внешнюю страницу.
Ожидаемое поведение - якорные ссылки работают в стандартном для markdown формате, как в Gitlab - переадресуют на нужный раздел внешней страницы через решетку. При этом внешняя страница является относительной ссылкой на md-файл. А решетка ссылается на заголовок раздела или тег якоря anchor.
Аналогично должны работать якорные ссылки на DocHub-документ.

Пример 1 - относительная ссылка на markdown-файл + якорь:
[action flow](verify-backups-action-flow.md#processing)
Формируется неправильная http-ссылка: [http://localhost:8080/entities/docs/verify-backups-action-flow.md-](http://10.92.41.232:8080/entities/docs/verify-backups-action-flow.md%60-) ищет файл в корне, а не относительно того пути, откуда была дана, поэтому файл не найден, и выдается ошибка:

Неизвестный тип документа [unknown]
 Path: /entities/docs/presentations/verify-backups-action-flow.md Params: {}
 Profile:           {
  "$base": "/entities/docs/presentations/verify-backups-action-flow.md"}

Без якоря ссылка формируется нормально: http://localhost:3030/entities/docs/blank?dh-doc-id=ad.adbm.binary_backup.backup_concept&redirect=backend%3A%2F%2F81d89219098253dba512f4989163b38c%2Fcomponents%2Fcore%2Factions%2Fbinary%2Fbackup%2Fverify-backups-action-flow.md

Пример 2 - относительная ссылка на .md с возвратами + якорь:
[Start action flow](../../common/common-actions.md#prepare-action-flow)
приводит к нерабочей http-ссылке - http://10.92.41.232:8080/common/common-actions.md#prepare-action-flow
Если убрать якорь (решетку и все, что после), то ссылка формируется нормально: http://localhost:3030/entities/docs/blank?dh-doc-id=ad.adbm.binary_backup.backup_concept&redirect=backend%3A%2F%2F81d89219098253dba512f4989163b38c%2Fcomponents%2Fcore%2Factions%2Fbinary%2Fbackup%2F%25E2%2586%2590%2F%25E2%2586%2590%2Fcommon%2Fcommon-actions.md

Пример 3 - якорь + id DocHub-документа
Ссылка на id документа - [Test](blank?dh-doc-id=test.doc#test-anchor) - якорь отрезается, но ссылка, в отличие от предыдудщих примеров, ведет на нужную страницу, только без учета якоря - в v3.13.2 уже такая ссылка не работает, ни с якорем, ни без, формат неактуален.

Пример 4 - якорная ссылка на DocHub-документ
[test](/entities/docs/blank?dh-doc-id=my_doc#anchor) - такая ссылка изначально отображается правильно (если навести курсор, URI корректный - http://localhost:8080/entities/docs/blank?dh-doc-id=my_doc#anchor), но при клике якорь отрезается и ссылка ведет на начало указанной страницы.

В консоли видно, что ссылка парсится как id=my_doc&path=/docs/my_doc, то есть без якоря.
В коде такая ссылка формируется здесь https://github.com/RabotaRu/DocHub/blob/a3b6de6a1b4754a1bda3a4751d7dc183aa297ff2/src/frontend/components/Docs/DocMixin.js#L169

Пример 5 - якорная ссылка на DocHub-документ, другой формат
[test](@document/my_doc#anchor) - не работает ни с якорем ни без в v3.13.2.

Пример 6 - Ссылка на якорь-ключевое слово
Якоря в формате ![test](@anchor/test), проставленные на целевой странице тоже не работают, если ссылка на них вида [test](file.md#test) или [test](/entities/docs/blank?dh-doc-id=my_doc#test) - дана с внешней страницы.

Пример 7 - ссылка на метод Swagger
Нет возможности дать ссылку на определенный метод OpenApi/Swagger:

components:
  schemas:
    User:
      $ref: './external-schemas/user.yaml#/User'  # Относительный путь

Внутри одной страницы якорные ссылки работают.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions