feat: KIMS API 호출 SQLite 로깅 (AI 학습용 데이터 수집)
This commit is contained in:
@@ -4140,11 +4140,16 @@ def api_kims_interaction_check():
|
||||
}
|
||||
"""
|
||||
import requests as http_requests
|
||||
from db.kims_logger import log_kims_call
|
||||
import time as time_module
|
||||
|
||||
start_time = time_module.time()
|
||||
|
||||
try:
|
||||
data = request.get_json()
|
||||
drug_codes = data.get('drug_codes', [])
|
||||
pre_serial = data.get('pre_serial', '')
|
||||
user_id = data.get('user_id') # 회원 ID (있으면)
|
||||
|
||||
if len(drug_codes) < 2:
|
||||
return jsonify({
|
||||
@@ -4202,6 +4207,10 @@ def api_kims_interaction_check():
|
||||
)
|
||||
|
||||
if kims_response.status_code != 200:
|
||||
log_kims_call(pre_serial=pre_serial, drug_codes=kd_codes, drug_names=[d['name'] for d in drugs_info],
|
||||
api_status='ERROR', http_status=kims_response.status_code,
|
||||
response_time_ms=int((time_module.time() - start_time) * 1000),
|
||||
error_message=f'HTTP {kims_response.status_code}')
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'error': f'KIMS API 응답 오류: HTTP {kims_response.status_code}',
|
||||
@@ -4211,6 +4220,10 @@ def api_kims_interaction_check():
|
||||
kims_data = kims_response.json()
|
||||
|
||||
if kims_data.get('Message') != 'SUCCESS':
|
||||
log_kims_call(pre_serial=pre_serial, drug_codes=kd_codes, drug_names=[d['name'] for d in drugs_info],
|
||||
api_status='ERROR', http_status=200,
|
||||
response_time_ms=int((time_module.time() - start_time) * 1000),
|
||||
error_message=f'KIMS: {kims_data.get("Message")}', response_raw=kims_data)
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'error': f'KIMS API 처리 실패: {kims_data.get("Message", "알 수 없는 오류")}',
|
||||
@@ -4218,12 +4231,17 @@ def api_kims_interaction_check():
|
||||
}), 502
|
||||
|
||||
except http_requests.Timeout:
|
||||
log_kims_call(pre_serial=pre_serial, drug_codes=kd_codes, drug_names=[d['name'] for d in drugs_info],
|
||||
api_status='TIMEOUT', response_time_ms=10000, error_message='10초 초과')
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'error': 'KIMS API 타임아웃 (10초 초과)',
|
||||
'drugs_checked': drugs_info
|
||||
}), 504
|
||||
except Exception as kims_err:
|
||||
log_kims_call(pre_serial=pre_serial, drug_codes=kd_codes, drug_names=[d['name'] for d in drugs_info],
|
||||
api_status='ERROR', response_time_ms=int((time_module.time() - start_time) * 1000),
|
||||
error_message=str(kims_err))
|
||||
logging.error(f"KIMS API 호출 실패: {kims_err}")
|
||||
return jsonify({
|
||||
'success': False,
|
||||
@@ -4276,6 +4294,27 @@ def api_kims_interaction_check():
|
||||
for drug in drugs_info:
|
||||
drug['has_interaction'] = drug['kd_code'] in interaction_drug_codes
|
||||
|
||||
# 응답 시간 계산
|
||||
response_time_ms = int((time_module.time() - start_time) * 1000)
|
||||
|
||||
# SQLite 로깅
|
||||
try:
|
||||
log_id = log_kims_call(
|
||||
pre_serial=pre_serial,
|
||||
user_id=user_id,
|
||||
source='admin',
|
||||
drug_codes=kd_codes,
|
||||
drug_names=[d['name'] for d in drugs_info],
|
||||
api_status='SUCCESS',
|
||||
http_status=200,
|
||||
response_time_ms=response_time_ms,
|
||||
interactions=interactions,
|
||||
response_raw=kims_data
|
||||
)
|
||||
logging.info(f"KIMS 로그 저장: ID={log_id}, {len(kd_codes)}개 약품, {len(interactions)}건 상호작용")
|
||||
except Exception as log_err:
|
||||
logging.warning(f"KIMS 로깅 실패 (무시): {log_err}")
|
||||
|
||||
logging.info(f"KIMS 상호작용 체크 완료: {len(kd_codes)}개 약품, {len(interactions)}건 발견 (처방: {pre_serial})")
|
||||
|
||||
return jsonify({
|
||||
@@ -4289,6 +4328,20 @@ def api_kims_interaction_check():
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
# 에러 로깅
|
||||
response_time_ms = int((time_module.time() - start_time) * 1000)
|
||||
try:
|
||||
log_kims_call(
|
||||
pre_serial=pre_serial if 'pre_serial' in dir() else None,
|
||||
source='admin',
|
||||
drug_codes=drug_codes if 'drug_codes' in dir() else [],
|
||||
api_status='ERROR',
|
||||
response_time_ms=response_time_ms,
|
||||
error_message=str(e)
|
||||
)
|
||||
except:
|
||||
pass
|
||||
|
||||
logging.error(f"KIMS 상호작용 체크 오류: {e}")
|
||||
return jsonify({
|
||||
'success': False,
|
||||
|
||||
Reference in New Issue
Block a user