41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
"""Check SLA state of tickets and categories"""
|
|
import asyncio
|
|
import os
|
|
import sys
|
|
|
|
sys.path.insert(0, '/app')
|
|
os.chdir('/app')
|
|
|
|
from sqlalchemy.ext.asyncio import create_async_engine
|
|
from sqlalchemy import text
|
|
|
|
|
|
async def run():
|
|
database_url = os.environ.get('DATABASE_URL', 'postgresql+asyncpg://postgres:postgres@db:5432/servicemanager')
|
|
engine = create_async_engine(database_url)
|
|
|
|
async with engine.connect() as c:
|
|
print("=== CATEGORIES SLA HOURS ===")
|
|
r = await c.execute(text(
|
|
"SELECT name, sla_response_hours, sla_resolution_hours "
|
|
"FROM ticket_categories "
|
|
"ORDER BY name"
|
|
))
|
|
for row in r.fetchall():
|
|
print(f" {row[0]}: response={row[1]}h, resolution={row[2]}h")
|
|
|
|
print("\n=== TICKETS SLA DATES ===")
|
|
r2 = await c.execute(text(
|
|
"SELECT ticket_number, category_id, sla_response_due, sla_resolution_due "
|
|
"FROM tickets "
|
|
"ORDER BY created_at "
|
|
"LIMIT 10"
|
|
))
|
|
for row in r2.fetchall():
|
|
print(f" {row[0]}: cat={str(row[1])[:8] if row[1] else 'None'}, sla_resp={row[2]}, sla_res={row[3]}")
|
|
|
|
await engine.dispose()
|
|
|
|
|
|
asyncio.run(run())
|