query_latest_biz_dt.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. """
  2. 查询热度相关表的最新共有业务日,供未指定 biz_dt 时先探测可用日期。
  3. """
  4. from __future__ import annotations
  5. import logging
  6. from agents.generate_demand_agent.tools.dim_constants import get_latest_common_biz_dt
  7. from supply_agent.tools import tool
  8. from supply_infra.db.session import get_session
  9. logger = logging.getLogger(__name__)
  10. @tool
  11. def query_latest_biz_dt() -> str:
  12. """
  13. 查询两表均有数据的最新业务日(biz_dt)。
  14. 当用户未指定 biz_dt、或不确定该用哪一天时,**应先调用本工具**,
  15. 再将其返回的 biz_dt 传给后续查询与落库工具。
  16. 共有业务日 = category_tree_weight 与 demand_popularity_stats 都存在的最新日期。
  17. Returns:
  18. 一个确切的 biz_dt,例如:
  19. biz_dt=20260715
  20. 若无共有日期则返回错误说明。
  21. """
  22. try:
  23. with get_session() as session:
  24. biz_dt = get_latest_common_biz_dt(session)
  25. if not biz_dt:
  26. message = "暂无两表共有业务日(category_tree_weight 与 demand_popularity_stats 无重叠日期)"
  27. logger.info("query_latest_biz_dt completed: %s", message)
  28. return message
  29. message = f"biz_dt={biz_dt}"
  30. logger.info("query_latest_biz_dt completed: %s", message)
  31. return message
  32. except Exception as e:
  33. logger.error("query_latest_biz_dt failed: %s", e, exc_info=True)
  34. return f"查询最新业务日失败: {e}"
  35. def main() -> None:
  36. """本地手动验证。"""
  37. print(query_latest_biz_dt())
  38. if __name__ == "__main__":
  39. main()