59 lines
2.7 KiB
Python
59 lines
2.7 KiB
Python
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
from sqlmodel import Field, SQLModel
|
|
|
|
|
|
class PlatformSetting(SQLModel, table=True):
|
|
__tablename__ = "sys_setting"
|
|
|
|
key: str = Field(primary_key=True, max_length=120)
|
|
name: str = Field(default="", max_length=200)
|
|
category: str = Field(default="general", max_length=64, index=True)
|
|
description: str = Field(default="")
|
|
value_type: str = Field(default="json", max_length=32)
|
|
value_json: str = Field(default="{}")
|
|
is_public: bool = Field(default=False, index=True)
|
|
sort_order: int = Field(default=100, index=True)
|
|
created_at: datetime = Field(default_factory=datetime.utcnow)
|
|
updated_at: datetime = Field(default_factory=datetime.utcnow, index=True)
|
|
|
|
|
|
class BotRequestUsage(SQLModel, table=True):
|
|
__tablename__ = "bot_request_usage"
|
|
|
|
id: Optional[int] = Field(default=None, primary_key=True)
|
|
bot_id: str = Field(foreign_key="bot_instance.id", index=True)
|
|
message_id: Optional[int] = Field(default=None, index=True)
|
|
request_id: str = Field(index=True, max_length=120)
|
|
channel: str = Field(default="dashboard", index=True, max_length=64)
|
|
status: str = Field(default="PENDING", index=True, max_length=32)
|
|
provider: Optional[str] = Field(default=None, max_length=120)
|
|
model: Optional[str] = Field(default=None, max_length=255)
|
|
token_source: str = Field(default="estimated", max_length=32)
|
|
input_tokens: int = Field(default=0)
|
|
output_tokens: int = Field(default=0)
|
|
total_tokens: int = Field(default=0)
|
|
input_text_preview: Optional[str] = Field(default=None)
|
|
output_text_preview: Optional[str] = Field(default=None)
|
|
attachments_json: Optional[str] = Field(default=None)
|
|
error_text: Optional[str] = Field(default=None)
|
|
metadata_json: Optional[str] = Field(default=None)
|
|
started_at: datetime = Field(default_factory=datetime.utcnow, index=True)
|
|
completed_at: Optional[datetime] = Field(default=None, index=True)
|
|
created_at: datetime = Field(default_factory=datetime.utcnow, index=True)
|
|
updated_at: datetime = Field(default_factory=datetime.utcnow, index=True)
|
|
|
|
|
|
class BotActivityEvent(SQLModel, table=True):
|
|
__tablename__ = "bot_activity_event"
|
|
|
|
id: Optional[int] = Field(default=None, primary_key=True)
|
|
bot_id: str = Field(foreign_key="bot_instance.id", index=True)
|
|
request_id: Optional[str] = Field(default=None, index=True, max_length=120)
|
|
event_type: str = Field(index=True, max_length=64)
|
|
channel: str = Field(default="dashboard", index=True, max_length=64)
|
|
detail: Optional[str] = Field(default=None)
|
|
metadata_json: Optional[str] = Field(default=None)
|
|
created_at: datetime = Field(default_factory=datetime.utcnow, index=True)
|