dashboard-nanobot/backend/models/bot.py

33 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from typing import Optional
from sqlmodel import Field, SQLModel
from datetime import datetime
class BotInstance(SQLModel, table=True):
id: str = Field(primary_key=True)
name: str
workspace_dir: str = Field(unique=True)
docker_status: str = Field(default="STOPPED", index=True)
current_state: Optional[str] = Field(default="IDLE")
last_action: Optional[str] = Field(default=None)
image_tag: str = Field(default="nanobot-base:v0.1.4") # 记录该机器人使用的镜像版本
created_at: datetime = Field(default_factory=datetime.utcnow)
updated_at: datetime = Field(default_factory=datetime.utcnow)
class BotMessage(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
bot_id: str = Field(foreign_key="botinstance.id", index=True)
role: str = Field(index=True) # user | assistant | system
text: str
media_json: Optional[str] = Field(default=None) # JSON string list of workspace-relative file paths
feedback: Optional[str] = Field(default=None, index=True) # up | down
feedback_at: Optional[datetime] = Field(default=None)
created_at: datetime = Field(default_factory=datetime.utcnow, index=True)
class NanobotImage(SQLModel, table=True):
tag: str = Field(primary_key=True) # e.g., nanobot-base:v0.1.4
image_id: Optional[str] = Field(default=None) # Docker 内部的 Image ID
version: str # e.g., 0.1.4
status: str = Field(default="READY") # READY, BUILDING, ERROR
source_dir: Optional[str] = Field(default=None) # 本地来源标识(如 manual
created_at: datetime = Field(default_factory=datetime.utcnow)