| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- """
- 查询需求分级相关三张表各自的最新业务日,供未指定 biz_dt 时先探测可用日期。
- """
- from __future__ import annotations
- import logging
- from supply_agent.tools import tool
- from supply_infra.db.repositories.category_tree_weight_repo import CategoryTreeWeightRepository
- from supply_infra.db.repositories.demand_popularity_stats_repo import (
- DemandPopularityStatsRepository,
- )
- from supply_infra.db.repositories.multi_demand_pool_di_repo import MultiDemandPoolDiRepository
- from supply_infra.db.session import get_session
- logger = logging.getLogger(__name__)
- @tool
- def query_latest_biz_dt() -> str:
- """
- 查询需求池、类目树权重、需求词热度统计三张表各自的最新业务日。
- 三张表由不同 job 产出,可能不完全同步(权重/热度统计可能滞后于需求池)。
- 未指定 biz_dt 时应先调用本工具,再根据返回结果决定分级使用哪个业务日
- (通常以需求池的最新日为准;若权重/热度统计当日还没跑出来,可退到它们各自的最新日)。
- Returns:
- 三张表各自的最新业务日,例如:
- multi_demand_pool_di=20260716
- category_tree_weight=20260716
- demand_popularity_stats=20260715
- (某表暂无数据时显示为 无数据)
- """
- try:
- with get_session() as session:
- pool_dt = MultiDemandPoolDiRepository(session).get_latest_biz_dt()
- weight_dt = CategoryTreeWeightRepository(session).get_latest_biz_dt()
- stats_dt = DemandPopularityStatsRepository(session).get_latest_biz_dt()
- lines = [
- f"multi_demand_pool_di={pool_dt or '无数据'}",
- f"category_tree_weight={weight_dt or '无数据'}",
- f"demand_popularity_stats={stats_dt or '无数据'}",
- ]
- message = "\n".join(lines)
- logger.info("query_latest_biz_dt completed: %s", message.replace("\n", " "))
- return message
- except Exception as e:
- logger.error("query_latest_biz_dt failed: %s", e, exc_info=True)
- return f"查询最新业务日失败: {e}"
- def main() -> None:
- print(query_latest_biz_dt())
- if __name__ == "__main__":
- main()
|