Merge branch 'main' into dev
This commit is contained in:
@@ -64,17 +64,6 @@ export function applyAdminTemplateProductBootstrap(payload?: {
|
||||
)
|
||||
}
|
||||
|
||||
export function syncAdminWorkOrderTemplateCostVersions() {
|
||||
return apiPost<{
|
||||
ruleCount: number
|
||||
unitPriceRuleCount: number
|
||||
activeVersionCount: number
|
||||
createdCount: number
|
||||
retiredCount: number
|
||||
linkedSnapshotCount: number
|
||||
}>('/api/v1/admin/cost-center/work-order-template-costs/sync')
|
||||
}
|
||||
|
||||
export function backfillAdminWorkOrderProductSkus(payload?: {
|
||||
dateFrom?: string
|
||||
dateTo?: string
|
||||
@@ -107,6 +96,32 @@ export function createAdminProductCatalog(payload: Record<string, unknown>) {
|
||||
return apiPost<{ product: ProductCatalogItem }>('/api/v1/admin/cost-center/products', payload)
|
||||
}
|
||||
|
||||
export function archiveAdminHistoricalManualProducts(payload: { execute?: boolean } = {}) {
|
||||
return apiPost<{
|
||||
dryRun: boolean
|
||||
candidateCount: number
|
||||
archivedCount: number
|
||||
sample: Array<{ id: number; canonical_sku: string; canonical_name: string }>
|
||||
}>('/api/v1/admin/cost-center/products/archive-historical-manual', payload)
|
||||
}
|
||||
|
||||
export function archiveAdminSupersededManualProducts(payload: { execute?: boolean } = {}) {
|
||||
return apiPost<{
|
||||
dryRun: boolean
|
||||
candidateCount: number
|
||||
archivedCount: number
|
||||
repointedChannelCount: number
|
||||
sample: Array<{
|
||||
id: number
|
||||
canonical_sku: string
|
||||
canonical_name: string
|
||||
primary_channel: string
|
||||
target_product_id: number
|
||||
target_product_sku: string
|
||||
}>
|
||||
}>('/api/v1/admin/cost-center/products/archive-superseded-manual', payload)
|
||||
}
|
||||
|
||||
export function syncAdminAffiliateDashProducts() {
|
||||
return apiPost<{ createdCount: number; updatedCount: number; productCount: number }>(
|
||||
'/api/v1/admin/cost-center/affiliate-products/sync',
|
||||
@@ -494,6 +509,7 @@ export function setAdminProductPrice(
|
||||
costVersionId: number
|
||||
amountFen: number
|
||||
effectiveFrom: string
|
||||
pricingMode?: 'fixed' | 'unit'
|
||||
syncedOrders?: {
|
||||
candidateCount: number
|
||||
updatedCount: number
|
||||
|
||||
@@ -24,15 +24,20 @@ export type PendingChannelGroupListResult = {
|
||||
/** 渠道规则(L1)。 */
|
||||
export type ChannelRule = {
|
||||
id: number
|
||||
provider: string
|
||||
shop_id: string
|
||||
match_key_type: 'sku_code' | 'internal_sku' | 'sku_name'
|
||||
match_key_type: 'internal_sku'
|
||||
match_key: string
|
||||
channel: 'work_order' | 'affiliate_dash' | 'third_party_voucher' | 'manual'
|
||||
priority: number
|
||||
enabled: boolean
|
||||
}
|
||||
|
||||
export type ChannelRuleListResult = {
|
||||
items: ChannelRule[]
|
||||
total: number
|
||||
page: number
|
||||
pageSize: number
|
||||
}
|
||||
|
||||
export type ChannelException = {
|
||||
id: number
|
||||
reason: string
|
||||
@@ -100,7 +105,10 @@ export function assignChannelBySku(payload: {
|
||||
channel: string
|
||||
note?: string
|
||||
}) {
|
||||
return apiPost<{ updated: number }>('/api/v1/admin/fulfillment/assign', payload)
|
||||
return apiPost<{ updated: number; carrierFailed: number; ruleCreated: boolean }>(
|
||||
'/api/v1/admin/fulfillment/assign',
|
||||
payload,
|
||||
)
|
||||
}
|
||||
|
||||
export function assignChannelToItems(payload: {
|
||||
@@ -108,17 +116,32 @@ export function assignChannelToItems(payload: {
|
||||
channel: string
|
||||
note?: string
|
||||
}) {
|
||||
return apiPost<{ updated: number }>('/api/v1/admin/fulfillment/assign', payload)
|
||||
return apiPost<{ updated: number; carrierFailed: number }>(
|
||||
'/api/v1/admin/fulfillment/assign',
|
||||
payload,
|
||||
)
|
||||
}
|
||||
|
||||
export function fetchChannelRules(params: { channel?: string } = {}) {
|
||||
return apiGet<ChannelRule[]>('/api/v1/admin/fulfillment/rules', params)
|
||||
export function switchChannelForItems(payload: {
|
||||
orderItemIds: number[]
|
||||
channel: string
|
||||
note?: string
|
||||
}) {
|
||||
return apiPost<{
|
||||
switched: number
|
||||
failed: number
|
||||
errors: Array<{ orderItemId: number; reason: string }>
|
||||
}>('/api/v1/admin/fulfillment/switch', payload)
|
||||
}
|
||||
|
||||
export function fetchChannelRules(
|
||||
params: { channel?: string; page?: number; pageSize?: number } = {},
|
||||
) {
|
||||
return apiGet<ChannelRuleListResult>('/api/v1/admin/fulfillment/rules', params)
|
||||
}
|
||||
|
||||
export function saveChannelRule(payload: {
|
||||
id?: number
|
||||
provider?: string
|
||||
shopId?: string
|
||||
matchKeyType: string
|
||||
matchKey: string
|
||||
channel: string
|
||||
@@ -133,6 +156,14 @@ export function deleteChannelRule(ruleId: number) {
|
||||
return apiDelete<{ deleted: boolean }>(`/api/v1/admin/fulfillment/rules/${ruleId}`)
|
||||
}
|
||||
|
||||
export function deleteChannelRules(ids: number[]) {
|
||||
return apiPost<{
|
||||
deletedCount: number
|
||||
deletedIds: number[]
|
||||
missingIds: number[]
|
||||
}>('/api/v1/admin/fulfillment/rules/batch-delete', { ids })
|
||||
}
|
||||
|
||||
export function fetchPipelineStatus() {
|
||||
return apiGet<FinancePipelineStatus[]>('/api/v1/admin/fulfillment/pipeline/status')
|
||||
}
|
||||
|
||||
@@ -291,8 +291,7 @@ export function saveAdminWorkProductRule(payload: {
|
||||
categoryId?: number
|
||||
enabled?: boolean
|
||||
autoCreate?: boolean
|
||||
rewardAmount?: number
|
||||
unitPrice?: number
|
||||
pricingMode?: 'fixed' | 'unit'
|
||||
sharingEnabled?: boolean
|
||||
sharingAutoFromOrder?: boolean
|
||||
sharingTotalQuantity?: number
|
||||
@@ -306,7 +305,12 @@ export function saveAdminWorkProductRule(payload: {
|
||||
fieldsText?: string
|
||||
sortOrder?: number
|
||||
}) {
|
||||
return apiPost<{ rule: WorkProductRule }>('/api/v1/admin/worker-platform/product-rules', payload)
|
||||
return apiPost<{
|
||||
rule: WorkProductRule
|
||||
productId?: number
|
||||
productStatus?: 'active' | 'archived'
|
||||
costConfigurationRequired?: boolean
|
||||
}>('/api/v1/admin/worker-platform/product-rules', payload)
|
||||
}
|
||||
|
||||
export function syncAdminWorkProductRulePrice(ruleId: number) {
|
||||
|
||||
Reference in New Issue
Block a user