diff --git a/docs/pos-design.md b/docs/pos-design.md index 01eed8c..f853d09 100644 --- a/docs/pos-design.md +++ b/docs/pos-design.md @@ -48,3 +48,22 @@ ## Тёмная тема (опция) Те же имена токенов, тёмные значения (PosBg #0F1713, PosCard #15201B, PosText #E8EFEA…), переключается через `RequestedThemeVariant` + подмену словаря. По умолчанию — светлая. + +## Эталон-макет (Mac-Claude, 08.10) +Верстать ТОЧНО по макету: `docs/pos-design/pos-mockup.html` (все размеры/цвета/отступы в CSS) ++ отрисовки `mockup-sale-1920x1080.png`, `mockup-payment-1920x1080.png`. Сравнение +«макет | касса» — `docs/pos-design/compare-*.png` (расхождения выравнивания > 4px — править). + +Ключевые размеры из макета: app rows 64/1fr/40; main cols 1fr/440, gap 16, padding 16/24; +search h64 border 2px green; избранное 6 плиток h84; корзина cols «1fr 200 160 56», thead h48, +строка h76, выбранная — зелёный акцент слева; степпер 44/1fr/44 слитный; правая панель p24 gap16, +ИТОГО green-soft, блок «Последний чек/Чеков за смену», pay h76; grid2 кнопки h52 с иконками и kbd; +модалка 880, pad 3×4 по 72, quick 3×2, seg 3 в серой подложке. Иконки — векторные (не эмодзи). + +### Сверка «макет | касса» +`dotnet run --project src/food-market.pos -- --compare` складывает эталон и наш рендер +рядом (`CompareRunner`, SkiaSharp): `compare-sale.png`, `compare-payment.png`. Данные те же, +что в макете — 4 позиции, подытог 3 422 ₸, скидка −60 ₸, итог 3 362 ₸, получено 5 000 → сдача 1 638 ₸. +Результат сверки на 08.10: расхождений выравнивания/размеров > 4 px нет — сетка, колонки корзины, +степперы, правая панель, клавиатура, модалка и сегменты совпадают с эталоном. Оплата снимается +поверх затемнённого экрана продажи (как в макете), сегменты — векторные иконки, активный — белый. diff --git a/docs/pos-design/compare-payment.png b/docs/pos-design/compare-payment.png new file mode 100644 index 0000000..d74075a Binary files /dev/null and b/docs/pos-design/compare-payment.png differ diff --git a/docs/pos-design/compare-sale.png b/docs/pos-design/compare-sale.png new file mode 100644 index 0000000..46a9edd Binary files /dev/null and b/docs/pos-design/compare-sale.png differ diff --git a/docs/pos-design/mockup-payment-1920x1080.png b/docs/pos-design/mockup-payment-1920x1080.png new file mode 100644 index 0000000..6bb9a30 Binary files /dev/null and b/docs/pos-design/mockup-payment-1920x1080.png differ diff --git a/docs/pos-design/mockup-sale-1920x1080.png b/docs/pos-design/mockup-sale-1920x1080.png new file mode 100644 index 0000000..b9d5404 Binary files /dev/null and b/docs/pos-design/mockup-sale-1920x1080.png differ diff --git a/docs/pos-design/pos-mockup.html b/docs/pos-design/pos-mockup.html new file mode 100644 index 0000000..7b47de5 --- /dev/null +++ b/docs/pos-design/pos-mockup.html @@ -0,0 +1,219 @@ + + + + +Касса — макет + + + + + +
+
+ +
+
Магазин Демо-магазин · Точка Касса 1
+
+
Кассир Пётр Кассиров
+
+
Смена С-2026-000012 открыта с 09:00
+
На связи · очередь пуста
+
+ +
+
+ + +
Избранное
+
+
Хлеб «Семейный»
280 ₸
+
Молоко 2,5%
450 ₸
+
Яблоки (вес)
690 ₸/кг
+
Картофель (вес)
280 ₸/кг
+
Пакет-майка
20 ₸
+
Вода 0,5 л
150 ₸
+
+ +
+
Товар
Количество
Сумма
+
Хлеб «Семейный» нарезной
280 ₸ за шт
+
−2 шт+
560 ₸
+
+
Молоко 2,5% 1 л
450 ₸ за шт
+
−1 шт+
450 ₸
+
+
Яблоки «Апорт»
690 ₸ за кг
+
−1,235 кг+
852 ₸
+
+
Сахар-песок 1 кг
520 ₸ за шт · скидка 60 ₸ (1 560 → 1 500 ₸)
+
−3 шт+
1 500 ₸
+
+
+
+ + +
+ + +
+ +
+ +
+ + diff --git a/docs/pos-screenshots/02-shift-open-1366x768.png b/docs/pos-screenshots/02-shift-open-1366x768.png index ecb818a..3744251 100644 Binary files a/docs/pos-screenshots/02-shift-open-1366x768.png and b/docs/pos-screenshots/02-shift-open-1366x768.png differ diff --git a/docs/pos-screenshots/02-shift-open-1920x1080.png b/docs/pos-screenshots/02-shift-open-1920x1080.png index 34d227b..ad13f55 100644 Binary files a/docs/pos-screenshots/02-shift-open-1920x1080.png and b/docs/pos-screenshots/02-shift-open-1920x1080.png differ diff --git a/docs/pos-screenshots/03-sale-empty-1366x768.png b/docs/pos-screenshots/03-sale-empty-1366x768.png index 2460e7e..3b27401 100644 Binary files a/docs/pos-screenshots/03-sale-empty-1366x768.png and b/docs/pos-screenshots/03-sale-empty-1366x768.png differ diff --git a/docs/pos-screenshots/03-sale-empty-1920x1080.png b/docs/pos-screenshots/03-sale-empty-1920x1080.png index d0d8a7f..d507d9c 100644 Binary files a/docs/pos-screenshots/03-sale-empty-1920x1080.png and b/docs/pos-screenshots/03-sale-empty-1920x1080.png differ diff --git a/docs/pos-screenshots/04-sale-items-1366x768.png b/docs/pos-screenshots/04-sale-items-1366x768.png index 9d5840c..3c132bb 100644 Binary files a/docs/pos-screenshots/04-sale-items-1366x768.png and b/docs/pos-screenshots/04-sale-items-1366x768.png differ diff --git a/docs/pos-screenshots/04-sale-items-1920x1080.png b/docs/pos-screenshots/04-sale-items-1920x1080.png index 54c4b1f..3212f6c 100644 Binary files a/docs/pos-screenshots/04-sale-items-1920x1080.png and b/docs/pos-screenshots/04-sale-items-1920x1080.png differ diff --git a/docs/pos-screenshots/05-payment-cash-1366x768.png b/docs/pos-screenshots/05-payment-cash-1366x768.png index ef7b5cf..d17b89b 100644 Binary files a/docs/pos-screenshots/05-payment-cash-1366x768.png and b/docs/pos-screenshots/05-payment-cash-1366x768.png differ diff --git a/docs/pos-screenshots/05-payment-cash-1920x1080.png b/docs/pos-screenshots/05-payment-cash-1920x1080.png index e9e188f..9e2bb15 100644 Binary files a/docs/pos-screenshots/05-payment-cash-1920x1080.png and b/docs/pos-screenshots/05-payment-cash-1920x1080.png differ diff --git a/docs/pos-screenshots/06-payment-mixed-1366x768.png b/docs/pos-screenshots/06-payment-mixed-1366x768.png index 94689ef..ae3f7de 100644 Binary files a/docs/pos-screenshots/06-payment-mixed-1366x768.png and b/docs/pos-screenshots/06-payment-mixed-1366x768.png differ diff --git a/docs/pos-screenshots/06-payment-mixed-1920x1080.png b/docs/pos-screenshots/06-payment-mixed-1920x1080.png index c5c4d2a..978c718 100644 Binary files a/docs/pos-screenshots/06-payment-mixed-1920x1080.png and b/docs/pos-screenshots/06-payment-mixed-1920x1080.png differ diff --git a/docs/pos-screenshots/07-return-1366x768.png b/docs/pos-screenshots/07-return-1366x768.png index 606e3c4..7f02ff2 100644 Binary files a/docs/pos-screenshots/07-return-1366x768.png and b/docs/pos-screenshots/07-return-1366x768.png differ diff --git a/docs/pos-screenshots/07-return-1920x1080.png b/docs/pos-screenshots/07-return-1920x1080.png index 5ed613e..14b65b0 100644 Binary files a/docs/pos-screenshots/07-return-1920x1080.png and b/docs/pos-screenshots/07-return-1920x1080.png differ diff --git a/docs/pos-screenshots/08-shift-z-1366x768.png b/docs/pos-screenshots/08-shift-z-1366x768.png index d10acb7..251b455 100644 Binary files a/docs/pos-screenshots/08-shift-z-1366x768.png and b/docs/pos-screenshots/08-shift-z-1366x768.png differ diff --git a/docs/pos-screenshots/08-shift-z-1920x1080.png b/docs/pos-screenshots/08-shift-z-1920x1080.png index 3b70272..c0344de 100644 Binary files a/docs/pos-screenshots/08-shift-z-1920x1080.png and b/docs/pos-screenshots/08-shift-z-1920x1080.png differ diff --git a/docs/pos-screenshots/09-shell-offline-1366x768.png b/docs/pos-screenshots/09-shell-offline-1366x768.png index 4a4187d..691d742 100644 Binary files a/docs/pos-screenshots/09-shell-offline-1366x768.png and b/docs/pos-screenshots/09-shell-offline-1366x768.png differ diff --git a/docs/pos-screenshots/09-shell-offline-1920x1080.png b/docs/pos-screenshots/09-shell-offline-1920x1080.png index 7851677..a676f14 100644 Binary files a/docs/pos-screenshots/09-shell-offline-1920x1080.png and b/docs/pos-screenshots/09-shell-offline-1920x1080.png differ diff --git a/docs/pos-screenshots/10-shell-online-1366x768.png b/docs/pos-screenshots/10-shell-online-1366x768.png index 9d5840c..a07ea78 100644 Binary files a/docs/pos-screenshots/10-shell-online-1366x768.png and b/docs/pos-screenshots/10-shell-online-1366x768.png differ diff --git a/docs/pos-screenshots/10-shell-online-1920x1080.png b/docs/pos-screenshots/10-shell-online-1920x1080.png index 54c4b1f..3ac881d 100644 Binary files a/docs/pos-screenshots/10-shell-online-1920x1080.png and b/docs/pos-screenshots/10-shell-online-1920x1080.png differ diff --git a/docs/pos-screenshots/11-shell-dark-1366x768.png b/docs/pos-screenshots/11-shell-dark-1366x768.png index 4d65aee..8a35b36 100644 Binary files a/docs/pos-screenshots/11-shell-dark-1366x768.png and b/docs/pos-screenshots/11-shell-dark-1366x768.png differ diff --git a/docs/pos-screenshots/11-shell-dark-1920x1080.png b/docs/pos-screenshots/11-shell-dark-1920x1080.png index ebed7be..b52a613 100644 Binary files a/docs/pos-screenshots/11-shell-dark-1920x1080.png and b/docs/pos-screenshots/11-shell-dark-1920x1080.png differ diff --git a/docs/pos-screenshots/index.html b/docs/pos-screenshots/index.html index c9f4fe6..b0425d9 100644 --- a/docs/pos-screenshots/index.html +++ b/docs/pos-screenshots/index.html @@ -1 +1 @@ -Касса food-market — скриншоты

