CarFinanceAgent / chatbot /tools /hgs_tool.py
emreceniklioglu
Initial commit: LangGraph multi-agent car finance chatbot
49102bb
Raw
History Blame Contribute Delete
1.69 kB
"""
tools/hgs_tool.py — HGS Mock Servisi
AGENTIC PATTERN: Tool Use — Scoped Access
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Çapraz satış agent'ı YALNIZCA bu tool'a erişebilir.
Ön Başvuru DB'ye dokunamaz (least-privilege prensibi).
Gerçek entegrasyonda: Karayolları HGS API çağrısı yapılır.
Burada: in-memory mock (öğrenme amaçlı).
"""
import uuid
import sqlite3
from datetime import datetime
from langchain_core.tools import tool
from config import DB_PATH
@tool
def check_hgs_status(session_id: str) -> dict:
"""
Müşterinin aktif HGS kaydı var mı kontrol eder.
Aktif HGS varsa çapraz satış adımı gösterilmez.
Returns:
{"has_active_hgs": bool}
"""
# Mock: session_id'e göre rastgele sonuç (gerçekte CRM'e sorgu)
# Basitlik için: id'nin son hanesi çifts → HGS var
has_hgs = (ord(session_id[-1]) % 2 == 0)
return {"has_active_hgs": has_hgs}
@tool
def register_hgs(session_id: str, application_id: str) -> dict:
"""
HGS başvurusunu kaydeder.
Returns:
{"success": bool, "hgs_id": str, "error": str | None}
"""
hgs_id = "HGS-" + str(uuid.uuid4())[:6].upper()
try:
conn = sqlite3.connect(DB_PATH)
conn.execute(
"INSERT INTO hgs_registrations VALUES (?,?,?,?,?)",
(hgs_id, application_id, session_id, datetime.utcnow().isoformat(), "active"),
)
conn.commit()
conn.close()
return {"success": True, "hgs_id": hgs_id, "error": None}
except Exception as e:
return {"success": False, "hgs_id": None, "error": str(e)}