d2578a9093
P2-1: list_by_user[:5] → list_recent_by_user(user_id, limit=5) SQL层LIMIT P2-2: DashboardOverviewResponse 补充 subscription 字段(plan + is_active) - packages/ports/generation_task_repository.py: 新增 list_recent_by_user - packages/adapters/sqlalchemy_impl/generation_task_repository.py: 实现 - apps/api/app/schemas/dashboard.py: 新增 SubscriptionInfo + subscription 字段 - apps/api/app/api/routes/dashboard.py: 使用新接口 + 填充 subscription
31 lines
771 B
Python
31 lines
771 B
Python
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class RecentTaskItem(BaseModel):
|
|
id: str
|
|
task_type: str = "generation"
|
|
status: str
|
|
current_step: str = ""
|
|
error_message: str = ""
|
|
updated_at: datetime | None = None
|
|
|
|
|
|
class SubscriptionInfo(BaseModel):
|
|
"""用户订阅信息。"""
|
|
plan: str = "free"
|
|
is_active: bool = False
|
|
|
|
|
|
class DashboardOverviewResponse(BaseModel):
|
|
"""Dashboard 概览数据。"""
|
|
total_assets: int = 0
|
|
used_storage_bytes: int = 0
|
|
total_titles: int = 0
|
|
total_voices: int = 0
|
|
total_tasks: int = 0
|
|
total_products: int = 0
|
|
subscription: SubscriptionInfo = Field(default_factory=SubscriptionInfo)
|
|
recent_tasks: list[RecentTaskItem] = Field(default_factory=list)
|