feat: add approval-task links model and related functionality for task associations

This commit is contained in:
Abhimanyu Saharan
2026-02-11 20:27:04 +05:30
parent 3dfdfa3c3e
commit af8a263c27
19 changed files with 870 additions and 129 deletions

View File

@@ -10,7 +10,7 @@ from app.api import approvals
from app.models.agents import Agent
from app.models.approvals import Approval
from app.models.boards import Board
from app.schemas.approvals import ApprovalUpdate
from app.schemas.approvals import ApprovalRead, ApprovalUpdate
from app.services.openclaw.gateway_rpc import GatewayConfig as GatewayClientConfig
@@ -120,6 +120,25 @@ async def test_update_approval_notifies_lead_when_approved(
_fake_try_send_agent_message,
)
async def _fake_load_task_ids_by_approval(
_session: object,
*,
approval_ids: list[UUID],
) -> dict[UUID, list[UUID]]:
_ = approval_ids
return {approval.id: []}
monkeypatch.setattr(approvals, "load_task_ids_by_approval", _fake_load_task_ids_by_approval)
async def _fake_reads(_session: object, _approvals: list[Approval]) -> list[ApprovalRead]:
return [ApprovalRead.model_validate(approval, from_attributes=True)]
monkeypatch.setattr(
approvals,
"_approval_reads",
_fake_reads,
)
updated = await approvals.update_approval(
approval_id=str(approval.id),
payload=ApprovalUpdate(status="approved"),
@@ -155,6 +174,15 @@ async def test_update_approval_skips_notify_when_status_not_resolved(
monkeypatch.setattr(approvals, "_notify_lead_on_approval_resolution", _fake_notify)
async def _fake_reads(_session: object, _approvals: list[Approval]) -> list[ApprovalRead]:
return [ApprovalRead.model_validate(approval, from_attributes=True)]
monkeypatch.setattr(
approvals,
"_approval_reads",
_fake_reads,
)
updated = await approvals.update_approval(
approval_id=str(approval.id),
payload=ApprovalUpdate(status="pending"),