food-market/src/food-market.api
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
..
Background feat(api): recalc-retail endpoint + 30-day reference price refresh job 2026-04-25 21:03:44 +05:00
Controllers feat(inventories): инвентаризация с CSV-импортом факта (P1-4) 2026-05-28 09:39:32 +05:00
Infrastructure feat(auth): prod X509-ключи OpenIddict с persistent self-signed (P0-1) 2026-05-27 02:47:00 +05:00
Properties fix: pin API dev port to 5081 (match Vite proxy config) 2026-04-21 15:37:05 +05:00
Seed feat(bootstrap): системная ProductGroup «Все товары» при создании org 2026-05-08 12:08:28 +05:00
appsettings.Development.json Phase 0: project scaffolding and end-to-end auth 2026-04-21 13:59:13 +05:00
appsettings.json revert(domains): публичный сайт → test.food-market.kz, apex 404 до релиза 2026-05-01 18:06:31 +05:00
food-market.api.csproj Phase 0: project scaffolding and end-to-end auth 2026-04-21 13:59:13 +05:00
Program.cs test(integration): Testcontainers.PostgreSql + WebApplicationFactory, 10 тестов (P1-21) 2026-05-27 03:14:01 +05:00