feat(flywheel): golden case 管理 API 与评测单测
- 新增 GoldenCaseCreate/Read、GoldenEvalRequest/Read schema - 新增 3 个端点:创建 golden case、按规则列表、手动触发 golden 评测 (不入门禁,供运营试跑) - 单测 15 passed:单条 hit/severity 比对、集合 accuracy/precision/recall 聚合、空集降级、100% 通过/失败拦截、feature flag、异常降级 - 回归 test_agent_asset_service 27 passed(1 个预存失败与本改动无关)
This commit is contained in:
@@ -204,6 +204,46 @@ class AgentAssetRiskRuleReportRequest(BaseModel):
|
||||
note: str | None = Field(default=None, max_length=1000)
|
||||
|
||||
|
||||
class GoldenCaseCreate(BaseModel):
|
||||
case_key: str = Field(..., max_length=160)
|
||||
rule_code: str | None = Field(default=None, max_length=120)
|
||||
scene: str = Field(default="", max_length=50)
|
||||
name: str = Field(default="", max_length=120)
|
||||
values: dict[str, Any] = Field(default_factory=dict)
|
||||
expected_hit: bool = True
|
||||
expected_severity: str | None = Field(default=None, max_length=20)
|
||||
note: str | None = None
|
||||
|
||||
|
||||
class GoldenCaseRead(BaseModel):
|
||||
id: str
|
||||
case_key: str
|
||||
rule_code: str | None = None
|
||||
scene: str = ""
|
||||
name: str = ""
|
||||
values: dict[str, Any] = Field(default_factory=dict)
|
||||
expected_hit: bool = True
|
||||
expected_severity: str | None = None
|
||||
note: str | None = None
|
||||
status: str = "active"
|
||||
source: str = "manual"
|
||||
|
||||
|
||||
class GoldenEvalRequest(BaseModel):
|
||||
version: str | None = Field(default=None, max_length=30)
|
||||
|
||||
|
||||
class GoldenEvalRead(BaseModel):
|
||||
total: int = 0
|
||||
passed_count: int = 0
|
||||
failed_count: int = 0
|
||||
accuracy: float = 0.0
|
||||
precision: float = 0.0
|
||||
recall: float = 0.0
|
||||
all_passed: bool = True
|
||||
results: list[dict[str, Any]] = Field(default_factory=list)
|
||||
|
||||
|
||||
class AgentAssetRiskRuleSimulationAttachment(BaseModel):
|
||||
name: str = Field(default="", max_length=240)
|
||||
content_type: str | None = Field(default=None, max_length=120)
|
||||
|
||||
Reference in New Issue
Block a user