Initial commit: import from sinmb79/Gov-chat-bot
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
import json
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class IdempotencyCache:
|
||||
def __init__(self, redis_client):
|
||||
self.redis = redis_client
|
||||
self.ttl = 60 # 기본 TTL (Phase 0B에서 settings로 교체 예정)
|
||||
|
||||
def _key(self, tenant_id: str, request_id: str) -> str:
|
||||
return f"idempotency:{tenant_id}:{request_id}"
|
||||
|
||||
async def get(self, tenant_id: str, request_id: Optional[str]) -> Optional[dict]:
|
||||
if request_id is None:
|
||||
return None
|
||||
raw = await self.redis.get(self._key(tenant_id, request_id))
|
||||
if raw is None:
|
||||
return None
|
||||
return json.loads(raw)
|
||||
|
||||
async def set(self, tenant_id: str, request_id: Optional[str], result_dict: dict) -> None:
|
||||
if request_id is None:
|
||||
return
|
||||
await self.redis.setex(
|
||||
self._key(tenant_id, request_id),
|
||||
self.ttl,
|
||||
json.dumps(result_dict),
|
||||
)
|
||||
Reference in New Issue
Block a user