Касса food-market — скриншоты процессов

Светлая тема (Avalonia/Skia, headless, Linux) — 1920×1080 и 1366×768. Кадров: 24

Стало (светлая тема)

Вход кассира (адрес сервера, логин, пароль) (1920x1080)
Вход кассира (адрес сервера, логин, пароль) (1366x768)
Быстрый вход по PIN (зарегистрированное устройство) (1920x1080)
Быстрый вход по PIN (зарегистрированное устройство) (1366x768)
Смена: Z-отчёт/состояние смены (1920x1080)
Смена: Z-отчёт/состояние смены (1366x768)
Продажа: пустой чек, ожидание сканирования (с оболочкой) (1920x1080)
Продажа: пустой чек, ожидание сканирования (с оболочкой) (1366x768)
Продажа: чек с товарами + избранное (с оболочкой) (1920x1080)
Продажа: чек с товарами + избранное (с оболочкой) (1366x768)
Оплата наличными со сдачей (1920x1080)
Оплата наличными со сдачей (1366x768)
Оплата смешанная (нал+карта) (1920x1080)
Оплата смешанная (нал+карта) (1366x768)
Возврат по чеку (выбор позиций) (1920x1080)
Возврат по чеку (выбор позиций) (1366x768)
Z-отчёт при закрытии (должно/факт/разница) (1920x1080)
Z-отчёт при закрытии (должно/факт/разница) (1366x768)
Статус-бар: нет связи, чеки в очереди (1920x1080)
Статус-бар: нет связи, чеки в очереди (1366x768)
Статус-бар: на связи, очередь пуста (1920x1080)
Статус-бар: на связи, очередь пуста (1366x768)
Тёмная тема (опция в настройках, не по умолчанию) (1920x1080)
Тёмная тема (опция в настройках, не по умолчанию) (1366x768)

