Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
Доработаны хендлеры браузерного прогона (пагинация со сбросом поиска, обобщённое создание/сохранение/удаление, период-фильтры, доп. сид: чек/приёмка/оприходование/ списание/инвентаризация/возврат). Экстрактор ловит строковый фолбэк заголовка колонки. docs/uat-coverage.html — цифры по экрану/приоритету/общим. Цели (P1–P3 ≥95%, P4 ≥70%) пока НЕ достигнуты (переход на ALL MARKET в приоритете) — остаток задокументирован в docs/uat-coverage-progress.md, продолжим после перехода. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1835 lines
52 KiB
JSON
1835 lines
52 KiB
JSON
{
|
||
"generatedAt": "2026-10-09T08:08:43.723Z",
|
||
"summary": {
|
||
"overall": 61,
|
||
"total": 195,
|
||
"done": 119,
|
||
"byPriority": {
|
||
"P1": {
|
||
"pct": 84,
|
||
"total": 32,
|
||
"done": 27
|
||
},
|
||
"P2": {
|
||
"pct": 86,
|
||
"total": 14,
|
||
"done": 12
|
||
},
|
||
"P3": {
|
||
"pct": 76,
|
||
"total": 63,
|
||
"done": 48
|
||
},
|
||
"P4": {
|
||
"pct": 37,
|
||
"total": 86,
|
||
"done": 32
|
||
}
|
||
},
|
||
"targets": {
|
||
"P1": 95,
|
||
"P2": 95,
|
||
"P3": 95,
|
||
"P4": 70
|
||
}
|
||
},
|
||
"screens": [
|
||
{
|
||
"route": "/catalog/products",
|
||
"page": "ProductsPage",
|
||
"file": "pages/ProductsPage.tsx",
|
||
"priority": "P1",
|
||
"title": "Здесь пока пусто",
|
||
"listUrl": "/api/catalog/products",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "export",
|
||
"label": "экспорт (/api/catalog/products/export)",
|
||
"type": "export",
|
||
"covered": true,
|
||
"how": "экспорт→/export&format="
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Название»→sort=name"
|
||
},
|
||
{
|
||
"key": "sort:packaging",
|
||
"label": "сортировка: Фасовка",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Фасовка»→sort=packaging"
|
||
},
|
||
{
|
||
"key": "sort:cost",
|
||
"label": "сортировка: Себестоимость",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Себестоимость»→sort=cost"
|
||
},
|
||
{
|
||
"key": "sort:systemPrice",
|
||
"label": "сортировка: systemPrice",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «systemPrice»"
|
||
},
|
||
{
|
||
"key": "sort:vat",
|
||
"label": "сортировка: НДС",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «НДС»"
|
||
},
|
||
{
|
||
"key": "filter:все",
|
||
"label": "фильтр: все",
|
||
"type": "filter",
|
||
"covered": false,
|
||
"how": "смена фильтра→новый запрос списка"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action",
|
||
"covered": true,
|
||
"how": "переход на создание"
|
||
}
|
||
],
|
||
"pct": 64,
|
||
"done": 7
|
||
},
|
||
{
|
||
"route": "/inventory/stock",
|
||
"page": "StockPage",
|
||
"file": "pages/StockPage.tsx",
|
||
"priority": "P1",
|
||
"title": "Остатки",
|
||
"listUrl": "/api/inventory/stock",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "export",
|
||
"label": "экспорт (/api/inventory/stock/export)",
|
||
"type": "export",
|
||
"covered": true,
|
||
"how": "экспорт→/export&format="
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Товар",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Товар»→sort=name"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Склад",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "клик «Склад»→sort=store"
|
||
},
|
||
{
|
||
"key": "sort:unit",
|
||
"label": "сортировка: Ед.",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Ед.»→sort=unit"
|
||
},
|
||
{
|
||
"key": "sort:quantity",
|
||
"label": "сортировка: Остаток",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Остаток»→sort=quantity"
|
||
},
|
||
{
|
||
"key": "sort:reserved",
|
||
"label": "сортировка: Резерв",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Резерв»→sort=reserved"
|
||
},
|
||
{
|
||
"key": "sort:available",
|
||
"label": "сортировка: Доступно",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Доступно»→sort=available"
|
||
},
|
||
{
|
||
"key": "filter:все-склады",
|
||
"label": "фильтр: Все склады",
|
||
"type": "filter",
|
||
"covered": true,
|
||
"how": "смена фильтра→новый запрос списка"
|
||
},
|
||
{
|
||
"key": "toggle:показать-нулевые",
|
||
"label": "переключатель: Показать нулевые",
|
||
"type": "toggle",
|
||
"covered": true,
|
||
"how": "тумблер→новый запрос списка"
|
||
},
|
||
{
|
||
"key": "toggle:только-минусы",
|
||
"label": "переключатель: Только минусы",
|
||
"type": "toggle",
|
||
"covered": true,
|
||
"how": "тумблер→новый запрос списка"
|
||
}
|
||
],
|
||
"pct": 92,
|
||
"done": 11
|
||
},
|
||
{
|
||
"route": "/sales/retail",
|
||
"page": "RetailSalesPage",
|
||
"file": "pages/RetailSalesPage.tsx",
|
||
"priority": "P1",
|
||
"title": "Розничные продажи",
|
||
"listUrl": "/api/sales/retail",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "export",
|
||
"label": "экспорт (/api/sales/retail/export)",
|
||
"type": "export",
|
||
"covered": true,
|
||
"how": "экспорт→/export&format="
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «№»→sort=number"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата/время",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Дата/время»→sort=date"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Статус»→sort=status"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Магазин",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Магазин»→sort=store"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Сумма»→sort=total"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action",
|
||
"covered": true,
|
||
"how": "переход на создание"
|
||
}
|
||
],
|
||
"pct": 100,
|
||
"done": 9
|
||
},
|
||
{
|
||
"route": "/money/shifts",
|
||
"page": "CashShiftsPage",
|
||
"file": "pages/money/CashShiftsPage.tsx",
|
||
"priority": "P2",
|
||
"title": "Смены кассы",
|
||
"listUrl": "/api/money/shifts",
|
||
"elements": [
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": false,
|
||
"how": "список пуст — пагинации нет"
|
||
},
|
||
{
|
||
"key": "action:print",
|
||
"label": "действие: печать",
|
||
"type": "action",
|
||
"covered": true,
|
||
"how": "элемент присутствует"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "сохранение не удалось"
|
||
}
|
||
],
|
||
"pct": 33,
|
||
"done": 1
|
||
},
|
||
{
|
||
"route": "/purchases/supplies",
|
||
"page": "SuppliesPage",
|
||
"file": "pages/SuppliesPage.tsx",
|
||
"priority": "P2",
|
||
"title": "Приёмки от поставщиков",
|
||
"listUrl": "/api/purchases/supplies",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "export",
|
||
"label": "экспорт (/api/purchases/supplies/export)",
|
||
"type": "export",
|
||
"covered": true,
|
||
"how": "экспорт→/export&format="
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «№»→sort=number"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Дата»→sort=date"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Статус»→sort=status"
|
||
},
|
||
{
|
||
"key": "sort:supplier",
|
||
"label": "сортировка: Поставщик",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Поставщик»→sort=supplier"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Склад",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Склад»→sort=store"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Сумма»→sort=total"
|
||
},
|
||
{
|
||
"key": "filter:оплата-все",
|
||
"label": "фильтр: Оплата: все",
|
||
"type": "filter",
|
||
"covered": true,
|
||
"how": "смена фильтра→новый запрос списка"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action",
|
||
"covered": true,
|
||
"how": "открылась форма"
|
||
}
|
||
],
|
||
"pct": 100,
|
||
"done": 11
|
||
},
|
||
{
|
||
"route": "/catalog/counterparties",
|
||
"page": "CounterpartiesPage",
|
||
"file": "pages/CounterpartiesPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Контрагенты",
|
||
"listUrl": "/api/catalog/counterparties",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "export",
|
||
"label": "экспорт (/api/catalog/counterparties/export)",
|
||
"type": "export",
|
||
"covered": true,
|
||
"how": "экспорт→/export&format="
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Название»→sort=name"
|
||
},
|
||
{
|
||
"key": "sort:type",
|
||
"label": "сортировка: Тип",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Тип»→sort=type"
|
||
},
|
||
{
|
||
"key": "sort:phone",
|
||
"label": "сортировка: Телефон",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Телефон»→sort=phone"
|
||
},
|
||
{
|
||
"key": "sort:country",
|
||
"label": "сортировка: Страна",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Страна»→sort=country"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": true,
|
||
"how": "создание→POST 2xx"
|
||
}
|
||
],
|
||
"pct": 89,
|
||
"done": 8
|
||
},
|
||
{
|
||
"route": "/catalog/data-quality",
|
||
"page": "DataQualityPage",
|
||
"file": "pages/DataQualityPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Проверка данных",
|
||
"listUrl": "",
|
||
"elements": [
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/inventory/enters",
|
||
"page": "EntersPage",
|
||
"file": "pages/EntersPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Оприходования",
|
||
"listUrl": "/api/inventory/enters",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «№»→sort=number"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Дата»→sort=date"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Статус»→sort=status"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Склад",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Склад»→sort=store"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Сумма»→sort=total"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не открылось"
|
||
}
|
||
],
|
||
"pct": 88,
|
||
"done": 7
|
||
},
|
||
{
|
||
"route": "/inventory/inventories",
|
||
"page": "InventoriesPage",
|
||
"file": "pages/InventoriesPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Инвентаризации",
|
||
"listUrl": "/api/inventory/inventories",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «№»→sort=number"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Дата»→sort=date"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Статус»→sort=status"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action",
|
||
"covered": true,
|
||
"how": "открылась форма"
|
||
}
|
||
],
|
||
"pct": 100,
|
||
"done": 6
|
||
},
|
||
{
|
||
"route": "/inventory/losses",
|
||
"page": "LossesPage",
|
||
"file": "pages/LossesPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Списания",
|
||
"listUrl": "/api/inventory/losses",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «№»→sort=number"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Дата»→sort=date"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Статус»→sort=status"
|
||
},
|
||
{
|
||
"key": "sort:reason",
|
||
"label": "сортировка: Причина",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Причина»→sort=reason"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Склад",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Склад»→sort=store"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Сумма»→sort=total"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не открылось"
|
||
}
|
||
],
|
||
"pct": 89,
|
||
"done": 8
|
||
},
|
||
{
|
||
"route": "/inventory/movements",
|
||
"page": "StockMovementsPage",
|
||
"file": "pages/StockMovementsPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Движения",
|
||
"listUrl": "/api/inventory/movements",
|
||
"elements": [
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "sort:occurredAt",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Дата»→sort=occurredAt"
|
||
},
|
||
{
|
||
"key": "sort:type",
|
||
"label": "сортировка: Операция",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Операция»→sort=type"
|
||
},
|
||
{
|
||
"key": "sort:product",
|
||
"label": "сортировка: Товар",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Товар»→sort=product"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Склад",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "клик «Склад»→sort=store"
|
||
},
|
||
{
|
||
"key": "sort:quantity",
|
||
"label": "сортировка: Количество",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Количество»→sort=quantity"
|
||
},
|
||
{
|
||
"key": "sort:documentType",
|
||
"label": "сортировка: Документ",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Документ»→sort=documentType"
|
||
},
|
||
{
|
||
"key": "filter:все-склады",
|
||
"label": "фильтр: Все склады",
|
||
"type": "filter",
|
||
"covered": true,
|
||
"how": "смена фильтра→новый запрос списка"
|
||
}
|
||
],
|
||
"pct": 88,
|
||
"done": 7
|
||
},
|
||
{
|
||
"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",
|
||
"covered": false,
|
||
"how": "период не изменил выдачу"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"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",
|
||
"covered": false,
|
||
"how": "не найден здесь"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "сохранение не удалось"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/money/transactions",
|
||
"page": "MoneyTransactionsPage",
|
||
"file": "pages/money/MoneyTransactionsPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Платежи и ордера",
|
||
"listUrl": "/api/money/transactions",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": false,
|
||
"how": "список пуст — пагинации нет"
|
||
},
|
||
{
|
||
"key": "filter:все-статусы",
|
||
"label": "фильтр: Все статусы",
|
||
"type": "filter",
|
||
"covered": true,
|
||
"how": "смена фильтра→новый запрос списка"
|
||
},
|
||
{
|
||
"key": "filter:все-типы",
|
||
"label": "фильтр: Все типы",
|
||
"type": "filter",
|
||
"covered": true,
|
||
"how": "смена фильтра→новый запрос списка"
|
||
},
|
||
{
|
||
"key": "action:post",
|
||
"label": "действие: провести",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не найден здесь"
|
||
},
|
||
{
|
||
"key": "action:unpost",
|
||
"label": "действие: снять проведение",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не найден здесь"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "сохранение не удалось"
|
||
}
|
||
],
|
||
"pct": 38,
|
||
"done": 3
|
||
},
|
||
{
|
||
"route": "/purchases/invoices",
|
||
"page": "InvoicesPage",
|
||
"file": "pages/InvoicesPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Накладные",
|
||
"listUrl": "/api/purchases/invoices",
|
||
"elements": [
|
||
{
|
||
"key": "action:unpost",
|
||
"label": "действие: снять проведение",
|
||
"type": "action",
|
||
"covered": true,
|
||
"how": "элемент присутствует"
|
||
}
|
||
],
|
||
"pct": 100,
|
||
"done": 1
|
||
},
|
||
{
|
||
"route": "/purchases/supplier-returns",
|
||
"page": "SupplierReturnsPage",
|
||
"file": "pages/SupplierReturnsPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Возвраты поставщикам",
|
||
"listUrl": "/api/purchases/supplier-returns",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «№»→sort=number"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Дата»→sort=date"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Статус»→sort=status"
|
||
},
|
||
{
|
||
"key": "sort:supplier",
|
||
"label": "сортировка: Поставщик",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Поставщик»→sort=supplier"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Сумма»→sort=total"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action",
|
||
"covered": true,
|
||
"how": "переход на создание"
|
||
}
|
||
],
|
||
"pct": 100,
|
||
"done": 8
|
||
},
|
||
{
|
||
"route": "/reports/sales",
|
||
"page": "SalesReportPage",
|
||
"file": "pages/SalesReportPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Данных для отчёта нет",
|
||
"listUrl": "/api/reports/sales",
|
||
"elements": [
|
||
{
|
||
"key": "filter:period",
|
||
"label": "фильтр: период/дата",
|
||
"type": "filter",
|
||
"covered": false,
|
||
"how": "период не изменил выдачу"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/reports/stock",
|
||
"page": "StockReportPage",
|
||
"file": "pages/StockReportPage.tsx",
|
||
"priority": "P3",
|
||
"title": "Остатки пусты",
|
||
"listUrl": "/api/reports/stock",
|
||
"elements": [
|
||
{
|
||
"key": "filter:period",
|
||
"label": "фильтр: период/дата",
|
||
"type": "filter",
|
||
"covered": false,
|
||
"how": "период не изменил выдачу"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/admin/import/moysklad",
|
||
"page": "MoySkladImportPage",
|
||
"file": "pages/MoySkladImportPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Импорт из МойСклад",
|
||
"listUrl": "/api/admin/jobs/",
|
||
"elements": [
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/audit-log",
|
||
"page": "OrgAuditLogPage",
|
||
"file": "pages/OrgAuditLogPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Журнал изменений",
|
||
"listUrl": "/api/organization/employees",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": false,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": false,
|
||
"how": "список пуст — пагинации нет"
|
||
},
|
||
{
|
||
"key": "filter:sel1",
|
||
"label": "фильтр: фильтр 1",
|
||
"type": "filter",
|
||
"covered": false,
|
||
"how": "смена фильтра→новый запрос списка"
|
||
},
|
||
{
|
||
"key": "filter:sel2",
|
||
"label": "фильтр: фильтр 2",
|
||
"type": "filter",
|
||
"covered": false,
|
||
"how": "смена фильтра→новый запрос списка"
|
||
},
|
||
{
|
||
"key": "filter:все",
|
||
"label": "фильтр: Все",
|
||
"type": "filter",
|
||
"covered": false,
|
||
"how": "смена фильтра→новый запрос списка"
|
||
},
|
||
{
|
||
"key": "filter:period",
|
||
"label": "фильтр: период/дата",
|
||
"type": "filter",
|
||
"covered": false,
|
||
"how": "период не изменил выдачу"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/catalog/price-types",
|
||
"page": "PriceTypesPage",
|
||
"file": "pages/PriceTypesPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Типы цен",
|
||
"listUrl": "/api/catalog/price-types",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": false,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": false,
|
||
"how": "список пуст — пагинации нет"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «Название»"
|
||
},
|
||
{
|
||
"key": "sort:isRequired",
|
||
"label": "сортировка: Обязательно",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «Обязательно»"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "сохранение не удалось"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/catalog/product-groups",
|
||
"page": "ProductGroupsPage",
|
||
"file": "pages/ProductGroupsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Группы товаров",
|
||
"listUrl": "/api/catalog/product-groups",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Название»→sort=name"
|
||
},
|
||
{
|
||
"key": "sort:path",
|
||
"label": "сортировка: Путь",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Путь»→sort=path"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": true,
|
||
"how": "создание→POST 2xx"
|
||
}
|
||
],
|
||
"pct": 83,
|
||
"done": 5
|
||
},
|
||
{
|
||
"route": "/catalog/retail-points",
|
||
"page": "RetailPointsPage",
|
||
"file": "pages/RetailPointsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Кассы",
|
||
"listUrl": "/api/catalog/retail-points",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Название»→sort=name"
|
||
},
|
||
{
|
||
"key": "sort:code",
|
||
"label": "сортировка: Код",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Код»→sort=code"
|
||
},
|
||
{
|
||
"key": "sort:store",
|
||
"label": "сортировка: Склад",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Склад»→sort=store"
|
||
},
|
||
{
|
||
"key": "sort:address",
|
||
"label": "сортировка: Адрес",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Адрес»→sort=address"
|
||
},
|
||
{
|
||
"key": "sort:isActive",
|
||
"label": "сортировка: Активна",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Активна»→sort=isActive"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": true,
|
||
"how": "создание→POST 2xx"
|
||
}
|
||
],
|
||
"pct": 89,
|
||
"done": 8
|
||
},
|
||
{
|
||
"route": "/catalog/stores",
|
||
"page": "StoresPage",
|
||
"file": "pages/StoresPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Склады",
|
||
"listUrl": "/api/catalog/stores",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Название»→sort=name"
|
||
},
|
||
{
|
||
"key": "sort:code",
|
||
"label": "сортировка: Код",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Код»→sort=code"
|
||
},
|
||
{
|
||
"key": "sort:address",
|
||
"label": "сортировка: Адрес",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Адрес»→sort=address"
|
||
},
|
||
{
|
||
"key": "sort:isMain",
|
||
"label": "сортировка: Основной",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Основной»→sort=isMain"
|
||
},
|
||
{
|
||
"key": "sort:isActive",
|
||
"label": "сортировка: Активен",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Активен»→sort=isActive"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": true,
|
||
"how": "создание→POST 2xx"
|
||
}
|
||
],
|
||
"pct": 89,
|
||
"done": 8
|
||
},
|
||
{
|
||
"route": "/catalog/units",
|
||
"page": "UnitsOfMeasurePage",
|
||
"file": "pages/UnitsOfMeasurePage.tsx",
|
||
"priority": "P4",
|
||
"title": "Единицы измерения",
|
||
"listUrl": "/api/catalog/units-of-measure",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort",
|
||
"covered": true,
|
||
"how": "клик «Название»→sort=name"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
}
|
||
],
|
||
"pct": 75,
|
||
"done": 3
|
||
},
|
||
{
|
||
"route": "/inventory/mobile",
|
||
"page": "InventoryMobilePage",
|
||
"file": "pages/InventoryMobilePage.tsx",
|
||
"priority": "P4",
|
||
"title": "Инвентаризация с телефона",
|
||
"listUrl": "/api/catalog/stores",
|
||
"elements": [
|
||
{
|
||
"key": "action:post",
|
||
"label": "действие: провести",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не найден здесь"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/inventory/transfers",
|
||
"page": "TransfersPage",
|
||
"file": "pages/TransfersPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Перемещения",
|
||
"listUrl": "/api/inventory/transfers",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": false,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": false,
|
||
"how": "список пуст — пагинации нет"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «№»"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «Дата»"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «Статус»"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «Сумма»"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не открылось"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/loyalty/cards",
|
||
"page": "LoyaltyCardsPage",
|
||
"file": "pages/LoyaltyCardsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Карты лояльности",
|
||
"listUrl": "/api/loyalty/cards",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": false,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": false,
|
||
"how": "список пуст — пагинации нет"
|
||
},
|
||
{
|
||
"key": "sort:cardNumber",
|
||
"label": "сортировка: Номер",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «Номер»"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/loyalty/programs",
|
||
"page": "LoyaltyProgramsPage",
|
||
"file": "pages/LoyaltyProgramsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Программы лояльности",
|
||
"listUrl": "/api/loyalty/programs",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": false,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": false,
|
||
"how": "список пуст — пагинации нет"
|
||
},
|
||
{
|
||
"key": "sort:name",
|
||
"label": "сортировка: Название",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «Название»"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "сохранение не удалось"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/money/accounts",
|
||
"page": "MoneyAccountsPage",
|
||
"file": "pages/money/MoneyAccountsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Счета и кассы",
|
||
"listUrl": "/api/money/accounts",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": false,
|
||
"how": "список пуст — пагинации нет"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "сохранение не удалось"
|
||
}
|
||
],
|
||
"pct": 25,
|
||
"done": 1
|
||
},
|
||
{
|
||
"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",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": true,
|
||
"how": "создание→POST 2xx"
|
||
}
|
||
],
|
||
"pct": 75,
|
||
"done": 3
|
||
},
|
||
{
|
||
"route": "/promotions",
|
||
"page": "PromotionsPage",
|
||
"file": "pages/PromotionsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Акции и промокоды",
|
||
"listUrl": "/api/promotions",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": false,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": false,
|
||
"how": "список пуст — пагинации нет"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "сохранение не удалось"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/sales/demands",
|
||
"page": "DemandsPage",
|
||
"file": "pages/DemandsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Оптовые отгрузки",
|
||
"listUrl": "/api/sales/demands",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": false,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": false,
|
||
"how": "список пуст — пагинации нет"
|
||
},
|
||
{
|
||
"key": "sort:number",
|
||
"label": "сортировка: №",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «№»"
|
||
},
|
||
{
|
||
"key": "sort:date",
|
||
"label": "сортировка: Дата",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «Дата»"
|
||
},
|
||
{
|
||
"key": "sort:status",
|
||
"label": "сортировка: Статус",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «Статус»"
|
||
},
|
||
{
|
||
"key": "sort:customer",
|
||
"label": "сортировка: Контрагент",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «Контрагент»"
|
||
},
|
||
{
|
||
"key": "sort:total",
|
||
"label": "сортировка: Сумма",
|
||
"type": "sort",
|
||
"covered": false,
|
||
"how": "нет заголовка «Сумма»"
|
||
},
|
||
{
|
||
"key": "action:create",
|
||
"label": "действие: создать",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не открылось"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
},
|
||
{
|
||
"route": "/settings/employee-roles",
|
||
"page": "EmployeeRolesPage",
|
||
"file": "pages/EmployeeRolesPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Роли сотрудников",
|
||
"listUrl": "/api/organization/employee-roles",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "сохранение не удалось"
|
||
}
|
||
],
|
||
"pct": 50,
|
||
"done": 2
|
||
},
|
||
{
|
||
"route": "/settings/employees",
|
||
"page": "EmployeesPage",
|
||
"file": "pages/EmployeesPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Сотрудники",
|
||
"listUrl": "/api/organization/employees",
|
||
"elements": [
|
||
{
|
||
"key": "search",
|
||
"label": "поиск",
|
||
"type": "search",
|
||
"covered": true,
|
||
"how": "поиск→search="
|
||
},
|
||
{
|
||
"key": "pagination",
|
||
"label": "пагинация",
|
||
"type": "pagination",
|
||
"covered": true,
|
||
"how": "пагинация отрисована"
|
||
},
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
},
|
||
{
|
||
"key": "action:save",
|
||
"label": "действие: сохранить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "сохранение не удалось"
|
||
}
|
||
],
|
||
"pct": 50,
|
||
"done": 2
|
||
},
|
||
{
|
||
"route": "/settings/organization",
|
||
"page": "OrganizationSettingsPage",
|
||
"file": "pages/OrganizationSettingsPage.tsx",
|
||
"priority": "P4",
|
||
"title": "Настройки организации",
|
||
"listUrl": "/api/organization/telegram/status",
|
||
"elements": [
|
||
{
|
||
"key": "action:delete",
|
||
"label": "действие: удалить",
|
||
"type": "action",
|
||
"covered": false,
|
||
"how": "не удалось удалить"
|
||
}
|
||
],
|
||
"pct": 0,
|
||
"done": 0
|
||
}
|
||
]
|
||
} |