fix(ci): resolve backend check failures in dashboard metrics

This commit is contained in:
Abhimanyu Saharan
2026-03-04 16:11:14 +05:30
parent bdc9fc3f01
commit 4378d354f4
4 changed files with 43 additions and 35 deletions

View File

@@ -248,14 +248,11 @@ async def list_activity(
actor: ActorContext = ACTOR_DEP,
) -> LimitOffsetPage[ActivityEventRead]:
"""List activity events visible to the calling actor."""
statement: Any = (
select(
ActivityEvent,
col(ActivityEvent.board_id).label("event_board_id"),
col(Task.board_id).label("task_board_id"),
)
.outerjoin(Task, col(ActivityEvent.task_id) == col(Task.id))
)
statement: Any = select(
ActivityEvent,
col(ActivityEvent.board_id).label("event_board_id"),
col(Task.board_id).label("task_board_id"),
).outerjoin(Task, col(ActivityEvent.task_id) == col(Task.id))
if actor.actor_type == "agent" and actor.agent:
statement = statement.where(col(ActivityEvent.agent_id) == actor.agent.id)
elif actor.actor_type == "user" and actor.user:

View File

@@ -423,15 +423,7 @@ async def _pending_approvals_snapshot(
rows = (
await session.exec(
select(
col(Approval.id),
col(Approval.board_id),
col(Board.name),
col(Approval.action_type),
col(Approval.confidence),
col(Approval.created_at),
col(Task.title),
)
select(Approval, Board, Task)
.join(Board, col(Board.id) == col(Approval.board_id))
.outerjoin(Task, col(Task.id) == col(Approval.task_id))
.where(col(Approval.board_id).in_(board_ids))
@@ -443,15 +435,15 @@ async def _pending_approvals_snapshot(
items = [
DashboardPendingApproval(
approval_id=approval_id,
board_id=board_id,
board_name=board_name,
action_type=action_type,
confidence=float(confidence),
created_at=created_at,
task_title=task_title,
approval_id=approval.id,
board_id=approval.board_id,
board_name=board.name,
action_type=approval.action_type,
confidence=float(approval.confidence),
created_at=approval.created_at,
task_title=task.title if task is not None else None,
)
for approval_id, board_id, board_name, action_type, confidence, created_at, task_title in rows
for approval, board, task in rows
]
return DashboardPendingApprovals(total=total, items=items)

View File

@@ -129,9 +129,7 @@ def test_coerce_activity_rows_rejects_invalid_values():
event = _make_event()
with pytest.raises(
TypeError,
match=(
"Expected \\(ActivityEvent, event_board_id, task_board_id\\) rows"
),
match="Expected \\(ActivityEvent, event_board_id, task_board_id\\) rows",
):
_coerce_activity_rows([(event, "bad", None)])

View File

@@ -6,6 +6,9 @@ from uuid import uuid4
import pytest
from app.api import metrics as metrics_api
from app.models.approvals import Approval
from app.models.boards import Board
from app.models.tasks import Task
class _ExecResult:
@@ -97,16 +100,34 @@ async def test_pending_approvals_snapshot_returns_empty_for_empty_scope() -> Non
async def test_pending_approvals_snapshot_maps_rows() -> None:
approval_id = uuid4()
board_id = uuid4()
organization_id = uuid4()
task_id = uuid4()
created_at = datetime(2026, 3, 4, 12, 0, 0)
approval = Approval(
id=approval_id,
board_id=board_id,
task_id=task_id,
action_type="approve_task",
confidence=87.0,
created_at=created_at,
status="pending",
)
board = Board(
id=board_id,
organization_id=organization_id,
name="Operations Board",
slug="operations-board",
)
task = Task(
id=task_id,
board_id=board_id,
title="Validate rollout checklist",
)
rows: list[tuple[object, ...]] = [
(
approval_id,
board_id,
"Operations Board",
"approve_task",
87.0,
created_at,
"Validate rollout checklist",
approval,
board,
task,
)
]
session = _SequentialSession(