From 16adca364620f4464b931ac1c25dd079f3ea7486 Mon Sep 17 00:00:00 2001 From: thug0bin Date: Sat, 28 Feb 2026 13:38:47 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20KIMS=20=EC=83=81=ED=98=B8=EC=9E=91?= =?UTF-8?q?=EC=9A=A9=20=EB=A1=9C=EA=B7=B8=20=EB=B7=B0=EC=96=B4=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=B6=94=EA=B0=80=20(/admin/kims-logs)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app.py | 63 +++ backend/templates/admin_kims_logs.html | 563 +++++++++++++++++++++++++ 2 files changed, 626 insertions(+) create mode 100644 backend/templates/admin_kims_logs.html diff --git a/backend/app.py b/backend/app.py index 005b878..8d5a8d4 100644 --- a/backend/app.py +++ b/backend/app.py @@ -4120,6 +4120,69 @@ def kill_process_on_port(port: int) -> bool: # KIMS 약물 상호작용 API # ═══════════════════════════════════════════════════════════ +@app.route('/admin/kims-logs') +def admin_kims_logs(): + """KIMS 상호작용 로그 뷰어 페이지""" + return render_template('admin_kims_logs.html') + + +@app.route('/api/kims/logs') +def api_kims_logs(): + """KIMS 로그 목록 조회""" + from db.kims_logger import get_recent_logs + + limit = int(request.args.get('limit', 100)) + status = request.args.get('status', '') + interaction = request.args.get('interaction', '') + date = request.args.get('date', '') + + try: + logs = get_recent_logs(limit=limit) + + # 필터링 + if status: + logs = [l for l in logs if l['api_status'] == status] + if interaction == 'has': + logs = [l for l in logs if l['interaction_count'] > 0] + elif interaction == 'severe': + logs = [l for l in logs if l['has_severe_interaction'] == 1] + elif interaction == 'none': + logs = [l for l in logs if l['interaction_count'] == 0] + if date: + logs = [l for l in logs if l['created_at'] and l['created_at'].startswith(date)] + + return jsonify({'success': True, 'logs': logs}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@app.route('/api/kims/logs/stats') +def api_kims_logs_stats(): + """KIMS 로그 통계""" + from db.kims_logger import get_stats + + try: + stats = get_stats() + return jsonify({'success': True, 'stats': stats}) + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + +@app.route('/api/kims/logs/') +def api_kims_log_detail(log_id): + """KIMS 로그 상세 조회""" + from db.kims_logger import get_log_detail + + try: + log = get_log_detail(log_id) + if log: + return jsonify({'success': True, 'log': log}) + else: + return jsonify({'success': False, 'error': '로그를 찾을 수 없습니다'}), 404 + except Exception as e: + return jsonify({'success': False, 'error': str(e)}) + + @app.route('/api/kims/interaction-check', methods=['POST']) def api_kims_interaction_check(): """ diff --git a/backend/templates/admin_kims_logs.html b/backend/templates/admin_kims_logs.html new file mode 100644 index 0000000..744b907 --- /dev/null +++ b/backend/templates/admin_kims_logs.html @@ -0,0 +1,563 @@ + + + + + + KIMS 상호작용 로그 - 청춘약국 + + + + + + +
+ +

🔬 KIMS 상호작용 로그

+

약물 상호작용 체크 API 호출 기록 · AI 학습용 데이터

+
+ +
+ +
+
+
총 호출
+
-
+
+
+
성공
+
-
+
+
+
상호작용 발견
+
-
+
+
+
심각 경고
+
-
+
+
+
평균 응답
+
-
+
밀리초
+
+
+ + +
+ + + + +
+ + +
+ + + + + + + + + + + + + + + + +
시간처방번호약품상호작용상태응답
로딩 중...
+
+
+ + + +