feat(M09-D4): 完成商品选购与运营工作台

This commit is contained in:
Codex
2026-08-11 08:06:13 +08:00
parent 60264cbd11
commit e91b979128
32 changed files with 1065 additions and 60 deletions
+45
View File
@@ -22,6 +22,51 @@ export interface PageResult<T> {
pageSize: number;
}
export interface ProductListing {
id: string; storeId: string; productId: string; categoryId: string;
categoryName: string; productCode: string; productName: string;
status: 'ACTIVE' | 'INACTIVE'; fulfillmentMode: 'DELIVERY' | 'SELF_SERVICE' | 'BOTH';
salesStartAt: string | null; salesEndAt: string | null; version: number;
}
export interface InventoryStock {
id: string; storeId: string; productId: string; productCode: string; productName: string;
skuId: string; skuCode: string; skuName: string; salePriceCents: number;
policyType: 'TRACKED' | 'UNLIMITED'; availableQuantity: number;
lockedQuantity: number; lossQuantity: number; lowStockThreshold: number;
lowStock: boolean; version: number;
}
export interface ProductOrder {
id: string; storeId: string; memberId: string | null; roomOrderId: string | null;
orderNo: string; fulfillmentMode: 'DELIVERY' | 'SELF_SERVICE'; status: string;
itemCount: number; totalQuantity: number; totalAmountCents: number;
paidAmountCents: number; refundedAmountCents: number; note: string;
inventoryStatus: string; createdAt: string; updatedAt: string;
items?: ProductOrderItem[];
}
export interface ProductOrderItem {
id: string; productName: string; skuName: string; quantity: number;
unitPriceCents: number; subtotalCents: number; note?: string;
}
export interface ProductStorage {
id: string; storeId: string; memberId: string; sourceOrderId: string | null;
storageNo: string; sourceType: 'ORDER' | 'MANUAL'; status: string;
itemCount: number; totalQuantity: number; remainingQuantity: number;
expiresAt: string; claimCredentialVersion: number; claimCredentialConsumed: boolean;
createdAt: string; updatedAt: string; cancelReason: string;
items?: ProductStorageItem[]; events?: Array<Record<string, unknown>>;
movements?: Array<Record<string, unknown>>; claimCredential?: string | null;
nextClaimCredential?: string | null;
}
export interface ProductStorageItem {
id: string; productName: string; skuName: string; skuId: string;
totalQuantity: number; remainingQuantity: number;
}
export interface ManagedStore {
id: string;
name: string;