# -*- coding: utf-8 -*-
"""지오영 주문 확정 API 테스트"""

import requests
from bs4 import BeautifulSoup
import asyncio
from playwright.async_api import async_playwright
import time

async def get_cookies():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)
        page = await browser.new_page()
        
        await page.goto('https://gwn.geoweb.kr/Member/Login')
        await page.fill('input[type="text"]', '7390')
        await page.fill('input[type="password"]', 'trajet6640')
        await page.click('button, input[type="submit"]')
        await page.wait_for_load_state('networkidle')
        
        cookies = await page.context.cookies()
        await browser.close()
        return cookies

def test():
    print("="*60)
    print("지오영 전체 주문 플로우 테스트")
    print("="*60)
    
    # 1. 로그인
    print("\n1. 로그인...")
    start = time.time()
    cookies = asyncio.run(get_cookies())
    print(f"   완료: {time.time()-start:.1f}초")
    
    session = requests.Session()
    for c in cookies:
        session.cookies.set(c['name'], c['value'])
    
    session.headers.update({
        'User-Agent': 'Mozilla/5.0',
        'X-Requested-With': 'XMLHttpRequest'
    })
    
    # 2. 검색 → productCode 획득
    print("\n2. 제품 검색...")
    start = time.time()
    search_resp = session.post('https://gwn.geoweb.kr/Home/PartialSearchProduct', data={
        'srchText': '661700390'
    })
    soup = BeautifulSoup(search_resp.text, 'html.parser')
    product_div = soup.find('div', class_='div-product-detail')
    lis = product_div.find_all('li') if product_div else []
    product_code = lis[0].get_text(strip=True) if lis else None
    print(f"   productCode: {product_code}")
    print(f"   완료: {time.time()-start:.1f}초")
    
    # 3. 장바구니 추가
    print("\n3. 장바구니 추가...")
    start = time.time()
    cart_resp = session.post('https://gwn.geoweb.kr/Home/DataCart/add', data={
        'productCode': product_code,
        'moveCode': '',
        'orderQty': 1
    })
    result = cart_resp.json()
    print(f"   result: {result.get('result')}")
    print(f"   완료: {time.time()-start:.1f}초")
    
    if result.get('result') != 1:
        print(f"   ❌ 장바구니 추가 실패: {result.get('msg')}")
        return
    
    # 4. 주문 확정 (실제 주문!) - 테스트이므로 실행 안함
    print("\n4. 주문 확정 API 테스트...")
    print("   ⚠️ 실제 주문이 들어가므로 테스트 중지!")
    print("   API: POST /Home/DataOrder")
    print("   params: { p_desc: '메모' }")
    
    # 실제 주문 코드 (주석 처리)
    # order_resp = session.post('https://gwn.geoweb.kr/Home/DataOrder', data={
    #     'p_desc': '테스트 주문'
    # })
    # print(f"   응답: {order_resp.text[:200]}")
    
    # 5. 장바구니 비우기 (테스트용)
    print("\n5. 장바구니 비우기...")
    # 장바구니에서 삭제
    clear_resp = session.post('https://gwn.geoweb.kr/Home/DataCart/delAll')
    print(f"   상태: {clear_resp.status_code}")
    
    print("\n" + "="*60)
    print("✅ 전체 API 플로우 확인 완료!")
    print("")
    print("1. 검색: POST /Home/PartialSearchProduct")
    print("2. 장바구니: POST /Home/DataCart/add")
    print("3. 주문확정: POST /Home/DataOrder")
    print("="*60)

if __name__ == "__main__":
    test()
