feat: add lead_reasoning field to ApprovalCreate and update validation logic
This commit is contained in:
@@ -48,6 +48,7 @@ class ApprovalCreate(ApprovalBase):
|
|||||||
"""Payload for creating a new approval request."""
|
"""Payload for creating a new approval request."""
|
||||||
|
|
||||||
agent_id: UUID | None = None
|
agent_id: UUID | None = None
|
||||||
|
lead_reasoning: str | None = None
|
||||||
|
|
||||||
@model_validator(mode="after")
|
@model_validator(mode="after")
|
||||||
def validate_lead_reasoning(self) -> Self:
|
def validate_lead_reasoning(self) -> Self:
|
||||||
@@ -62,6 +63,13 @@ class ApprovalCreate(ApprovalBase):
|
|||||||
nested_reason = decision.get("reason")
|
nested_reason = decision.get("reason")
|
||||||
if isinstance(nested_reason, str) and nested_reason.strip():
|
if isinstance(nested_reason, str) and nested_reason.strip():
|
||||||
return self
|
return self
|
||||||
|
lead_reasoning = self.lead_reasoning
|
||||||
|
if isinstance(lead_reasoning, str) and lead_reasoning.strip():
|
||||||
|
self.payload = {
|
||||||
|
**(payload if isinstance(payload, dict) else {}),
|
||||||
|
"reason": lead_reasoning.strip(),
|
||||||
|
}
|
||||||
|
return self
|
||||||
raise ValueError(LEAD_REASONING_REQUIRED_ERROR)
|
raise ValueError(LEAD_REASONING_REQUIRED_ERROR)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -58,3 +58,16 @@ def test_approval_create_accepts_float_confidence() -> None:
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert model.confidence == 88.75
|
assert model.confidence == 88.75
|
||||||
|
|
||||||
|
|
||||||
|
def test_approval_create_accepts_top_level_lead_reasoning() -> None:
|
||||||
|
model = ApprovalCreate.model_validate(
|
||||||
|
{
|
||||||
|
"action_type": "task.update",
|
||||||
|
"confidence": 80,
|
||||||
|
"lead_reasoning": "Need manual review before changing task status.",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert model.payload == {
|
||||||
|
"reason": "Need manual review before changing task status.",
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user