feat: deliver agent foundation day 1
This commit is contained in:
115
server/src/app/schemas/agent_asset.py
Normal file
115
server/src/app/schemas/agent_asset.py
Normal file
@@ -0,0 +1,115 @@
|
||||
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
|
||||
Reference in New Issue
Block a user