feat(pricing): 开发定价方案

This commit is contained in:
R524809
2026-09-28 17:34:33 +08:00
parent a29dd92676
commit 84b230e69a
54 changed files with 6264 additions and 236 deletions
+27
View File
@@ -0,0 +1,27 @@
import type {
PricingCatalog,
PricingCategory,
PricingPolicy,
PricingPolicyRequest,
PricingPreview,
PricingPreviewRequest,
} from '@atlas/contracts';
import { api } from './api';
const headers = () => ({ 'Idempotency-Key': crypto.randomUUID() });
export const pricingApi = {
categories: (store: string, q: string) =>
api.get<PricingCategory[]>('/pricing/categories', { params: { store_id: store, q } }),
catalog: (store: string) =>
api.get<PricingCatalog>('/pricing/catalog', { params: { store_id: store } }),
preview: (input: PricingPreviewRequest, signal?: AbortSignal) =>
api.post<PricingPreview>('/pricing/quote-previews', input, { headers: headers(), signal }),
createPolicy: (store: string, input: PricingPolicyRequest) =>
api.post<PricingPolicy>(`/stores/${store}/pricing-policies`, input, { headers: headers() }),
updatePolicy: (policy: PricingPolicy, input: PricingPolicyRequest) =>
api.patch<PricingPolicy>(`/pricing-policies/${policy.id}`, input, {
headers: { ...headers(), 'If-Match': `"${policy.revision}"` },
}),
defaultPolicy: (id: string) =>
api.post<PricingPolicy>(`/pricing-policies/${id}/set-default`, {}, { headers: headers() }),
archivePolicy: (id: string) => api.delete(`/pricing-policies/${id}`, { headers: headers() }),
};
+13
View File
@@ -0,0 +1,13 @@
import type { PricingRateCardAdmin, PricingRateReviewRequest } from '@atlas/contracts';
import { api } from './api';
export const pricingAdminApi = {
cards: (platformId: string) =>
api.get<PricingRateCardAdmin[]>('/system/pricing/rate-cards', {
params: { platform_id: platformId },
}),
approve: (cardId: string, input: PricingRateReviewRequest, idempotencyKey: string) =>
api.post<PricingRateCardAdmin>(`/system/pricing/rate-cards/${cardId}/reviews`, input, {
headers: { 'Idempotency-Key': idempotencyKey },
}),
};