# -*- coding: utf-8 -*-
"""
지오영 "전체삭제" 버튼 분석 - Playwright로 실제 버튼 클릭 시 API 확인
"""
import asyncio
import os
from dotenv import load_dotenv
load_dotenv(r'c:\Users\청춘약국\source\pharmacy-wholesale-api\.env')

async def analyze_delete_all():
    from playwright.async_api import async_playwright
    
    username = os.getenv('GEOYOUNG_USER_ID')
    password = os.getenv('GEOYOUNG_PASSWORD')
    
    if not username or not password:
        print("❌ GEOYOUNG_USER_ID, GEOYOUNG_PASSWORD 환경변수 필요")
        return
    
    print("=" * 60)
    print("지오영 '전체삭제' 버튼 분석")
    print("=" * 60)
    
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=False)  # 보이게
        page = await browser.new_page()
        
        # 네트워크 요청 감시
        requests_log = []
        
        def log_request(request):
            if 'Cart' in request.url or 'cart' in request.url or 'del' in request.url.lower():
                requests_log.append({
                    'method': request.method,
                    'url': request.url,
                    'post_data': request.post_data
                })
                print(f"🔗 {request.method} {request.url}")
                if request.post_data:
                    print(f"   POST data: {request.post_data}")
        
        page.on('request', log_request)
        
        # 1. 로그인
        print("\n1️⃣ 로그인 중...")
        await page.goto("https://gwn.geoweb.kr/Member/Login")
        await page.fill('input[type="text"]', username)
        await page.fill('input[type="password"]', password)
        await page.click('button[type="submit"], input[type="submit"], .btn-login')
        await page.wait_for_load_state('networkidle', timeout=15000)
        print("✅ 로그인 완료")
        
        # 2. 주문 페이지로 이동 (장바구니 표시됨)
        print("\n2️⃣ 주문 페이지로 이동...")
        await page.goto("https://gwn.geoweb.kr/Home/Order")
        await page.wait_for_load_state('networkidle', timeout=15000)
        
        # 3. 장바구니 확인
        print("\n3️⃣ 장바구니 확인...")
        await asyncio.sleep(2)
        
        # 스크린샷
        await page.screenshot(path='geo_cart_before.png')
        print("📸 스크린샷 저장: geo_cart_before.png")
        
        # 4. "전체삭제" 버튼 찾기
        print("\n4️⃣ '전체삭제' 버튼 찾기...")
        
        # 가능한 선택자들
        selectors = [
            'button:has-text("전체삭제")',
            'a:has-text("전체삭제")',
            '.btn-del-all',
            '#btnDelAll',
            '[onclick*="delAll"]',
            'button:has-text("전체 삭제")',
            'button:has-text("삭제")',
        ]
        
        delete_btn = None
        for sel in selectors:
            try:
                btn = page.locator(sel).first
                if await btn.count() > 0:
                    print(f"  ✅ 버튼 발견: {sel}")
                    # 버튼의 HTML 확인
                    btn_html = await btn.evaluate('el => el.outerHTML')
                    print(f"     HTML: {btn_html[:200]}...")
                    delete_btn = btn
                    break
            except:
                pass
        
        if not delete_btn:
            print("  ❌ 전체삭제 버튼을 찾지 못함")
            # 페이지 HTML에서 삭제 관련 요소 검색
            html = await page.content()
            if '전체삭제' in html or 'delAll' in html:
                print("  ⚠️ 페이지에 관련 텍스트는 있음. 수동 확인 필요")
            await browser.close()
            return
        
        # 5. 버튼 클릭 (네트워크 요청 감시)
        print("\n5️⃣ '전체삭제' 버튼 클릭...")
        requests_log.clear()
        
        try:
            await delete_btn.click()
            await asyncio.sleep(2)
            
            # confirm 다이얼로그 처리
            page.on('dialog', lambda dialog: asyncio.create_task(dialog.accept()))
            
            await page.wait_for_load_state('networkidle', timeout=5000)
        except Exception as e:
            print(f"  ⚠️ 클릭 중 오류: {e}")
        
        # 6. 캡처된 요청 출력
        print("\n6️⃣ 캡처된 API 요청:")
        for req in requests_log:
            print(f"  📤 {req['method']} {req['url']}")
            if req['post_data']:
                print(f"     Body: {req['post_data']}")
        
        # 스크린샷
        await page.screenshot(path='geo_cart_after.png')
        print("\n📸 스크린샷 저장: geo_cart_after.png")
        
        print("\n잠시 대기 (확인용)...")
        await asyncio.sleep(5)
        
        await browser.close()
        print("\n✅ 완료")

if __name__ == "__main__":
    asyncio.run(analyze_delete_all())
