- tools/extract-controls.ts: статически из web/src/pages достаёт все интерактивные
элементы каждого экрана (поиск/фильтры/сортировки/пагинация/экспорт/тумблеры/
действия) → docs/uat-coverage.expected.json (36 экранов, 195 элементов; приоритеты).
- scenarios/stage-ui-uat-coverage.spec.ts: читает expected, в браузере задействует
каждый элемент (фиксирует запрос с параметром/действие), пишет reports/uat-covered.json.
- tools/build-coverage.ts: сводит → docs/uat-coverage.{json,html} с % по экрану/
приоритету/общим (цель P1–P3 ≥95%, P4 ≥70%).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1341 lines
35 KiB
JSON
1341 lines
35 KiB
JSON
{
|
||
"generatedAt": "2026-10-09T07:24:13.680Z",
|
||
"totalElements": 195,
|
||
"screens": [
|
||
{
|
||
"route": "/catalog/products",
|
||
"page": "ProductsPage",
|
||
"file": "pages/ProductsPage.tsx",
|
||
"priority": "P1",
|
||
"title": "Здесь пока пусто",
|
||
"listUrl": "/api/catalog/products",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "export",
|
||
"label": "экспорт (/api/catalog/products/export)",
|
||
"type": "export"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:packaging",
|
||
"label": "сортировка: Фасовка",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:cost",
|
||
"label": "сортировка: Себестоимость",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:systemPrice",
|
||
"label": "сортировка: systemPrice",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:vat",
|
||
"label": "сортировка: НДС",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "filter:все",
|
||
"label": "фильтр: все",
|
||
"type": "filter"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/inventory/stock",
|
||
"page": "StockPage",
|
||
"file": "pages/StockPage.tsx",
|
||
"priority": "P1",
|
||
"title": "Остатки",
|
||
"listUrl": "/api/inventory/stock",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "export",
|
||
"label": "экспорт (/api/inventory/stock/export)",
|
||
"type": "export"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Товар",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Склад",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:unit",
|
||
"label": "сортировка: Ед.",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:quantity",
|
||
"label": "сортировка: Остаток",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:reserved",
|
||
"label": "сортировка: Резерв",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:available",
|
||
"label": "сортировка: Доступно",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "filter:все-склады",
|
||
"label": "фильтр: Все склады",
|
||
"type": "filter"
|
||
},
|
||
{
|
||
"key": "toggle:показать-нулевые",
|
||
"label": "переключатель: Показать нулевые",
|
||
"type": "toggle"
|
||
},
|
||
{
|
||
"key": "toggle:только-минусы",
|
||
"label": "переключатель: Только минусы",
|
||
"type": "toggle"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/sales/retail",
|
||
"page": "RetailSalesPage",
|
||
"file": "pages/RetailSalesPage.tsx",
|
||
"priority": "P1",
|
||
"title": "Розничные продажи",
|
||
"listUrl": "/api/sales/retail",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "export",
|
||
"label": "экспорт (/api/sales/retail/export)",
|
||
"type": "export"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата/время",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Магазин",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/money/shifts",
|
||
"page": "CashShiftsPage",
|
||
"file": "pages/money/CashShiftsPage.tsx",
|
||
"priority": "P2",
|
||
"title": "Смены кассы",
|
||
"listUrl": "/api/money/shifts",
|
||
"elements": [
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "action:print",
|
||
"label": "действие: печать",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/purchases/supplies",
|
||
"page": "SuppliesPage",
|
||
"file": "pages/SuppliesPage.tsx",
|
||
"priority": "P2",
|
||
"title": "Приёмки от поставщиков",
|
||
"listUrl": "/api/purchases/supplies",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "export",
|
||
"label": "экспорт (/api/purchases/supplies/export)",
|
||
"type": "export"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:supplier",
|
||
"label": "сортировка: Поставщик",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Склад",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "filter:оплата-все",
|
||
"label": "фильтр: Оплата: все",
|
||
"type": "filter"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/catalog/counterparties",
|
||
"page": "CounterpartiesPage",
|
||
"file": "pages/CounterpartiesPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Контрагенты",
|
||
"listUrl": "/api/catalog/counterparties",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "export",
|
||
"label": "экспорт (/api/catalog/counterparties/export)",
|
||
"type": "export"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:type",
|
||
"label": "сортировка: Тип",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:phone",
|
||
"label": "сортировка: Телефон",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:country",
|
||
"label": "сортировка: Страна",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/catalog/data-quality",
|
||
"page": "DataQualityPage",
|
||
"file": "pages/DataQualityPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Проверка данных",
|
||
"listUrl": "",
|
||
"elements": [
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/inventory/enters",
|
||
"page": "EntersPage",
|
||
"file": "pages/EntersPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Оприходования",
|
||
"listUrl": "/api/inventory/enters",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Склад",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/inventory/inventories",
|
||
"page": "InventoriesPage",
|
||
"file": "pages/InventoriesPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Инвентаризации",
|
||
"listUrl": "/api/inventory/inventories",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/inventory/losses",
|
||
"page": "LossesPage",
|
||
"file": "pages/LossesPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Списания",
|
||
"listUrl": "/api/inventory/losses",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:reason",
|
||
"label": "сортировка: Причина",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Склад",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/inventory/movements",
|
||
"page": "StockMovementsPage",
|
||
"file": "pages/StockMovementsPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Движения",
|
||
"listUrl": "/api/inventory/movements",
|
||
"elements": [
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:occurredAt",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:type",
|
||
"label": "сортировка: Операция",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:product",
|
||
"label": "сортировка: Товар",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Склад",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:quantity",
|
||
"label": "сортировка: Количество",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:documentType",
|
||
"label": "сортировка: Документ",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "filter:все-склады",
|
||
"label": "фильтр: Все склады",
|
||
"type": "filter"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/money/report",
|
||
"page": "MoneyReportPage",
|
||
"file": "pages/money/MoneyReportPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Отчёт «Деньги»",
|
||
"listUrl": "/api/money/reports/balances",
|
||
"elements": [
|
||
{
|
||
"key": "filter:period",
|
||
"label": "фильтр: период/дата",
|
||
"type": "filter"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/money/supplier-debts",
|
||
"page": "SupplierDebtsPage",
|
||
"file": "pages/money/SupplierDebtsPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Долги поставщикам",
|
||
"listUrl": "/api/money/reports/supplier-debts",
|
||
"elements": [
|
||
{
|
||
"key": "action:post",
|
||
"label": "действие: провести",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/money/transactions",
|
||
"page": "MoneyTransactionsPage",
|
||
"file": "pages/money/MoneyTransactionsPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Платежи и ордера",
|
||
"listUrl": "/api/money/transactions",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "filter:все-статусы",
|
||
"label": "фильтр: Все статусы",
|
||
"type": "filter"
|
||
},
|
||
{
|
||
"key": "filter:все-типы",
|
||
"label": "фильтр: Все типы",
|
||
"type": "filter"
|
||
},
|
||
{
|
||
"key": "action:post",
|
||
"label": "действие: провести",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:unpost",
|
||
"label": "действие: снять проведение",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/purchases/invoices",
|
||
"page": "InvoicesPage",
|
||
"file": "pages/InvoicesPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Накладные",
|
||
"listUrl": "/api/purchases/invoices",
|
||
"elements": [
|
||
{
|
||
"key": "action:unpost",
|
||
"label": "действие: снять проведение",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/purchases/supplier-returns",
|
||
"page": "SupplierReturnsPage",
|
||
"file": "pages/SupplierReturnsPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Возвраты поставщикам",
|
||
"listUrl": "/api/purchases/supplier-returns",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:supplier",
|
||
"label": "сортировка: Поставщик",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/reports/sales",
|
||
"page": "SalesReportPage",
|
||
"file": "pages/SalesReportPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Данных для отчёта нет",
|
||
"listUrl": "/api/reports/sales",
|
||
"elements": [
|
||
{
|
||
"key": "filter:period",
|
||
"label": "фильтр: период/дата",
|
||
"type": "filter"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/reports/stock",
|
||
"page": "StockReportPage",
|
||
"file": "pages/StockReportPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Остатки пусты",
|
||
"listUrl": "/api/reports/stock",
|
||
"elements": [
|
||
{
|
||
"key": "filter:period",
|
||
"label": "фильтр: период/дата",
|
||
"type": "filter"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/admin/import/moysklad",
|
||
"page": "MoySkladImportPage",
|
||
"file": "pages/MoySkladImportPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Импорт из МойСклад",
|
||
"listUrl": "/api/admin/jobs/",
|
||
"elements": [
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/audit-log",
|
||
"page": "OrgAuditLogPage",
|
||
"file": "pages/OrgAuditLogPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Журнал изменений",
|
||
"listUrl": "/api/organization/employees",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "filter:sel1",
|
||
"label": "фильтр: фильтр 1",
|
||
"type": "filter"
|
||
},
|
||
{
|
||
"key": "filter:sel2",
|
||
"label": "фильтр: фильтр 2",
|
||
"type": "filter"
|
||
},
|
||
{
|
||
"key": "filter:все",
|
||
"label": "фильтр: Все",
|
||
"type": "filter"
|
||
},
|
||
{
|
||
"key": "filter:period",
|
||
"label": "фильтр: период/дата",
|
||
"type": "filter"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/catalog/price-types",
|
||
"page": "PriceTypesPage",
|
||
"file": "pages/PriceTypesPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Типы цен",
|
||
"listUrl": "/api/catalog/price-types",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:isRequired",
|
||
"label": "сортировка: Обязательно",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/catalog/product-groups",
|
||
"page": "ProductGroupsPage",
|
||
"file": "pages/ProductGroupsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Группы товаров",
|
||
"listUrl": "/api/catalog/product-groups",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:path",
|
||
"label": "сортировка: Путь",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/catalog/retail-points",
|
||
"page": "RetailPointsPage",
|
||
"file": "pages/RetailPointsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Кассы",
|
||
"listUrl": "/api/catalog/retail-points",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:code",
|
||
"label": "сортировка: Код",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Склад",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:address",
|
||
"label": "сортировка: Адрес",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:isActive",
|
||
"label": "сортировка: Активна",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/catalog/stores",
|
||
"page": "StoresPage",
|
||
"file": "pages/StoresPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Склады",
|
||
"listUrl": "/api/catalog/stores",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:code",
|
||
"label": "сортировка: Код",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:address",
|
||
"label": "сортировка: Адрес",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:isMain",
|
||
"label": "сортировка: Основной",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:isActive",
|
||
"label": "сортировка: Активен",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/catalog/units",
|
||
"page": "UnitsOfMeasurePage",
|
||
"file": "pages/UnitsOfMeasurePage.tsx",
|
||
"priority": "P4",
|
||
"title": "Единицы измерения",
|
||
"listUrl": "/api/catalog/units-of-measure",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/inventory/mobile",
|
||
"page": "InventoryMobilePage",
|
||
"file": "pages/InventoryMobilePage.tsx",
|
||
"priority": "P4",
|
||
"title": "Инвентаризация с телефона",
|
||
"listUrl": "/api/catalog/stores",
|
||
"elements": [
|
||
{
|
||
"key": "action:post",
|
||
"label": "действие: провести",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/inventory/transfers",
|
||
"page": "TransfersPage",
|
||
"file": "pages/TransfersPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Перемещения",
|
||
"listUrl": "/api/inventory/transfers",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/loyalty/cards",
|
||
"page": "LoyaltyCardsPage",
|
||
"file": "pages/LoyaltyCardsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Карты лояльности",
|
||
"listUrl": "/api/loyalty/cards",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:cardNumber",
|
||
"label": "сортировка: Номер",
|
||
"type": "sort"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/loyalty/programs",
|
||
"page": "LoyaltyProgramsPage",
|
||
"file": "pages/LoyaltyProgramsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Программы лояльности",
|
||
"listUrl": "/api/loyalty/programs",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/money/accounts",
|
||
"page": "MoneyAccountsPage",
|
||
"file": "pages/money/MoneyAccountsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Счета и кассы",
|
||
"listUrl": "/api/money/accounts",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/money/expense-items",
|
||
"page": "ExpenseItemsPage",
|
||
"file": "pages/money/ExpenseItemsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Статьи расходов",
|
||
"listUrl": "/api/money/expense-items",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/promotions",
|
||
"page": "PromotionsPage",
|
||
"file": "pages/PromotionsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Акции и промокоды",
|
||
"listUrl": "/api/promotions",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/sales/demands",
|
||
"page": "DemandsPage",
|
||
"file": "pages/DemandsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Оптовые отгрузки",
|
||
"listUrl": "/api/sales/demands",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:customer",
|
||
"label": "сортировка: Контрагент",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/settings/employee-roles",
|
||
"page": "EmployeeRolesPage",
|
||
"file": "pages/EmployeeRolesPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Роли сотрудников",
|
||
"listUrl": "/api/organization/employee-roles",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/settings/employees",
|
||
"page": "EmployeesPage",
|
||
"file": "pages/EmployeesPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Сотрудники",
|
||
"listUrl": "/api/organization/employees",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search"
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"route": "/settings/organization",
|
||
"page": "OrganizationSettingsPage",
|
||
"file": "pages/OrganizationSettingsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Настройки организации",
|
||
"listUrl": "/api/organization/telegram/status",
|
||
"elements": [
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
} |