diff --git a/apps/web/src/api/subscription/types.ts b/apps/web/src/api/subscription/types.ts index fefabf5bc..e0432e9e3 100644 --- a/apps/web/src/api/subscription/types.ts +++ b/apps/web/src/api/subscription/types.ts @@ -1,65 +1,115 @@ /** - * 订阅相关类型定义 + * 订阅/会员类型定义 + * 对齐后端 staging 实测最终契约(2026-09-16) + * + * Base path: /api/v1/ */ -/** 套餐类型 */ -export type PlanType = "free" | "standard" | "pro" | "enterprise" - -/** 订阅状态 */ -export type SubscriptionStatus = "active" | "expired" | "cancelled" | "trial" - -/** 账单状态 */ -export type BillingStatus = "paid" | "pending" | "failed" | "refunded" +/** 订阅计划 ID */ +export type PlanId = "free" | "monthly" | "quarterly" | "yearly" /** 计费周期 */ export type BillingCycle = "monthly" | "yearly" -/** 套餐信息 */ -export interface Plan { - id: PlanType - name: string - price: number | null - yearly_price?: number | null - description: string - recommended: boolean - features: string[] -} +/** 订阅状态 */ +export type SubscriptionStatus = "active" | "expired" | "cancelled" | "pending" -/** 当前订阅信息 */ +/** 账单状态 */ +export type BillingStatus = "paid" | "pending" | "failed" | "refunded" + +/* ================================================================ + * 当前订阅(GET /subscription/current) + * ================================================================ */ export interface SubscriptionInfo { id: string - plan_id: PlanType + plan_id: PlanId plan_name: string status: SubscriptionStatus + /** 当前计费周期:monthly 对月卡/季卡按自然月续费;yearly 对年卡 */ billing_cycle: BillingCycle current_period_start: string current_period_end: string + /** 本期金额(分) */ amount: number auto_renew: boolean created_at: string } -/** 账单记录 */ +/* ================================================================ + * 订阅计划(GET /subscription/plans) + * ================================================================ */ +export interface SubscriptionPlan { + plan_id: PlanId + /** 中文名 */ + name: string + /** 价格(分),年卡/季卡为总价 */ + price_cents: number + /** 折算月价(分),对比用 */ + monthly_price_cents: number + /** 时长(天) */ + duration_days: number + /** 积分折扣(0.9 = 9折,1 = 无折扣) */ + points_discount: number + features: { + max_resolution: string + free_clips_daily: number + [key: string]: unknown + } +} + +export interface SubscriptionPlansResponse { + plans: SubscriptionPlan[] +} + +/* ================================================================ + * 账单(GET /subscription/billing-records) + * ================================================================ */ export interface BillingRecord { id: string - plan_name: string - amount: number - billing_cycle: BillingCycle + /** 订单类型:subscribe/renew/upgrade/refund */ + order_type: string + plan_id: PlanId + /** 金额(分) */ + amount_cents: number status: BillingStatus - payment_method: string created_at: string - invoice_url?: string + paid_at?: string } -/** 升级/降级请求 */ +/* ================================================================ + * 变更/取消/开关自动续费 + * ================================================================ */ export interface ChangePlanRequest { - target_plan_id: PlanType + target_plan_id: PlanId billing_cycle: BillingCycle } -/** 升级/降级响应 */ export interface ChangePlanResponse { success: boolean message: string new_subscription?: SubscriptionInfo } + +export interface ToggleAutoRenewRequest { + enabled: boolean +} + +/* ================================================================ + * 中文标签映射 + * ================================================================ */ +export const PLAN_LABEL: Record = { + free: "免费版", + monthly: "月度会员", + quarterly: "季度会员", + yearly: "年度会员", +} + +export const BILLING_CYCLE_LABEL: Record = { + monthly: "月付", + yearly: "年付", +} + +/** + * @deprecated 旧命名保留别名,新代码请直接用 PlanId + */ +export type PlanType = PlanId