demand_grade.py 1019 B

12345678910111213141516171819202122232425
  1. """Load demand_grade rows (expanded one row per category) for the category tree UI."""
  2. from __future__ import annotations
  3. from typing import Any
  4. from supply_infra.db.repositories.demand_grade_category_rel_repo import (
  5. DemandGradeCategoryRelRepository,
  6. )
  7. from supply_infra.db.repositories.demand_grade_repo import DemandGradeRepository
  8. from supply_infra.db.session import get_session
  9. def list_demand_grades(biz_dt: str | None = None) -> list[dict[str, Any]]:
  10. """
  11. Return demand_grade rows joined with demand_grade_category_rel, one row per
  12. (demand_grade, category_id) pair — mirrors the shape the frontend already
  13. groups by category_id.
  14. biz_dt defaults to the latest business date present in demand_grade.
  15. """
  16. with get_session() as session:
  17. resolved_biz_dt = biz_dt or DemandGradeRepository(session).get_latest_biz_dt()
  18. if not resolved_biz_dt:
  19. return []
  20. return DemandGradeCategoryRelRepository(session).list_items_with_category(resolved_biz_dt)