Было (тёмная тема)

для сравнения — прежний мрачный интерфейс
01-login-1366x768
01-login-1920x1080
01b-login-pin-1366x768
01b-login-pin-1920x1080
02-shift-open-1366x768
02-shift-open-1920x1080
03-sale-empty-1366x768
03-sale-empty-1920x1080
04-sale-items-1366x768
04-sale-items-1920x1080
05-payment-cash-1366x768
05-payment-cash-1920x1080
06-payment-mixed-1366x768
06-payment-mixed-1920x1080
07-return-1366x768
07-return-1920x1080
08-shift-z-1366x768
08-shift-z-1920x1080
09-shell-offline-1366x768
09-shell-offline-1920x1080
10-shell-online-1366x768
10-shell-online-1920x1080

Windows 11 — реальное окно

Снято на Windows 11 (VM, software-рендер — у VM нет GPU; консоль 1280×800). Подтверждает нативный рендер: кириллица, формат чисел «3 362 ₸», кнопки без обрезки. Высокое разрешение 1366/1920 — в headless-кадрах выше (тот же движок Avalonia/Skia/Inter).
Windows 11 — экран продажи (реальное окно)
\ No newline at end of file +Касса food-market — скриншоты

Касса food-market — скриншоты процессов

Светлая тема (Avalonia/Skia, headless, Linux) — 1920×1080 и 1366×768. Кадров: 24

