Добавить механику веб-страниц
Сейчас в системе нет системы веб-УРЛов. Роутинг строится на файлах next-js. При этом нужна возможность формировать ЧПУ.
Сейчас в системе нет системы веб-УРЛов. Роутинг строится на файлах next-js. При этом нужна возможность формировать ЧПУ.
Реализовать гибкую систему маршрутизации, позволяющую назначать произвольные URL для контента. Вместо технических путей вида /concepts/clxyz123abc — человекочитаемые /статьи/мой-первый-пост.
Выбран подход с fallback-роутингом на уровне Next.js. Все запросы к несуществующим страницам перехватываются единой точкой входа, которая резолвит путь через базу данных.
Почему так:
parentId — можно строить вложенные пути любой глубиныБаза данных — новая модель SiteRoute:
path — полный путь (уникальный индекс)slug — сегмент путиparentId — ссылка на родителя для иерархииkBConceptId — привязка к концепту базы знанийparentId + slug гарантирует уникальность slug в рамках родителяNext.js — fallback rewrite в next.config.js перенаправляет /:path* на /_fallback/[...path].tsx.
Обработчик — получает текущий путь, запрашивает SiteRoute через GraphQL, рендерит соответствующую страницу или отдаёт 404.
Виртуальное поле uri — добавлено в KBConcept на уровне GraphQL-схемы. Возвращает кастомный путь если есть SiteRoute, иначе стандартный /concepts/{id}. Все компоненты ссылок автоматически используют это поле.
siteRoute, siteRoutes, createSiteRouteConceptLink, PostLink, TaskLink, WorkLogLinkuriДвижок haih-agent получил полноценную систему ЧПУ с поддержкой иерархии, без ограничений на структуру URL и с автоматической интеграцией во все существующие компоненты.