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,44 @@
|
||||
"""
|
||||
민원 이력 DB 저장.
|
||||
개인정보 원칙: utterance_masked(마스킹), user_key(SHA-256 해시 16자리).
|
||||
원문 미저장.
|
||||
"""
|
||||
from typing import Optional
|
||||
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.models.complaint import ComplaintLog
|
||||
from app.services.masking import mask_text, hash_user_key
|
||||
from app.services.routing import RoutingResult
|
||||
|
||||
|
||||
async def log_complaint(
|
||||
db: AsyncSession,
|
||||
tenant_id: str,
|
||||
raw_utterance: str,
|
||||
raw_user_id: str,
|
||||
result: RoutingResult,
|
||||
channel: str = "kakao",
|
||||
) -> ComplaintLog:
|
||||
"""
|
||||
민원 이력을 ComplaintLog에 기록.
|
||||
- utterance: 마스킹 후 저장
|
||||
- user_key: SHA-256 해시 16자리
|
||||
- 원문 미저장
|
||||
"""
|
||||
entry = ComplaintLog(
|
||||
tenant_id=tenant_id,
|
||||
user_key=hash_user_key(raw_user_id),
|
||||
utterance_masked=mask_text(raw_utterance)[:1000],
|
||||
channel=channel,
|
||||
request_id=result.request_id,
|
||||
response_tier=result.tier,
|
||||
response_source=result.source,
|
||||
faq_id=result.faq_id,
|
||||
doc_id=result.doc_id,
|
||||
response_ms=result.elapsed_ms,
|
||||
is_timeout=result.is_timeout,
|
||||
)
|
||||
db.add(entry)
|
||||
await db.commit()
|
||||
return entry
|
||||
Reference in New Issue
Block a user