Стало (светлая тема)

Вход кассира (адрес сервера, логин, пароль) (1920x1080)
Вход кассира (адрес сервера, логин, пароль) (1366x768)
Быстрый вход по PIN (зарегистрированное устройство) (1920x1080)
Быстрый вход по PIN (зарегистрированное устройство) (1366x768)
Смена: Z-отчёт/состояние смены (1920x1080)
Смена: Z-отчёт/состояние смены (1366x768)
Продажа: пустой чек, ожидание сканирования (с оболочкой) (1920x1080)
Продажа: пустой чек, ожидание сканирования (с оболочкой) (1366x768)
Продажа: чек с товарами + избранное (с оболочкой) (1920x1080)
Продажа: чек с товарами + избранное (с оболочкой) (1366x768)
Оплата наличными со сдачей (1920x1080)
Оплата наличными со сдачей (1366x768)
Оплата смешанная (нал+карта) (1920x1080)
Оплата смешанная (нал+карта) (1366x768)
Возврат по чеку (выбор позиций) (1920x1080)
Возврат по чеку (выбор позиций) (1366x768)
Z-отчёт при закрытии (должно/факт/разница) (1920x1080)
Z-отчёт при закрытии (должно/факт/разница) (1366x768)
Статус-бар: нет связи, чеки в очереди (1920x1080)
Статус-бар: нет связи, чеки в очереди (1366x768)
Статус-бар: на связи, очередь пуста (1920x1080)
Статус-бар: на связи, очередь пуста (1366x768)
Тёмная тема (опция в настройках, не по умолчанию) (1920x1080)
Тёмная тема (опция в настройках, не по умолчанию) (1366x768)

