116 lines
3.2 KiB
Python
116 lines
3.2 KiB
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from datetime import datetime
|
||
|
|
from typing import Any
|
||
|
|
|
||
|
|
from pydantic import BaseModel, ConfigDict, Field
|
||
|
|
|
||
|
|
from app.core.agent_enums import (
|
||
|
|
AgentAssetContentType,
|
||
|
|
AgentAssetDomain,
|
||
|
|
AgentAssetStatus,
|
||
|
|
AgentAssetType,
|
||
|
|
AgentReviewStatus,
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
class AgentAssetCreate(BaseModel):
|
||
|
|
asset_type: AgentAssetType
|
||
|
|
code: str = Field(min_length=1, max_length=100)
|
||
|
|
name: str = Field(min_length=1, max_length=200)
|
||
|
|
description: str = ""
|
||
|
|
domain: AgentAssetDomain
|
||
|
|
scenario_json: list[Any] = Field(default_factory=list)
|
||
|
|
owner: str = Field(min_length=1, max_length=100)
|
||
|
|
reviewer: str | None = Field(default=None, max_length=100)
|
||
|
|
status: AgentAssetStatus = AgentAssetStatus.DRAFT
|
||
|
|
config_json: dict[str, Any] = Field(default_factory=dict)
|
||
|
|
|
||
|
|
|
||
|
|
class AgentAssetUpdate(BaseModel):
|
||
|
|
name: str | None = Field(default=None, min_length=1, max_length=200)
|
||
|
|
description: str | None = None
|
||
|
|
domain: AgentAssetDomain | None = None
|
||
|
|
scenario_json: list[Any] | None = None
|
||
|
|
owner: str | None = Field(default=None, min_length=1, max_length=100)
|
||
|
|
reviewer: str | None = Field(default=None, max_length=100)
|
||
|
|
status: AgentAssetStatus | None = None
|
||
|
|
current_version: str | None = Field(default=None, max_length=30)
|
||
|
|
config_json: dict[str, Any] | None = None
|
||
|
|
|
||
|
|
|
||
|
|
class AgentAssetVersionCreate(BaseModel):
|
||
|
|
version: str = Field(min_length=1, max_length=30)
|
||
|
|
content: Any
|
||
|
|
content_type: AgentAssetContentType
|
||
|
|
change_note: str | None = None
|
||
|
|
created_by: str = Field(min_length=1, max_length=100)
|
||
|
|
|
||
|
|
|
||
|
|
class RuleMarkdownUpdate(BaseModel):
|
||
|
|
version: str = Field(min_length=1, max_length=30)
|
||
|
|
content: str
|
||
|
|
change_note: str | None = None
|
||
|
|
created_by: str = Field(min_length=1, max_length=100)
|
||
|
|
|
||
|
|
|
||
|
|
class AgentAssetReviewCreate(BaseModel):
|
||
|
|
version: str = Field(min_length=1, max_length=30)
|
||
|
|
reviewer: str = Field(min_length=1, max_length=100)
|
||
|
|
review_status: AgentReviewStatus
|
||
|
|
review_note: str | None = None
|
||
|
|
|
||
|
|
|
||
|
|
class AgentAssetReviewRead(BaseModel):
|
||
|
|
model_config = ConfigDict(from_attributes=True)
|
||
|
|
|
||
|
|
id: str
|
||
|
|
asset_id: str
|
||
|
|
version: str
|
||
|
|
reviewer: str
|
||
|
|
review_status: str
|
||
|
|
review_note: str | None
|
||
|
|
reviewed_at: datetime | None
|
||
|
|
created_at: datetime
|
||
|
|
|
||
|
|
|
||
|
|
class AgentAssetVersionRead(BaseModel):
|
||
|
|
model_config = ConfigDict(from_attributes=True)
|
||
|
|
|
||
|
|
id: str
|
||
|
|
asset_id: str
|
||
|
|
version: str
|
||
|
|
content: Any
|
||
|
|
content_type: str
|
||
|
|
change_note: str | None
|
||
|
|
created_by: str
|
||
|
|
created_at: datetime
|
||
|
|
is_current: bool = False
|
||
|
|
|
||
|
|
|
||
|
|
class AgentAssetListItem(BaseModel):
|
||
|
|
model_config = ConfigDict(from_attributes=True)
|
||
|
|
|
||
|
|
id: str
|
||
|
|
asset_type: str
|
||
|
|
code: str
|
||
|
|
name: str
|
||
|
|
description: str
|
||
|
|
domain: str
|
||
|
|
scenario_json: list[Any]
|
||
|
|
owner: str
|
||
|
|
reviewer: str | None
|
||
|
|
status: str
|
||
|
|
current_version: str | None
|
||
|
|
config_json: dict[str, Any]
|
||
|
|
created_at: datetime
|
||
|
|
updated_at: datetime
|
||
|
|
|
||
|
|
|
||
|
|
class AgentAssetRead(AgentAssetListItem):
|
||
|
|
current_version_content: Any | None = None
|
||
|
|
current_version_content_type: str | None = None
|
||
|
|
current_version_change_note: str | None = None
|
||
|
|
recent_versions: list[AgentAssetVersionRead] = Field(default_factory=list)
|
||
|
|
latest_review: AgentAssetReviewRead | None = None
|