68 lines
3.0 KiB
Markdown
68 lines
3.0 KiB
Markdown
# Правила определения путей файлов
|
|
|
|
Текущая happy-path реализация строит путь документа по фиксированному шаблону:
|
|
|
|
`docs/<domain>/<platform>/<doc_type>/<doc_id>.md`
|
|
|
|
Пример:
|
|
|
|
`docs/orders/pprb/ui_page/orders.ui.list.md`
|
|
|
|
## Источники атрибутов
|
|
|
|
Для построения пути используются четыре основных атрибута:
|
|
|
|
- `domain`
|
|
- `application`
|
|
- `platform`
|
|
- `doc_type`
|
|
- `id` как `doc_id`
|
|
|
|
Если атрибуты явно указаны в подразделе `6.x`, нужно использовать их.
|
|
Если атрибут не указан, он может быть взят из общих метаданных аналитики или определен fallback-логикой.
|
|
|
|
## Нормализация сегментов
|
|
|
|
Каждый сегмент пути нормализуется одинаково:
|
|
|
|
- значение переводится в lowercase;
|
|
- все символы, кроме `a-z`, `0-9`, `.`, `_`, `-`, заменяются на `-`;
|
|
- ведущие и хвостовые `.` и `-` удаляются.
|
|
|
|
Примеры нормализации:
|
|
|
|
- `Payment Status` -> `payment-status`
|
|
- `UFS Orders` -> `ufs-orders`
|
|
- `crm.mobile` -> `crm.mobile`
|
|
|
|
## Значения по умолчанию
|
|
|
|
Если после нормализации сегмент пустой, используются fallback-значения:
|
|
|
|
- корневая папка: `domain`, иначе `application`, иначе `common`
|
|
- `platform` -> `web`
|
|
- `doc_type` -> `misc`
|
|
- `doc_id` -> `untitled`
|
|
|
|
## Что важно в текущей версии
|
|
|
|
- для корневой папки сначала используется `domain`;
|
|
- если `domain` не задан, используется `application`;
|
|
- `sub_domain` сейчас не участвует в построении пути;
|
|
- операции `create`, `update`, `delete` работают с одним и тем же правилом вычисления пути;
|
|
- специальных исключений для разных типов документов пока нет;
|
|
- отдельные каталоги для `pprb`, `ufs`, `web` задаются только через значение `platform`.
|
|
|
|
## Практическое правило для агента
|
|
|
|
Если нужно предложить или определить путь новой страницы, агент должен:
|
|
|
|
1. определить `application`;
|
|
2. определить `domain`;
|
|
3. определить `platform`;
|
|
4. определить `doc_type`;
|
|
5. определить стабильный `doc_id`;
|
|
6. взять корневую папку как `domain`, а если он пустой, то `application`;
|
|
7. нормализовать все сегменты;
|
|
8. собрать путь по шаблону `docs/<root>/<platform>/<doc_type>/<doc_id>.md`.
|