Skip to content

Commit 1e04131

Browse files
committed
more
1 parent 163aa2a commit 1e04131

1 file changed

Lines changed: 22 additions & 7 deletions

File tree

.github/scripts/pull-request-dashboard.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,25 @@ def parse_ts(s: str | None) -> datetime | None:
312312
return datetime.fromisoformat(s.replace("Z", "+00:00"))
313313

314314

315-
def days_since(ts: datetime | None) -> int | None:
315+
def seconds_since(ts: datetime | None) -> int | None:
316316
if ts is None:
317317
return None
318-
return max(0, (datetime.now(timezone.utc) - ts).days)
318+
return max(0, int((datetime.now(timezone.utc) - ts).total_seconds()))
319+
320+
321+
def activity_age(ts: datetime | None) -> str:
322+
seconds = seconds_since(ts)
323+
if seconds is None:
324+
return "?"
325+
minutes = seconds // 60
326+
if minutes < 1:
327+
return "<1m"
328+
if minutes < 60:
329+
return f"{minutes}m"
330+
hours = minutes // 60
331+
if hours < 24:
332+
return f"{hours}h"
333+
return f"{hours // 24}d"
319334

320335

321336
def truncate(s: str, n: int = MAX_BODY_CHARS) -> str:
@@ -519,7 +534,8 @@ def compute_facts(raw: dict[str, Any], author: str) -> dict[str, Any]:
519534
"ci_failing_count": len(failing),
520535
"ci_pending_count": len(pending),
521536
"conflicts": compute_conflicts(pr),
522-
"days_since_last_activity": days_since(last_activity_ts),
537+
"seconds_since_last_activity": seconds_since(last_activity_ts),
538+
"last_activity_age": activity_age(last_activity_ts),
523539
}
524540

525541

@@ -915,7 +931,7 @@ def render_diagnostics_section(results: dict[int, dict[str, Any]]) -> list[str]:
915931
lines.append(f"PR #{number}")
916932
lines.append(
917933
f"facts: approved={facts.get('approved')} conflicts={facts.get('conflicts')} "
918-
f"days_since_last_activity={facts.get('days_since_last_activity')}"
934+
f"last_activity_age={facts.get('last_activity_age')}"
919935
)
920936
lines.append("threads: " + " ".join(f"{k}={v}" for k, v in counts.items()))
921937
for c in result.get("classifications") or []:
@@ -957,7 +973,7 @@ def render_markdown_compact(
957973
def row_sort_key(pr: dict[str, Any]) -> tuple[int, int]:
958974
res = results.get(pr["number"]) or {}
959975
facts = res.get("facts") or {}
960-
activity = facts.get("days_since_last_activity")
976+
activity = facts.get("seconds_since_last_activity")
961977
return (activity if isinstance(activity, int) else -1, pr["number"])
962978

963979
for side in SIDE_ORDER:
@@ -976,8 +992,7 @@ def row_sort_key(pr: dict[str, Any]) -> tuple[int, int]:
976992
res = results.get(number) or {}
977993
facts = res.get("facts") or {}
978994
author = facts.get("author") or actor_login(pr.get("author") or {})
979-
activity = facts.get("days_since_last_activity")
980-
activity_cell = "?" if activity is None else f"{activity}d"
995+
activity_cell = facts.get("last_activity_age") or "?"
981996
pr_cell = f"[{title} (#{number})]({url})"
982997
if facts.get("approved"):
983998
pr_cell += " ✅"

0 commit comments

Comments
 (0)