refactor(data): replace schema classes with readonly models

This commit is contained in:
2026-07-17 13:21:40 +08:00
parent 3437312167
commit ae97366a4a
103 changed files with 1220 additions and 2117 deletions
@@ -3,9 +3,11 @@ import { fromPromise } from "xstate";
import {
CreatePaymentOrderResponse,
CreatePaymentOrderResponseSchema,
type PayChannel,
PaymentOrderStatusResponse,
PaymentOrderStatusResponseSchema,
PaymentPlansResponse,
PaymentPlansResponseSchema,
} from "@/data/schemas/payment";
import { paymentMachine } from "@/stores/payment/payment-machine";
import type { PaymentPlanCatalog } from "@/stores/payment/payment-state";
@@ -114,39 +116,37 @@ export function createTestPaymentMachine(
overrides.onLoadCatalog?.(input.catalog);
return overrides.cachedPlans ?? null;
}),
refreshPlans: fromPromise<
PaymentPlansResponse,
PaymentPlansActorInput
>(async ({ input }) => {
overrides.onRefreshCatalog?.(input.catalog);
if (overrides.refreshPlans) return overrides.refreshPlans();
return (
overrides.refreshedPlans ??
PaymentPlansResponse.from({
plans: [monthlyPlan, lifetimePlan, creditPlan],
})
);
}),
createOrder: fromPromise<
CreatePaymentOrderResponse,
CreateOrderInput
>(async ({ input }) => {
createOrderSpy(input);
if (overrides.createOrderError) throw overrides.createOrderError;
return CreatePaymentOrderResponse.from({
orderId: "pay_test_001",
payParams: {
provider: "stripe",
clientSecret: "pi_test_secret_test",
},
});
}),
refreshPlans: fromPromise<PaymentPlansResponse, PaymentPlansActorInput>(
async ({ input }) => {
overrides.onRefreshCatalog?.(input.catalog);
if (overrides.refreshPlans) return overrides.refreshPlans();
return (
overrides.refreshedPlans ??
PaymentPlansResponseSchema.parse({
plans: [monthlyPlan, lifetimePlan, creditPlan],
})
);
},
),
createOrder: fromPromise<CreatePaymentOrderResponse, CreateOrderInput>(
async ({ input }) => {
createOrderSpy(input);
if (overrides.createOrderError) throw overrides.createOrderError;
return CreatePaymentOrderResponseSchema.parse({
orderId: "pay_test_001",
payParams: {
provider: "stripe",
clientSecret: "pi_test_secret_test",
},
});
},
),
pollOrderStatus: fromPromise(async () => {
const status =
orderStatuses[Math.min(pollCount, orderStatuses.length - 1)] ??
orderStatus;
pollCount += 1;
return PaymentOrderStatusResponse.from({
return PaymentOrderStatusResponseSchema.parse({
orderId: "pay_test_001",
status,
orderType: "vip_monthly",