166 lines
4.6 KiB
Python
166 lines
4.6 KiB
Python
from typing import Any, Dict, List, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class LoadingPageSettings(BaseModel):
|
|
title: str = "Dashboard Nanobot"
|
|
subtitle: str = "平台正在准备管理面板"
|
|
description: str = "请稍候,正在加载 Bot 平台数据。"
|
|
|
|
|
|
class PlatformSettingsPayload(BaseModel):
|
|
page_size: int = Field(default=10, ge=1, le=100)
|
|
chat_pull_page_size: int = Field(default=60, ge=10, le=500)
|
|
command_auto_unlock_seconds: int = Field(default=10, ge=1, le=600)
|
|
upload_max_mb: int = Field(default=100, ge=1, le=2048)
|
|
allowed_attachment_extensions: List[str] = Field(default_factory=list)
|
|
workspace_download_extensions: List[str] = Field(default_factory=list)
|
|
speech_enabled: bool = True
|
|
speech_max_audio_seconds: int = Field(default=20, ge=5, le=600)
|
|
speech_default_language: str = Field(default="zh", min_length=1, max_length=16)
|
|
speech_force_simplified: bool = True
|
|
speech_audio_preprocess: bool = True
|
|
speech_audio_filter: str = Field(default="highpass=f=120,lowpass=f=7600,afftdn=nf=-20")
|
|
speech_initial_prompt: str = Field(
|
|
default="以下内容可能包含简体中文和英文术语。请优先输出简体中文,英文单词、缩写、品牌名和数字保持原文,不要翻译。"
|
|
)
|
|
loading_page: LoadingPageSettings = Field(default_factory=LoadingPageSettings)
|
|
|
|
|
|
class PlatformUsageItem(BaseModel):
|
|
id: int
|
|
bot_id: str
|
|
message_id: Optional[int] = None
|
|
request_id: str
|
|
channel: str
|
|
status: str
|
|
provider: Optional[str] = None
|
|
model: Optional[str] = None
|
|
token_source: str
|
|
content: Optional[str] = None
|
|
input_tokens: int
|
|
output_tokens: int
|
|
total_tokens: int
|
|
input_text_preview: Optional[str] = None
|
|
output_text_preview: Optional[str] = None
|
|
started_at: str
|
|
completed_at: Optional[str] = None
|
|
|
|
|
|
class PlatformUsageSummary(BaseModel):
|
|
request_count: int
|
|
input_tokens: int
|
|
output_tokens: int
|
|
total_tokens: int
|
|
|
|
|
|
class PlatformUsageResponse(BaseModel):
|
|
summary: PlatformUsageSummary
|
|
items: List[PlatformUsageItem]
|
|
total: int
|
|
limit: int
|
|
offset: int
|
|
has_more: bool
|
|
|
|
|
|
class PlatformActivityItem(BaseModel):
|
|
id: int
|
|
bot_id: str
|
|
request_id: Optional[str] = None
|
|
event_type: str
|
|
channel: str
|
|
detail: Optional[str] = None
|
|
metadata: Dict[str, Any] = Field(default_factory=dict)
|
|
created_at: str
|
|
|
|
|
|
class PlatformActivityListResponse(BaseModel):
|
|
items: List[PlatformActivityItem] = Field(default_factory=list)
|
|
total: int = 0
|
|
limit: int = 20
|
|
offset: int = 0
|
|
has_more: bool = False
|
|
|
|
|
|
class PlatformDashboardUsagePoint(BaseModel):
|
|
bucket_at: str
|
|
label: str
|
|
call_count: int = 0
|
|
|
|
|
|
class PlatformDashboardUsageSeries(BaseModel):
|
|
model: str
|
|
total_calls: int = 0
|
|
points: List[PlatformDashboardUsagePoint] = Field(default_factory=list)
|
|
|
|
|
|
class PlatformDashboardAnalyticsResponse(BaseModel):
|
|
total_request_count: int = 0
|
|
total_model_count: int = 0
|
|
granularity: str = "day"
|
|
since_days: int = 7
|
|
events_page_size: int = 20
|
|
series: List[PlatformDashboardUsageSeries] = Field(default_factory=list)
|
|
recent_events: List[PlatformActivityItem] = Field(default_factory=list)
|
|
|
|
|
|
class SystemSettingPayload(BaseModel):
|
|
key: str
|
|
name: str = ""
|
|
category: str = "general"
|
|
description: str = ""
|
|
value_type: str = "json"
|
|
value: Any = None
|
|
is_public: bool = False
|
|
sort_order: int = 100
|
|
|
|
|
|
class SystemSettingItem(BaseModel):
|
|
key: str
|
|
name: str
|
|
category: str
|
|
description: str
|
|
value_type: str
|
|
value: Any = None
|
|
is_public: bool = False
|
|
sort_order: int = 100
|
|
created_at: str
|
|
updated_at: str
|
|
|
|
|
|
class ManagedNodePayload(BaseModel):
|
|
node_id: str
|
|
display_name: str = ""
|
|
base_url: str = ""
|
|
enabled: bool = True
|
|
auth_token: str = ""
|
|
transport_kind: str = "edge"
|
|
runtime_kind: str = "docker"
|
|
core_adapter: str = "nanobot"
|
|
workspace_root: str = ""
|
|
native_command: str = ""
|
|
native_workdir: str = ""
|
|
native_sandbox_mode: str = "inherit"
|
|
|
|
|
|
class ManagedNodeConnectivityResult(BaseModel):
|
|
ok: bool
|
|
status: str
|
|
latency_ms: int = 0
|
|
detail: str = ""
|
|
node_self: Optional[Dict[str, Any]] = None
|
|
|
|
|
|
class ManagedNodeNativePreflightResult(BaseModel):
|
|
ok: bool
|
|
status: str
|
|
latency_ms: int = 0
|
|
detail: str = ""
|
|
command: List[str] = Field(default_factory=list)
|
|
workdir: str = ""
|
|
command_available: bool = False
|
|
workdir_exists: bool = False
|
|
runtime_native_supported: bool = False
|
|
node_self: Optional[Dict[str, Any]] = None
|