Эпик 16: корзина+заказ-агрегат (backend+API) + восстановленный фронт-WIP выдачи/склада #58
Reference in New Issue
Block a user
Delete Branch "feat/E16-korzina-zakaz-agregat"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
PR несёт ДВЕ части — смотреть/тестировать вместе по просьбе (чтобы не плодить PR).
Часть 1 — Эпик 16 (задача 598-33): корзина + заказ-агрегат, backend + клиентский API
Коммиты 16e304…→c00f192. База — marketplace2 (после merge Эпика 15 #53).
Часть 2 — ВОССТАНОВЛЕННЫЙ ФРОНТ-WIP (это НЕ Эпик 16!) — коммит
7a92f1aНезакоммиченные фронт-правки из прошлых сессий, найденные в рабочем дереве mono-ai-4 и забытые без коммита/PR. Относятся к Эпикам 6/9 (выдача/склад), не к корзине. Внесены сюда для совместного ревью. ВНИМАНИЕ: это WIP — сборку фронта (vue-tsc) не гонял, может быть незакончено; на тест как есть.
Что и куда относится:
Бэкап WIP (на всякий): ветка origin/wip/pre-e16-desktop-docs + патч на диске билд-машины.
Осталось вне PR
Desktop-фаза Эпика 16 (страница корзины, КУ в шапке, оформление, группировка MyOrders/выдачи по checkout_id) + доки PRD/UX.
Эпик 16: Корзина и заказ-агрегат — backend + клиентский APIto Эпик 16: корзина+заказ-агрегат (backend+API) + восстановленный фронт-WIP выдачи/складаЧасть 3 — desktop-фаза Эпика 16 (КУ-first), коммиты 79c7525→6dfd826
Реализована вся функциональная desktop-фаза по полевой модели 2026-06-02 «сначала КУ → отфильтрованная витрина → корзина → заказ-агрегат».
16.4 — выбор КУ с картой при онбординге + КУ в шапке. На экране «Присоединение к Столу заказов» первый шаг — выбор пункта выдачи (КУ) из списка + карта (виджет
KUSelectorнаKUMapWithList). КУ выбирается ДО подписи оферты (held локально), подпись без выбранного КУ заблокирована; persist черезsetCartDeliveryPointсразу после синка подписи (до неё нет orderer-прав на Cart). КУ виден/меняется в шапке стола (KUHeaderBar: текущий пункт + «Сменить» → диалог список+карта; смена видна только если активных КУ >1).OnboardingCPPGateпереписан на канон (BaseCard/BaseButton/BaseCheckbox/BaseChip, Material-иконки,--p-*).16.3 — КУ-scoped каталог. Витрина фильтруется по текущему КУ (
delivery_braname). Пока КУ не выбран — каталог скрыт, показывается стартовый выбор КУ. Смена КУ в шапке перегружает витрину.16.1 — корзина. Новая entity
MarketplaceCart(api + Pinia-стор; «текущий КУ» =cart.delivery_braname). В каталоге/детали оффера действие — «В корзину» (AddToCartDialog, только количество — КУ глобальный); per-order выбор КУ удалён (OrderCreateDialog→AddToCartDialog). Страница корзины/market/cart(пункт меню «Корзина») + индикатор корзины с числом позиций в шапке каталога.16.2 — оформление. «Оформить заказ» →
marketplaceCheckoutCart; показ числа созданных заказов + непрошедшего остатка (failed_lines с причинами) + «Повторить оформление остатка» тем же checkout_id.16.6 — MyOrders по заказу-агрегату. Многопозиционные заказы (общий checkout_id) — одной группой с шапкой (дата/пункт/позиции/сумма); одиночные/легаси — плоско.
16.7 — OperatorIssuance уже сгруппирован по заказчику со списком единиц (переработка Эпика 6/9) = целевая «единицы по заказам пайщика»; рабочий экран не трогал.
Плюс отдельным коммитом — фикс L1
CouncilOnboardingCard(ровный ритм шагов вместо «гармошки», солидные кнопки навигации).⚠️ Type-check: локальный vue-tsc не гонялся (канон: делегируется CI;
vite-plugin-checkerвыключен, полный vue-tsc при живом quasar dev вешает машину ~час). CItypecheck.yamlтриггерится только на PR вdev— на PR вmarketplace2НЕ запускается; vue-tsc этого кода пройдёт на гейтеmarketplace2 → dev. Все правки выверены по реальным API компонентов, ESLint зелёный по всем затронутым файлам.⚠️ Известный мелкий GAP: счётчики категорий каталога (
CategoryOfferCounts) пока не фильтруются по КУ — число во вкладке может превышать показанное под КУ (фикс — отдельным backend-изменением).Часть 3 — desktop-фаза Эпика 16 (КУ-first), коммиты 79c7525→6dfd826
Реализована вся функциональная desktop-фаза по полевой модели 2026-06-02 «сначала КУ → отфильтрованная витрина → корзина → заказ-агрегат».
16.4 — выбор КУ с картой при онбординге + КУ в шапке. На экране «Присоединение к Столу заказов» первый шаг — выбор пункта выдачи (КУ) из списка + карта (виджет
KUSelectorнаKUMapWithList). КУ выбирается ДО подписи оферты (held локально), подпись без выбранного КУ заблокирована; persist черезsetCartDeliveryPointсразу после синка подписи (до неё нет orderer-прав на Cart). КУ виден/меняется в шапке стола (KUHeaderBar: текущий пункт + «Сменить» → диалог список+карта; смена видна только если активных КУ >1).OnboardingCPPGateпереписан на канон (BaseCard/BaseButton/BaseCheckbox/BaseChip, Material-иконки,--p-*).16.3 — КУ-scoped каталог. Витрина фильтруется по текущему КУ (
delivery_braname). Пока КУ не выбран — каталог скрыт, показывается стартовый выбор КУ. Смена КУ в шапке перегружает витрину.16.1 — корзина. Новая entity
MarketplaceCart(api + Pinia-стор; «текущий КУ» =cart.delivery_braname). В каталоге/детали оффера действие — «В корзину» (AddToCartDialog, только количество — КУ глобальный); per-order выбор КУ удалён (OrderCreateDialog→AddToCartDialog). Страница корзины/market/cart(пункт меню «Корзина») + индикатор корзины с числом позиций в шапке каталога.16.2 — оформление. «Оформить заказ» →
marketplaceCheckoutCart; показ числа созданных заказов + непрошедшего остатка (failed_lines с причинами) + «Повторить оформление остатка» тем же checkout_id.16.6 — MyOrders по заказу-агрегату. Многопозиционные заказы (общий checkout_id) — одной группой с шапкой (дата/пункт/позиции/сумма); одиночные/легаси — плоско.
16.7 — OperatorIssuance уже сгруппирован по заказчику со списком единиц (переработка Эпика 6/9) = целевая «единицы по заказам пайщика»; рабочий экран не трогал.
Плюс отдельным коммитом — фикс L1
CouncilOnboardingCard(ровный ритм шагов вместо «гармошки», солидные кнопки навигации).⚠️ Type-check: локальный vue-tsc не гонялся (канон: делегируется CI;
vite-plugin-checkerвыключен, полный vue-tsc при живом quasar dev вешает машину ~час). CItypecheck.yamlтриггерится только на PR вdev— на PR вmarketplace2НЕ запускается; vue-tsc этого кода пройдёт на гейтеmarketplace2 → dev. Все правки выверены по реальным API компонентов, ESLint зелёный по всем затронутым файлам.⚠️ Известный мелкий GAP: счётчики категорий каталога (
CategoryOfferCounts) пока не фильтруются по КУ — число во вкладке может превышать показанное под КУ (фикс — отдельным backend-изменением).