mirror of
https://github.com/himanshudongre/smriti.git
synced 2026-08-28 05:14:59 +00:00
Clarify claim completion metrics
This commit is contained in:
parent
eb60d03f4b
commit
ab8d6f6b6f
4 changed files with 39 additions and 2 deletions
|
|
@ -37,6 +37,7 @@ class CoordinationMetrics(BaseModel):
|
|||
total_claims: int = 0
|
||||
claims_done: int = 0
|
||||
claims_abandoned: int = 0
|
||||
claims_unresolved: int = 0
|
||||
claims_with_task_id: int = 0
|
||||
claim_completion_rate: Optional[float] = None
|
||||
|
||||
|
|
@ -134,6 +135,7 @@ def get_space_metrics(space_id: uuid.UUID, db: Session = Depends(get_db)):
|
|||
)
|
||||
cl_row = db.execute(claim_stmt).one()
|
||||
total_resolved = cl_row.done + cl_row.abandoned
|
||||
unresolved = max(cl_row.total - total_resolved, 0)
|
||||
completion_rate = round(cl_row.done / total_resolved, 2) if total_resolved > 0 else None
|
||||
|
||||
coordination = CoordinationMetrics(
|
||||
|
|
@ -144,6 +146,7 @@ def get_space_metrics(space_id: uuid.UUID, db: Session = Depends(get_db)):
|
|||
total_claims=cl_row.total,
|
||||
claims_done=cl_row.done,
|
||||
claims_abandoned=cl_row.abandoned,
|
||||
claims_unresolved=unresolved,
|
||||
claims_with_task_id=cl_row.with_task_id,
|
||||
claim_completion_rate=completion_rate,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ def test_metrics_empty_space(client):
|
|||
assert data["coordination"]["total_checkpoints"] == 0
|
||||
assert data["coordination"]["unique_agents"] == 0
|
||||
assert data["coordination"]["total_claims"] == 0
|
||||
assert data["coordination"]["claims_unresolved"] == 0
|
||||
assert data["state_quality"]["avg_decisions_per_checkpoint"] == 0.0
|
||||
assert data["branches"]["active"] == 0
|
||||
|
||||
|
|
@ -127,6 +128,7 @@ def test_metrics_claim_stats(client):
|
|||
assert data["coordination"]["total_claims"] == 3
|
||||
assert data["coordination"]["claims_done"] == 1
|
||||
assert data["coordination"]["claims_abandoned"] == 1
|
||||
assert data["coordination"]["claims_unresolved"] == 1
|
||||
assert data["coordination"]["claims_with_task_id"] == 1
|
||||
# Completion rate: 1 done / (1 done + 1 abandoned) = 0.5
|
||||
assert data["coordination"]["claim_completion_rate"] == 0.5
|
||||
|
|
|
|||
|
|
@ -924,10 +924,22 @@ def format_metrics(data: dict) -> str:
|
|||
parts.append(f"{cross} cross-agent continuation{'s' if cross != 1 else ''}")
|
||||
|
||||
claims_total = coord.get("total_claims", 0)
|
||||
claims_done = coord.get("claims_done", 0)
|
||||
claims_abandoned = coord.get("claims_abandoned", 0)
|
||||
resolved_claims = claims_done + claims_abandoned
|
||||
unresolved_claims = coord.get("claims_unresolved")
|
||||
if unresolved_claims is None:
|
||||
unresolved_claims = max(claims_total - resolved_claims, 0)
|
||||
rate = coord.get("claim_completion_rate")
|
||||
rate_str = f"{int(rate * 100)}% completion" if rate is not None else "no claims resolved"
|
||||
if rate is not None:
|
||||
rate_str = f"{resolved_claims} resolved ({int(rate * 100)}% done)"
|
||||
else:
|
||||
rate_str = f"{resolved_claims} resolved"
|
||||
task_id_claims = coord.get("claims_with_task_id", 0)
|
||||
parts.append(f"{claims_total} claims · {rate_str} · {task_id_claims} with task IDs")
|
||||
parts.append(
|
||||
f"{claims_total} claims · {rate_str} · "
|
||||
f"{unresolved_claims} unresolved · {task_id_claims} with task IDs"
|
||||
)
|
||||
parts.append("")
|
||||
|
||||
# State quality
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ def test_format_metrics_omits_empty_agent_distribution():
|
|||
|
||||
assert "0 checkpoints · 0 agents\n" in out
|
||||
assert "0 agents ()" not in out
|
||||
assert "0 claims · 0 resolved · 0 unresolved · 0 with task IDs" in out
|
||||
|
||||
|
||||
def test_format_metrics_names_checkpoint_task_counts():
|
||||
|
|
@ -31,3 +32,22 @@ def test_format_metrics_names_checkpoint_task_counts():
|
|||
})
|
||||
|
||||
assert "5 checkpoints with structured tasks · 5 checkpoints with task IDs" in out
|
||||
|
||||
|
||||
def test_format_metrics_claim_completion_names_resolved_denominator():
|
||||
out = format_metrics({
|
||||
"space_name": "claims",
|
||||
"coordination": {
|
||||
"total_claims": 3,
|
||||
"claims_done": 2,
|
||||
"claims_abandoned": 0,
|
||||
"claims_unresolved": 1,
|
||||
"claim_completion_rate": 1.0,
|
||||
"claims_with_task_id": 2,
|
||||
},
|
||||
"state_quality": {},
|
||||
"branches": {},
|
||||
})
|
||||
|
||||
assert "3 claims · 2 resolved (100% done) · 1 unresolved · 2 with task IDs" in out
|
||||
assert "100% completion" not in out
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue