feat(trade): 仓配可调配履约与三分支推单
CI / verify (pull_request) Has been cancelled

同城有仓按仓库绑定承运商自动推单或自管填单,无仓/跨城走总部快递;新增仓配注册表、FulfillmentService 及三端运单追踪。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-16 17:51:20 +08:00
parent f1dc23c54c
commit f6d97b4ee8
30 changed files with 1615 additions and 57 deletions
+21 -1
View File
@@ -1,4 +1,4 @@
import type { WarehouseManagerType, WarehouseStatus } from './enums';
import type { WarehouseFulfillmentMode, WarehouseManagerType, WarehouseStatus } from './enums';
export interface CityWarehouseDto {
id: string;
@@ -11,6 +11,14 @@ export interface CityWarehouseDto {
partnerAccountId: string | null;
partnerCompanyName?: string | null;
status: WarehouseStatus;
fulfillmentMode: WarehouseFulfillmentMode;
fulfillmentProviderId: string | null;
fulfillmentProviderName?: string | null;
fulfillmentProviderCode?: string | null;
manualCarrierLabel?: string | null;
manualQueryUrlTemplate?: string | null;
lng?: number | null;
lat?: number | null;
createdAt: string;
updatedAt: string;
}
@@ -23,6 +31,12 @@ export interface CreateCityWarehouseInput {
managerType: WarehouseManagerType;
partnerAccountId?: string;
status?: WarehouseStatus;
fulfillmentMode?: WarehouseFulfillmentMode;
fulfillmentProviderId?: string;
manualCarrierLabel?: string;
manualQueryUrlTemplate?: string;
lng?: number;
lat?: number;
}
export interface UpdateCityWarehouseInput {
@@ -33,4 +47,10 @@ export interface UpdateCityWarehouseInput {
managerType?: WarehouseManagerType;
partnerAccountId?: string | null;
status?: WarehouseStatus;
fulfillmentMode?: WarehouseFulfillmentMode;
fulfillmentProviderId?: string | null;
manualCarrierLabel?: string | null;
manualQueryUrlTemplate?: string | null;
lng?: number | null;
lat?: number | null;
}
+30
View File
@@ -168,6 +168,36 @@ export const WAREHOUSE_STATUS_LABELS: Record<WarehouseStatus, string> = {
[WarehouseStatus.PAUSED]: '暂停',
};
export enum FulfillmentProviderType {
API = 'API',
MANUAL = 'MANUAL',
}
export enum FulfillmentProviderStatus {
ACTIVE = 'ACTIVE',
DISABLED = 'DISABLED',
}
export enum WarehouseFulfillmentMode {
API_AUTO = 'API_AUTO',
MANUAL = 'MANUAL',
}
export const FULFILLMENT_PROVIDER_TYPE_LABELS: Record<FulfillmentProviderType, string> = {
[FulfillmentProviderType.API]: 'API 对接',
[FulfillmentProviderType.MANUAL]: '自管',
};
export const FULFILLMENT_PROVIDER_STATUS_LABELS: Record<FulfillmentProviderStatus, string> = {
[FulfillmentProviderStatus.ACTIVE]: '启用',
[FulfillmentProviderStatus.DISABLED]: '停用',
};
export const WAREHOUSE_FULFILLMENT_MODE_LABELS: Record<WarehouseFulfillmentMode, string> = {
[WarehouseFulfillmentMode.API_AUTO]: 'API 自动推单',
[WarehouseFulfillmentMode.MANUAL]: '自管手工填单',
};
export enum AccountStatus {
ACTIVE = 'ACTIVE',
DISABLED = 'DISABLED',
@@ -0,0 +1,51 @@
import type { FulfillmentProviderStatus, FulfillmentProviderType } from './enums';
import type { WarehouseFulfillmentMode } from './enums';
export interface FulfillmentProviderDto {
id: string;
code: string;
name: string;
type: FulfillmentProviderType;
status: FulfillmentProviderStatus;
capabilities?: {
createShipment?: boolean;
getTrack?: boolean;
callback?: boolean;
cancel?: boolean;
} | null;
hasConfig: boolean;
createdAt: string;
updatedAt: string;
}
export interface CreateFulfillmentProviderInput {
code: string;
name: string;
type: FulfillmentProviderType;
status?: FulfillmentProviderStatus;
configJson?: string;
capabilitiesJson?: string;
}
export interface UpdateFulfillmentProviderInput {
name?: string;
type?: FulfillmentProviderType;
status?: FulfillmentProviderStatus;
configJson?: string;
capabilitiesJson?: string;
}
export interface ManualShipOrderInput {
logisticsCompany: string;
trackingNo: string;
manualQueryUrl?: string;
}
export interface WarehouseFulfillmentConfig {
fulfillmentMode: WarehouseFulfillmentMode;
fulfillmentProviderId?: string | null;
manualCarrierLabel?: string | null;
manualQueryUrlTemplate?: string | null;
lng?: number | null;
lat?: number | null;
}
+1
View File
@@ -18,5 +18,6 @@ export * from './partner';
export * from './shop';
export * from './city-partner';
export * from './city-warehouse';
export * from './fulfillment-provider';
export * from './system-config';
export * from './legal';