diff --git a/backend/app.py b/backend/app.py index 1d67a33..6d9815d 100644 --- a/backend/app.py +++ b/backend/app.py @@ -1858,10 +1858,13 @@ def admin(): recent_users = [] # MSSQL 세션 (조제 이력 확인용) + base_session = None + pres_session = None try: - mssql_session = db_manager.get_session('PM_PRES') + base_session = db_manager.get_session('PM_BASE') + pres_session = db_manager.get_session('PM_PRES') except: - mssql_session = None + pass for user in recent_users_raw: user_dict = dict(user) @@ -1870,19 +1873,29 @@ def admin(): # 조제 이력 확인 (MSSQL) user_dict['has_prescription'] = False - if mssql_session and user['phone']: + if base_session and pres_session and user['phone']: try: phone_clean = user['phone'].replace('-', '').replace(' ', '') - pres_check = mssql_session.execute(text(""" - SELECT TOP 1 p.CusCode - FROM PM_BASE.dbo.CD_PERSON p - INNER JOIN PS_main ps ON p.CUSCODE = ps.CusCode - WHERE REPLACE(REPLACE(p.PHONE, '-', ''), ' ', '') = :phone - OR REPLACE(REPLACE(p.PHONE2, '-', ''), ' ', '') = :phone - OR REPLACE(REPLACE(p.TEL_NO, '-', ''), ' ', '') = :phone - """), {'phone': phone_clean}).fetchone() - if pres_check: - user_dict['has_prescription'] = True + + # 1단계: PM_BASE에서 전화번호로 CUSCODE 조회 + cuscode_query = text(""" + SELECT TOP 1 CUSCODE + FROM CD_PERSON + WHERE REPLACE(REPLACE(PHONE, '-', ''), ' ', '') = :phone + OR REPLACE(REPLACE(TEL_NO, '-', ''), ' ', '') = :phone + OR REPLACE(REPLACE(PHONE2, '-', ''), ' ', '') = :phone + """) + cus_row = base_session.execute(cuscode_query, {'phone': phone_clean}).fetchone() + + if cus_row: + # 2단계: PM_PRES에서 CUSCODE로 조제 기록 확인 + pres_check = pres_session.execute(text(""" + SELECT TOP 1 PreSerial FROM PS_main WHERE CusCode = :cuscode + """), {'cuscode': cus_row.CUSCODE}).fetchone() + + if pres_check: + user_dict['has_prescription'] = True + except Exception as e: logging.warning(f"조제 이력 확인 실패 (user {user['id']}): {e}")