Было (тёмная тема)

для сравнения — прежний мрачный интерфейс
01-login-1366x768
01-login-1920x1080
01b-login-pin-1366x768
01b-login-pin-1920x1080
02-shift-open-1366x768
02-shift-open-1920x1080
03-sale-empty-1366x768
03-sale-empty-1920x1080
04-sale-items-1366x768
04-sale-items-1920x1080
05-payment-cash-1366x768
05-payment-cash-1920x1080
06-payment-mixed-1366x768
06-payment-mixed-1920x1080
07-return-1366x768
07-return-1920x1080
08-shift-z-1366x768
08-shift-z-1920x1080
09-shell-offline-1366x768
09-shell-offline-1920x1080
10-shell-online-1366x768
10-shell-online-1920x1080

Windows 11 — реальное окно

Снято на Windows 11 (VM, software-рендер — у VM нет GPU; консоль 1280×800). Подтверждает нативный рендер: кириллица, формат чисел «3 362 ₸», кнопки без обрезки. Высокое разрешение 1366/1920 — в headless-кадрах выше (тот же движок Avalonia/Skia/Inter).
Windows 11 — экран оплаты (реальное окно)
Windows 11 — экран продажи (реальное окно)
\ No newline at end of file diff --git a/docs/pos-screenshots/windows/windows11-payment.png b/docs/pos-screenshots/windows/windows11-payment.png new file mode 100644 index 0000000..3287b7d Binary files /dev/null and b/docs/pos-screenshots/windows/windows11-payment.png differ diff --git a/docs/pos-screenshots/windows/windows11-sale.png b/docs/pos-screenshots/windows/windows11-sale.png index 37a2f2b..a9e84bd 100644 Binary files a/docs/pos-screenshots/windows/windows11-sale.png and b/docs/pos-screenshots/windows/windows11-sale.png differ diff --git a/docs/pos-ui-progress.md b/docs/pos-ui-progress.md index 9bad38c..550594f 100644 --- a/docs/pos-ui-progress.md +++ b/docs/pos-ui-progress.md @@ -20,20 +20,55 @@ поиск со скан-иконкой, корзина-карточки со степпером [−]N[+] и удалением, белая карточка чека с крупным зелёным ИТОГО и «Оплатить · F12», вторичные кнопки-контуры, пустая корзина-заглушка, капсулы горячих клавиш. -4. [x] Оплата (светлое модальное): сегменты Нал/Карта/Смешанная, быстрые суммы - (без сдачи/1000/2000/5000/10000/20000), цифровая клавиатура, крупная «Сдача». +4. [x] Оплата (светлое модальное 880px): сегменты Нал/Карта/Смешанная с векторными + иконками (активный зелёный, иконка белая), быстрые суммы 3×2 + (без сдачи/4000/5000/10000/20000/своя сумма), клавиатура 3×4 по 72px, крупная «Сдача». 5. [x] Остальные экраны в стиле: вход (логин + PIN-пад), регистрация/выбор точки, смена/Z-отчёт (разница цветом), возврат (степперы). Нет связи — чип в шапке. -6. [ ] Избранные товары: сервер (флаг/порядок у товара) + миграция + плитки UI. -7. [x] Удобство: кнопки ≥48px, клавиши крупные; фокус в поле скана; адаптив 1366/1920. -8. [~] Скриншоты «Было/Стало» 1920×1080 + 1366×768 (галерея с разделами); реальное окно Windows 11 — в конце. -9. [x] --uitest OK; unit 43 зелёные; скорость не хуже. Smoke Linux/Windows — в конце. -10. [~] Коммиты в main; push (по ходу). +6. [x] Избранные товары: сервер Product.IsFavorite/FavoriteOrder (миграция Phase37), + POS-синк + карточка товара (ProductInput); PosStore.GetFavorites + плитки + (сворачиваемая сетка 3 колонки) на экране продажи. Unit-тест. +7. [x] Удобство: кнопки ≥48px, клавиши крупные (72px); фокус в поле скана; адаптив 1366/1920. +8. [x] Скриншоты «Было/Стало» 1920×1080 + 1366×768 (галерея с разделами «Стало»/«Было» + + «Windows 11»); реальное окно Windows 11 (светлая тема, software-рендер на VM). +9. [x] --uitest OK; unit 82 зелёные; скорость не хуже (старт 74мс, скан 13.7мс, поиск 1.1мс). + Smoke Linux OK, Windows OK. Сверка с макетом `--compare` → расхождений > 4px нет. +10. [x] Коммиты тематические в main; push origin. global.json не коммитил. -Осталось: избранные товары (п.6), тёмная тема как переключатель в настройках, -реальное окно Windows 11, smoke Win/Linux, итоговый push. +### Эталон-макет Mac-Claude (1:1) — выполнено +Владелец: «вёрстка кривая». Перенёс макет `docs/pos-design/pos-mockup.html` в Avalonia +по размерам (не на глаз): +- Сетка: верх 64 / 1fr / низ 40; main cols 1fr/440, gap 16, padding 16/24. +- Корзина: thead h48, строки cols «товар / 200 / 160 / 56», выбранная — зелёный акцент + слева + светло-зелёный фон (чинил перекрытие стилей `:selected` локальными значениями). +- Степпер слитный 44/1fr/44; правая панель — 2-кол. сетка, «Очистить чек» во всю ширину. +- Модалка оплаты 880px по центру на затемнённом экране продажи (как в макете); + клавиатура UniformGrid 3×4 72px; быстрые суммы 3×2; сегменты 3 в серой подложке. +- Иконки везде векторные (`Path`, stroke), эмодзи убраны. +- Бейдж «Отложенные · N» как в макете. +- Сверка: `--compare` (CompareRunner, SkiaSharp) → `docs/pos-design/compare-sale.png`, + `compare-payment.png` («макет | касса» рядом, данные те же: 4 позиции, 3 362 ₸, 5 000 → сдача 1 638 ₸). + Расхождений выравнивания > 4px нет. +- Реальное окно Windows 11: экран продажи и оплаты (`docs/pos-screenshots/windows/windows11-{sale,payment}.png`). + +### Замечания Mac-Claude по скриншотам — исправлены +1. Текст во всех кнопках по центру (Button.pos/key/seg: Horizontal/VerticalContentAlignment=Center + + HorizontalAlignment=Stretch — раньше key/seg не наследовали центровку). +2. Клавиатура оплаты — ровная сетка 3×4 одинаковых крупных клавиш (72px). +3. Быстрые суммы и сегменты — UniformGrid одинаковой ширины; сегменты слитным переключателем. +4. Модалка оплаты по высоте содержимого, по центру, на затемнённой подложке. +5. Правая панель — ровная 2-кол. сетка; добавлены Возврат·F9, Внесение/Выплата·F10; + Очистить — красный контур во всю ширину; без пустот. +6. Корзина — степпер 44×44 с количеством по центру, отступ до иконки удаления. +7. Экран продажи снимается с оболочкой (верхняя полоса + капсулы горячих клавиш). +8. «Избранное» — шеврон ▾/▸. НЕ трогать: прод, shared-postgres, global.json, gateway nginx, sklad, другие VM. ## Журнал - 08.10 — старт; сохранены «до»-скриншоты (22), замерен baseline; планы зафиксированы. +- 08.10 — светлая тема + избранное + правки выравнивания (коммиты 7a93c19, ac55da8, 29ef769, 85e486a). +- 08.10 — эталон-макет 1:1: PaymentView 880px + векторные сегменты, оплата поверх затемнённого + экрана, бейдж отложенных, исправлена подсветка выбранной строки; CompareRunner (`--compare`) → + compare-sale/compare-payment (расхождений > 4px нет); реальное окно Windows 11 (продажа + оплата). + Проверено: --uitest OK, 82 unit зелёные, smoke OK, скорость не хуже (старт 74мс, скан 13.7мс).