feat: add entitlement plans and topic sessions

This commit is contained in:
2026-07-31 15:22:11 +08:00
parent ad2161497f
commit 884dc765ad
27 changed files with 2389 additions and 15 deletions

View File

@@ -41,6 +41,9 @@ class AdminUserUpdateRequest(BaseModel):
status: int | None = Field(default=None, ge=0, le=1)
dailyChatLimit: int | None = Field(default=None, ge=0, le=100000)
expiredAt: datetime | None = None
entitlementPlanId: int | None = Field(default=None, gt=0)
entitlementExpiredAt: datetime | None = None
entitlementRemark: str | None = Field(default=None, max_length=255)
class AdminUserCreateRequest(BaseModel):
@@ -65,6 +68,28 @@ class AdminUserImportRequest(BaseModel):
students: list[AdminUserImportItem] = Field(default_factory=list)
class EntitlementPlanSaveRequest(BaseModel):
name: str = Field(min_length=1, max_length=80)
planType: Literal["basic", "deep", "addon", "teacher"] = "basic"
description: str | None = Field(default=None, max_length=255)
validityDays: int | None = Field(default=None, ge=1, le=3650)
monthlyTopicLimit: int | None = Field(default=None, ge=0, le=100000)
enableGrowthProfile: int = Field(default=0, ge=0, le=1)
enablePeriodicReports: int = Field(default=0, ge=0, le=1)
allowHelpCard: int = Field(default=1, ge=0, le=1)
allowShareDraft: int = Field(default=1, ge=0, le=1)
deductQuota: int = Field(default=1, ge=0, le=1)
status: int = Field(default=1, ge=0, le=1)
sortOrder: int = Field(default=0, ge=0, le=100000)
class UserEntitlementAssignRequest(BaseModel):
planId: int = Field(gt=0)
effectiveAt: datetime | None = None
expiredAt: datetime | None = None
remark: str | None = Field(default=None, max_length=255)
class KnowledgeSaveRequest(BaseModel):
name: str = Field(min_length=1, max_length=100)
feishuSpaceId: str = Field(min_length=1, max_length=100)

View File

@@ -22,6 +22,7 @@ class ChatSessionRead(ORMModel):
class ChatMessageRead(ORMModel):
id: int
topic_session_id: int | None = None
role: str
content: str
message_status: str

View File

@@ -18,3 +18,4 @@ class UserProfile(ORMModel):
effective_at: datetime | None = None
expired_at: datetime | None = None
last_login_at: datetime | None = None
entitlement: dict | None = None