oss_logs.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. """Query oss_logs for agent run visualizations."""
  2. from __future__ import annotations
  3. from typing import Any
  4. from supply_infra.db.repositories.oss_log_repo import OssLogRepository
  5. from supply_infra.db.session import get_session
  6. _DEMAND_AGENT = "demand_belong_category_agent"
  7. def _serialize_log(row: Any) -> dict[str, Any]:
  8. return {
  9. "id": row.id,
  10. "log_name": row.log_name,
  11. "agent_name": row.agent_name,
  12. "oss_path": row.oss_path,
  13. "create_time": row.create_time.isoformat(sep=" ", timespec="seconds")
  14. if row.create_time
  15. else None,
  16. }
  17. def list_agent_oss_logs(agent_name: str | None = None) -> dict[str, Any]:
  18. """List all Agent OSS logs, optionally filtered by exact agent name."""
  19. with get_session() as session:
  20. repo = OssLogRepository(session)
  21. rows = repo.list_by_agent_name(agent_name) if agent_name else repo.list_all()
  22. return {
  23. "items": [_serialize_log(row) for row in rows],
  24. "agents": repo.list_agent_names(),
  25. }
  26. def list_demand_belong_oss_logs() -> list[dict[str, Any]]:
  27. """List demand_belong_category_agent oss logs, newest first."""
  28. with get_session() as session:
  29. repo = OssLogRepository(session)
  30. rows = repo.list_by_agent_name(_DEMAND_AGENT)
  31. return [_serialize_log(row) for row in rows]