2026-03-18 17:18:23 +08:00
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PlanResponse(BaseModel):
|
|
|
|
|
id: str
|
|
|
|
|
name: str
|
|
|
|
|
display_name: str
|
|
|
|
|
price: float
|
|
|
|
|
currency: str
|
2026-05-22 13:44:50 +08:00
|
|
|
features: list[str]
|
|
|
|
|
max_conversations: int | None = None
|
|
|
|
|
max_chapters: int | None = None
|
|
|
|
|
max_words: int | None = None
|
2026-03-18 17:18:23 +08:00
|
|
|
is_popular: bool = False
|
|
|
|
|
|
|
|
|
|
|
2026-05-22 13:44:50 +08:00
|
|
|
class PlanUsageResponse(BaseModel):
|
|
|
|
|
conversations: int
|
|
|
|
|
chapters: int
|
|
|
|
|
max_conversations: int | None = None
|
|
|
|
|
max_chapters: int | None = None
|
|
|
|
|
|
|
|
|
|
|
2026-03-18 17:18:23 +08:00
|
|
|
class CurrentPlanResponse(BaseModel):
|
|
|
|
|
plan_id: str
|
|
|
|
|
plan_name: str
|
|
|
|
|
subscription_type: str
|
2026-05-22 13:44:50 +08:00
|
|
|
expires_at: str | None = None
|
|
|
|
|
features: list[str]
|
|
|
|
|
usage: PlanUsageResponse
|