Get lightweight request logs for list view
(
limit: int = 100,
token: str = Depends(verify_admin_token)
)
| 1474 | |
| 1475 | @router.get("/api/logs") |
| 1476 | async def get_logs( |
| 1477 | limit: int = 100, |
| 1478 | token: str = Depends(verify_admin_token) |
| 1479 | ): |
| 1480 | """Get lightweight request logs for list view""" |
| 1481 | limit = max(1, min(limit, 100)) |
| 1482 | logs = await db.get_logs(limit=limit, include_payload=False) |
| 1483 | |
| 1484 | result = [] |
| 1485 | for log in logs: |
| 1486 | raw_status_code = log.get("status_code") |
| 1487 | try: |
| 1488 | status_code = int(raw_status_code) if raw_status_code is not None else None |
| 1489 | except (TypeError, ValueError): |
| 1490 | status_code = None |
| 1491 | result.append({ |
| 1492 | "id": log.get("id"), |
| 1493 | "token_id": log.get("token_id"), |
| 1494 | "token_email": log.get("token_email"), |
| 1495 | "token_username": log.get("token_username"), |
| 1496 | "operation": log.get("operation"), |
| 1497 | "status_code": status_code if status_code is not None else raw_status_code, |
| 1498 | "duration": log.get("duration"), |
| 1499 | "status_text": log.get("status_text") or "", |
| 1500 | "progress": log.get("progress") or 0, |
| 1501 | "created_at": log.get("created_at"), |
| 1502 | "updated_at": log.get("updated_at"), |
| 1503 | "error_summary": _extract_error_summary(log.get("response_body_excerpt")) if status_code is not None and status_code >= 400 else "", |
| 1504 | }) |
| 1505 | return result |
| 1506 | |
| 1507 | |
| 1508 | @router.get("/api/logs/{log_id}") |
nothing calls this directly
no test coverage detected