food-market/src/food-market.api/Controllers
nns 4285bdee91 feat(inventories): инвентаризация с CSV-импортом факта (P1-4)
Domain InventoryDoc+InventoryLine (productId, bookQty, actualQty, diff).
EF, миграция Phase6d_Inventories. Контроллер api/inventory/inventories:
Create без строк автоматически подгружает все товары склада с текущим
Stock в bookQty (actual=0); Update пишет actualQty по строкам, пересчитывая
diff. Post создаёт корректирующие движения InventoryAdjustment на diff
(положительный — приход излишка, отрицательный — списание недостачи).
Unpost атомарно откатывает; проверка «излишек уже расходован» → 409.

Web: /inventory/inventories (list с разделением излишек/недостача) +
edit с импортом CSV (productId|article;actualQty). Сайдбар «Инвентаризации».

Тесты: 3 интеграционных (create-подгрузка bookQty + apply diff;
post 400 если diff=0; tenant-изоляция).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 09:39:32 +05:00
..
Admin fix(other-system/test): сделать Token опциональным 2026-04-24 00:25:24 +05:00
Catalog feat(authz): permission-based авторизация по флагам роли (P0-5) 2026-05-27 02:37:28 +05:00
Inventory feat(inventories): инвентаризация с CSV-импортом факта (P1-4) 2026-05-28 09:39:32 +05:00
Organizations fix(employees): увольнение/деактивация гасит логин связанного User 2026-05-26 11:47:56 +05:00
Purchases feat(enters): оприходование товара без поставщика (P1-1) 2026-05-28 09:18:13 +05:00
Sales test(unit): xUnit-проект food-market.UnitTests, 23 теста (P1-20) 2026-05-27 03:01:56 +05:00
SuperAdmin fix(superadmin): change-owner требует reason ≥ 10 символов 2026-05-26 11:53:32 +05:00
AuthForgotPasswordController.cs feat(auth): forgot/reset password — endpoints + UI + IP rate-limit 2026-05-06 12:45:38 +05:00
AuthorizationController.cs fix(auth): refresh-token rotation немедленно инвалидирует старый токен 2026-05-26 11:03:29 +05:00
AuthSignupController.cs fix(phone): серверная KZ-ФЛК на всех endpoint'ах принимающих phone 2026-05-08 01:05:48 +05:00