pharmacy-pos-qr-system/backend/test_geoyoung_api.py
thug0bin c1596a6d35 feat: 도매상 API 통합 및 스키마 업데이트
- wholesale 패키지 연동 (SooinSession, GeoYoungSession)
- Flask Blueprint 분리 (sooin_api.py, geoyoung_api.py)
- order_context 스키마 확장 (wholesaler_id, internal_code 등)
- 수인약품 개별 취소 기능 (cancel_item, restore_item)
- 문서 추가: WHOLESALE_API_INTEGRATION.md
- 테스트 스크립트들
2026-03-06 11:50:46 +09:00

113 lines
3.9 KiB
Python

# -*- coding: utf-8 -*-
"""지오영 API 직접 테스트"""
import asyncio
from playwright.async_api import async_playwright
import json
async def capture_cart_api():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page()
# 요청/응답 캡처
cart_requests = []
async def handle_request(request):
if 'Cart' in request.url or 'Order' in request.url or 'Add' in request.url:
cart_requests.append({
'url': request.url,
'method': request.method,
'headers': dict(request.headers),
'data': request.post_data
})
page.on('request', handle_request)
# 로그인
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')
print("로그인 완료")
# 쿠키 저장
cookies = await page.context.cookies()
print(f"쿠키: {[c['name'] for c in cookies]}")
# 검색 페이지
await page.goto('https://gwn.geoweb.kr/Home/Index')
await page.wait_for_timeout(2000)
# 검색 (AJAX)
await page.evaluate('''
$.ajax({
url: "/Home/PartialSearchProduct",
type: "POST",
data: {srchText: "643104281"},
success: function(data) {
console.log("검색 결과:", data.substring(0, 500));
}
});
''')
await page.wait_for_timeout(2000)
# 장바구니 추가 시도 (JavaScript로)
result = await page.evaluate('''
async function testCart() {
// 장바구니 추가 함수 찾기
if (typeof AddCart !== 'undefined') {
return "AddCart 함수 존재";
}
if (typeof fnAddCart !== 'undefined') {
return "fnAddCart 함수 존재";
}
// 전역 함수 목록
var funcs = [];
for (var key in window) {
if (typeof window[key] === 'function' &&
(key.toLowerCase().includes('cart') ||
key.toLowerCase().includes('order') ||
key.toLowerCase().includes('add'))) {
funcs.push(key);
}
}
return "발견된 함수: " + funcs.join(", ");
}
return testCart();
''')
print(f"JavaScript 분석: {result}")
# 페이지 소스에서 장바구니 관련 스크립트 찾기
scripts = await page.evaluate('''
var scripts = document.querySelectorAll('script');
var result = [];
scripts.forEach(function(s) {
var text = s.textContent || s.innerText || '';
if (text.includes('Cart') || text.includes('AddProduct')) {
result.push(text.substring(0, 1000));
}
});
return result;
''')
await browser.close()
print("\n" + "="*60)
print("캡처된 Cart/Order 요청:")
print("="*60)
for r in cart_requests:
print(json.dumps(r, indent=2, ensure_ascii=False))
print("\n" + "="*60)
print("장바구니 관련 스크립트:")
print("="*60)
for i, s in enumerate(scripts[:3]):
print(f"\n--- Script {i+1} ---")
print(s[:800])
if __name__ == "__main__":
asyncio.run(capture_cart_api())