food-market/src/food-market.api/Infrastructure
nns 0ca0d6cc3b
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
feat(catalog): карточка товара как МойСклад+ — обязательно только наименование
Правки владельца 08.10 (п.4 паритета):
- Сохранить можно при наличии Наименования. Единица не обязательна в запросе →
  дефолт «шт»; группа → корень. Штрихкод ОБЯЗАТЕЛЕН у любого товара: нет в запросе/
  импорте → автогенерация внутреннего EAN-13 (верная контр. цифра, префикс не
  пересекается с весовыми/ценовыми префиксами орг. — InternalBarcode).
- Цена продажи не обязательна для сохранения; но ПРОДАТЬ без неё нельзя — касса и
  розничная продажа дают «У товара «X» нет цены продажи» (можно ввести вручную).
- Быстрое создание из кассы/приёмки: POST /api/catalog/products/quick (имя + опц.
  штрихкод/цена/весовой).
- Снят FluentValidation NotEqual(Guid.Empty) на единицу (контроллер подставляет дефолт).

Тесты: unit InternalBarcode 3/3 (валидный EAN-13, не парсится как весовой, обходит
префиксы); integration 3/3 (создание по одному имени, продажа без цены → 400, quick).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-09 05:45:38 +05:00
..
Audit feat(s13): security headers + rate-limits + sensitive-ops audit + session revoke + Grafana 2026-06-07 12:30:10 +05:00
Authorization fix(auth): кассир без модуля «Деньги», кладовщик со складскими правами, ИЛИ-семантика прав 2026-10-08 02:10:11 +05:00
Cqrs feat(auth): TOTP 2FA для админов через AuthenticatorTokenProvider (P2-4) 2026-05-28 17:57:32 +05:00
Email feat(email): HTML-шаблоны MailKit + invite/weekly/low-stock джобы (P1-22) 2026-05-28 16:37:32 +05:00
Health feat(api): health-пробы /health/live и /health/ready (P0-4) 2026-05-27 02:23:48 +05:00
Invoices feat(invoices+catalog): порт улучшений 06.10.2026 из sklad 2026-10-07 19:50:03 +05:00
Observability feat(s20): Mapster + SSO scaffold + maintenance automation (7 пунктов) 2026-06-07 21:54:12 +05:00
RateLimiting feat(s13): security headers + rate-limits + sensitive-ops audit + session revoke + Grafana 2026-06-07 12:30:10 +05:00
Security feat(s13): security headers + rate-limits + sensitive-ops audit + session revoke + Grafana 2026-06-07 12:30:10 +05:00
Tenancy feat(audit): per-tenant журнал мутаций OrgAuditLog (P1-18) 2026-05-28 16:26:36 +05:00
Validation feat(catalog): карточка товара как МойСклад+ — обязательно только наименование 2026-10-09 05:45:38 +05:00
DocumentNumberRetry.cs feat(s18): TODO cleanup — P0 race fix + helpTooltip + whats-new + contrast + currency + audit filters + notifications 2026-06-07 18:50:35 +05:00
IdentityRoleMapper.cs fix(auth): Cashier/Storekeeper больше не видят /api/organization/employees + Identity-роль маппится из orgRole 2026-05-08 01:03:30 +05:00
QuickLoginOptions.cs feat(s30): sentinel pwd для SPA — реальный мастер-пароль только в server-env 2026-10-04 21:02:36 +05:00
SerializableRetry.cs fix(s23): adversarial bug-hunt — 4 bugs found, all fixed 2026-06-08 01:35:50 +05:00
SerializationConflictMiddleware.cs fix(s23): adversarial bug-hunt — 4 bugs found, all fixed 2026-06-08 01:35:50 +05:00