feat: add AI research chatbot with confirmed business tools
This commit is contained in:
@@ -123,6 +123,10 @@ class ResearchInput(Contract):
|
||||
_tags = field_validator("tags")(normalize_tags)
|
||||
|
||||
|
||||
class ResearchUpdate(ResearchInput):
|
||||
version: int = Field(ge=1)
|
||||
|
||||
|
||||
def valid_ids(values):
|
||||
result = list(dict.fromkeys(values))
|
||||
if not result or len(result) > 100 or any(not re.fullmatch(r"[A-Za-z0-9_-]{1,100}", v) for v in result):
|
||||
@@ -145,6 +149,16 @@ class BulkInput(Contract):
|
||||
return self
|
||||
|
||||
|
||||
class BulkUpdate(BulkInput):
|
||||
versions: dict[str, int]
|
||||
|
||||
@model_validator(mode="after")
|
||||
def check_versions(self):
|
||||
if set(self.versions) != set(self.alpha_ids) or any(v < 1 for v in self.versions.values()):
|
||||
raise ValueError("每个目标 Alpha 都必须提供当前版本")
|
||||
return self
|
||||
|
||||
|
||||
class JobInput(Contract):
|
||||
kind: Literal["full_sync", "alpha_refresh", "pnl_refresh"]
|
||||
alpha_ids: list[str] = Field(default_factory=list)
|
||||
@@ -161,6 +175,7 @@ class JobInput(Contract):
|
||||
|
||||
class ResearchOutput(ResearchInput):
|
||||
updated_at: datetime
|
||||
version: int
|
||||
|
||||
|
||||
class AlphaSummary(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user