From 3b90b79f9ff16b2e20f8746344b8c74f442ffc0a Mon Sep 17 00:00:00 2001 From: Hermes Date: Mon, 28 Sep 2026 23:17:39 +0200 Subject: [PATCH] =?UTF-8?q?fix(registry):=20=D0=B4=D0=B0=D1=82=D0=B0=20?= =?UTF-8?q?=D0=B8=20=D0=B2=D1=80=D0=B5=D0=BC=D1=8F=20=D1=81=D0=B0=D0=BC?= =?UTF-8?q?=D0=BE=D0=B2=D1=8B=D0=B2=D0=BE=D0=B7=D0=B0=20=D0=B2=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B5=D1=81=D1=82=D1=80=D0=B5=20=D0=B3=D1=80=D1=83=D0=BF?= =?UTF-8?q?=D0=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Владелец: «в таблице всех доставок и самовывоза, если согласована доставка, дата и время указаны, а если самовывоз — нет; нужно и самовывоз выводить». Причина: колонка «Дата» (LogisticsReadinessBoard) читала только delivery_date/ delivery_time, а у самовывоза дата и половина дня лежат в pickup_date/ pickup_time_slot — поэтому строка самовывоза показывала «—», хотя слот согласован. Тот же пропуск был в фильтре по периоду и группировке по датам: getDeliveryDate() смотрела только на delivery_date, и при выбранном периоде заказы самовывоза пропадали из реестра (падали в дату заказа). Введены общие хелперы в orderGroupViews: isPickupGroup, getGroupSlotDate, getGroupSlotTime (камелкеис и snake_case). Реестр показывает дату и время слота по типу заказа, сортировка — по этой же показанной дате, фильтр по периоду и группировка — тоже по ней. Подпись колонки «Доставка» → «Дата» (в колонке теперь и дата выдачи). Попутно поправлено устаревшее ожидание в тесте (getOrderGroupDisplayStatusLabel для черновика ждало «draft», подпись локализована в «Черновик») — тест падал и до этой правки. SW: v121 -> v122. --- public/service-worker.js | 2 +- .../logistics/LogisticsReadinessBoard.jsx | 13 ++-- src/services/orderGroupViews.js | 22 ++++++- src/services/orderGroupViews.test.js | 63 ++++++++++++++++++- 4 files changed, 93 insertions(+), 7 deletions(-) diff --git a/public/service-worker.js b/public/service-worker.js index 2e38ce7..44295bb 100644 --- a/public/service-worker.js +++ b/public/service-worker.js @@ -1,7 +1,7 @@ const isLocalhost = self.location.hostname === "localhost" || self.location.hostname === "127.0.0.1"; if (!isLocalhost) { - const STATIC_CACHE = "construction-delivery-static-v121"; + const STATIC_CACHE = "construction-delivery-static-v122"; const RUNTIME_CACHE = "construction-delivery-runtime-v119"; const APP_SHELL_URLS = ["/", "/client", "/index.html", "/manifest.webmanifest", "/icons/icon-192.png", "/icons/icon-512.png"]; diff --git a/src/components/logistics/LogisticsReadinessBoard.jsx b/src/components/logistics/LogisticsReadinessBoard.jsx index 90733db..019a3b5 100644 --- a/src/components/logistics/LogisticsReadinessBoard.jsx +++ b/src/components/logistics/LogisticsReadinessBoard.jsx @@ -15,6 +15,8 @@ import { import { CSS } from "@dnd-kit/utilities"; import { filterOrderGroups, + getGroupSlotDate, + getGroupSlotTime, getOrderGroupDisplayStatusLabel, getOrderGroupDisplayStatusValue, getOrderGroupStatusTone, @@ -109,7 +111,7 @@ const TABLE_COLUMNS = [ { key: "customer", label: "Клиент" }, { key: "city", label: "Город" }, { key: "deliveryType", label: "Тип" }, - { key: "deliveryDate", label: "Доставка" }, + { key: "deliveryDate", label: "Дата" }, { key: "driver", label: "Водитель" }, { key: "status", label: "Статус" }, { key: "updatedAt", label: "Обновлён" }, @@ -189,6 +191,9 @@ const renderRow = (g, onSelectSet) => { const smsTone = getSmsProblemTone(g); const smsTag = smsTone !== "ok" ? SMS_TAG[smsTone] : null; const notAgreedHighlight = getNotAgreedHighlight(g); + // Дата и время слота: у самовывоза — выдача, у доставки — доставка (владелец: показывать оба типа). + const slotDate = getGroupSlotDate(g); + const slotTime = getGroupSlotTime(g); return (