feat: завершить полную миграцию V1→V2 с модульной архитектурой и документацией
- Завершить миграцию фулфилмента на 100% V2 (удалить legacy компонент) - Создать полную V2 систему для расходников селлера (SellerConsumableInventory) - Автоматическое пополнение инвентаря при статусе DELIVERED - Удалить весь код создания V1 Supply для расходников - Исправить фильтрацию: расходники селлера только на странице consumables - Исправить Organization.inn null ошибку с fallback значениями - Создать документацию V2 систем и отчет о миграции - Обновить import порядок для ESLint совместимости BREAKING CHANGES: V1 система поставок расходников полностью удалена
This commit is contained in:
@ -139,6 +139,10 @@ model Organization {
|
||||
// === НОВЫЕ СВЯЗИ СО СКЛАДСКИМИ ОСТАТКАМИ V2 ===
|
||||
fulfillmentInventory FulfillmentConsumableInventory[] @relation("FFInventory")
|
||||
sellerSupplyOrdersAsLogistics SellerConsumableSupplyOrder[] @relation("SellerSupplyOrdersLogistics")
|
||||
|
||||
// === СВЯЗИ С ИНВЕНТАРЕМ РАСХОДНИКОВ СЕЛЛЕРА V2 ===
|
||||
sellerInventoryAsOwner SellerConsumableInventory[] @relation("SellerInventory")
|
||||
sellerInventoryAsWarehouse SellerConsumableInventory[] @relation("SellerInventoryWarehouse")
|
||||
|
||||
@@index([referralCode])
|
||||
@@index([referredById])
|
||||
@ -308,7 +312,8 @@ model Product {
|
||||
sellerSupplyItems SellerConsumableSupplyItem[] @relation("SellerSupplyItems")
|
||||
|
||||
// === НОВЫЕ СВЯЗИ СО СКЛАДСКИМИ ОСТАТКАМИ V2 ===
|
||||
inventoryRecords FulfillmentConsumableInventory[] @relation("InventoryProducts")
|
||||
inventoryRecords FulfillmentConsumableInventory[] @relation("InventoryProducts")
|
||||
sellerInventoryRecords SellerConsumableInventory[] @relation("SellerInventoryProducts")
|
||||
|
||||
@@unique([organizationId, article])
|
||||
@@map("products")
|
||||
@ -993,3 +998,48 @@ model FulfillmentConsumableInventory {
|
||||
@@index([fulfillmentCenterId, lastSupplyDate])
|
||||
@@map("fulfillment_consumable_inventory")
|
||||
}
|
||||
|
||||
// === V2 SELLER CONSUMABLE INVENTORY SYSTEM ===
|
||||
// Система складского учета расходников селлера на складе фулфилмента
|
||||
model SellerConsumableInventory {
|
||||
// === ИДЕНТИФИКАЦИЯ ===
|
||||
id String @id @default(cuid())
|
||||
|
||||
// === СВЯЗИ ===
|
||||
sellerId String // кому принадлежат расходники (FK: Organization SELLER)
|
||||
fulfillmentCenterId String // где хранятся (FK: Organization FULFILLMENT)
|
||||
productId String // что хранится (FK: Product)
|
||||
|
||||
// === СКЛАДСКИЕ ДАННЫЕ ===
|
||||
currentStock Int @default(0) // текущий остаток на складе фулфилмента
|
||||
minStock Int @default(0) // минимальный порог для автозаказа
|
||||
maxStock Int? // максимальный порог (опционально)
|
||||
reservedStock Int @default(0) // зарезервировано для использования селлером
|
||||
totalReceived Int @default(0) // всего получено с момента создания
|
||||
totalUsed Int @default(0) // всего использовано селлером
|
||||
|
||||
// === ЦЕНЫ ===
|
||||
averageCost Decimal @default(0) @db.Decimal(10, 2) // средняя себестоимость покупки
|
||||
usagePrice Decimal? @db.Decimal(10, 2) // цена списания/использования
|
||||
|
||||
// === МЕТАДАННЫЕ ===
|
||||
lastSupplyDate DateTime? // последняя поставка
|
||||
lastUsageDate DateTime? // последнее использование
|
||||
notes String? // заметки по складскому учету
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
// === СВЯЗИ ===
|
||||
seller Organization @relation("SellerInventory", fields: [sellerId], references: [id])
|
||||
fulfillmentCenter Organization @relation("SellerInventoryWarehouse", fields: [fulfillmentCenterId], references: [id])
|
||||
product Product @relation("SellerInventoryProducts", fields: [productId], references: [id])
|
||||
|
||||
// === ИНДЕКСЫ ===
|
||||
@@unique([sellerId, fulfillmentCenterId, productId]) // один товар = одна запись на связку селлер-фулфилмент
|
||||
@@index([sellerId, currentStock])
|
||||
@@index([fulfillmentCenterId, sellerId]) // для таблицы "Детализация по магазинам"
|
||||
@@index([currentStock, minStock]) // для поиска "заканчивающихся"
|
||||
@@index([sellerId, lastSupplyDate])
|
||||
@@map("seller_consumable_inventory")
|
||||
}
|
||||
|
Reference in New Issue
Block a user