o2o-negosium-original/agent/tools/show_logs.py

37 lines
1.2 KiB
Python

"""learning.experience_logs 를 company_id 별로 집계 출력 (DB 격리 확인용).
실행: cd agent && APP_ENV=local python -m tools.show_logs
"""
import asyncio
from sqlalchemy import func, select
from common.database.db_session_manager import DB_SESSION_MNG
from common.database.model.models import ExperienceLog
from common.enums import DBType, DBWRType
async def main():
def q(s):
stmt = (
select(ExperienceLog.company_id, func.count().label("n"), func.max(ExperienceLog.reward).label("max_reward"))
.group_by(ExperienceLog.company_id)
.order_by(ExperienceLog.company_id)
)
return DB_SESSION_MNG.execute(s, stmt)
err, rows = await DB_SESSION_MNG.execute_lambda(DBType.MAIN.value, DBWRType.DB_READ.value, q)
print("company_id count max_reward")
print("-" * 44)
for company_id, n, max_reward in rows:
mr = f"{max_reward:+.4f}" if max_reward is not None else " n/a "
print(f"{company_id:<20} {n:>6} {mr}")
if not rows:
print("(비어있음 — 먼저 tools.console_demo 를 실행하세요)")
await DB_SESSION_MNG.dispose_all()
if __name__ == "__main__":
asyncio.run(main())