feat: add AI research chatbot with confirmed business tools

This commit is contained in:
yuxuanhui
2026-09-07 23:02:55 +08:00
parent 3cd280d068
commit 79ab20b4ea
44 changed files with 4647 additions and 197 deletions
+15
View File
@@ -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):