docs(sprint2): чек-лист — 7 документов учёта (P1)
7 пунктов: Enter, Loss, Transfer, Inventory, CustomerReturn, SupplierReturn, Hangfire dashboard. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
9ef9df3ed5
commit
880be11bd8
39
docs/sprint2-progress.md
Normal file
39
docs/sprint2-progress.md
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Спринт 2 — складские документы (P1)
|
||||||
|
|
||||||
|
Автономная работа. После каждого пункта: `dotnet build` (SDK 8.0.126),
|
||||||
|
unit + integration + (где применимо) E2E тесты этого пункта, коммит порцией,
|
||||||
|
отметка `[x]` здесь, коммит прогресса.
|
||||||
|
|
||||||
|
Multi-tenant: все новые сущности — `TenantEntity` с `OrganizationId` +
|
||||||
|
query filter. Stock-инвариант: после каждого Post/Unpost
|
||||||
|
`Stock.Quantity ≡ Σ StockMovement` для (Product, Store).
|
||||||
|
|
||||||
|
## Чек-лист
|
||||||
|
|
||||||
|
1. [ ] **P1-1 Оприходование (Enter)** — Domain `Enter`+`EnterLine`, EF, миграция,
|
||||||
|
контроллер CRUD + Post/Unpost (Stock + StockMovement тип `Enter`), Web
|
||||||
|
`/inventory/enters`. Без поставщика (источник — начальные остатки, излишек инвентаризации).
|
||||||
|
2. [ ] **P1-2 Списание (Loss)** — Domain `Loss`+`LossLine` + enum `LossReason`
|
||||||
|
(Defect/Expired/Damage/Shortage/Other). EF, миграция, контроллер, Web,
|
||||||
|
`StockMovement` тип `WriteOff`.
|
||||||
|
3. [ ] **P1-3 Перемещение (Transfer)** — Domain `Transfer`+`TransferLine`
|
||||||
|
(FromStoreId → ToStoreId, обязательны и различны). Атомарная транзакция:
|
||||||
|
`TransferOut` из From + `TransferIn` в To. EF, миграция, контроллер + Post/Unpost,
|
||||||
|
Web. Кейс: post→unpost не оставляет orphan-движений.
|
||||||
|
4. [ ] **P1-4 Инвентаризация (Inventory)** — Domain `Inventory`+`InventoryLine`
|
||||||
|
(productId, bookQty, actualQty, diff). EF, миграция. Контроллер: создание
|
||||||
|
подгружает текущие остатки; Post создаёт `InventoryAdjustment` на diff. Web:
|
||||||
|
форма со списком товаров склада, импорт CSV факта.
|
||||||
|
5. [ ] **P1-6 Возврат от покупателя (CustomerReturn)** — расширение `RetailSale`
|
||||||
|
опцией возврата (referenceSaleId или без). Контроллер: создание возврата из
|
||||||
|
проведённой продажи, `CustomerReturn` тип уже есть. Web: кнопка «Создать возврат».
|
||||||
|
6. [ ] **P1-7 Возврат поставщику (SupplierReturn)** — по аналогии для Supply.
|
||||||
|
Domain `SupplierReturn`+`Line` (referenceSupplyId). Контроллер. Web.
|
||||||
|
7. [ ] **P1-16 Hangfire dashboard + cleanup** — `Hangfire.Dashboard` с
|
||||||
|
авторизацией только для SuperAdmin. Scheduled: ежедневный cleanup
|
||||||
|
`StockMovement` старше 2 лет, audit-log старше 90 дней.
|
||||||
|
|
||||||
|
## Лог
|
||||||
|
|
||||||
|
- Каждый пункт: build + тесты + коммит порцией + отметка [x] + коммит прогресса.
|
||||||
|
- Все правки на ветке `main` (origin Forgejo), без коммита `global.json`.
|
||||||
Loading…
Reference in a new issue