feat: 도매상 잔고 모달에 월간 매출 추가
- 백제/지오영/수인 월간매출 API 라우트 추가 - 모달 UI: 잔고 + 월간 매출 동시 표시 - 총 주문액 / 총 미수금 요약 표시
This commit is contained in:
86
backend/analyze_baekje_ledger.py
Normal file
86
backend/analyze_baekje_ledger.py
Normal file
@@ -0,0 +1,86 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""백제약품 주문 원장 페이지 분석"""
|
||||
|
||||
import asyncio
|
||||
import json
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
async def analyze_order_ledger():
|
||||
from playwright.async_api import async_playwright
|
||||
|
||||
username = os.getenv('BAEKJE_USER_ID')
|
||||
password = os.getenv('BAEKJE_PASSWORD')
|
||||
|
||||
print(f'Username: {username}')
|
||||
|
||||
async with async_playwright() as p:
|
||||
browser = await p.chromium.launch(headless=False)
|
||||
context = await browser.new_context()
|
||||
page = await context.new_page()
|
||||
|
||||
# 로그인 페이지
|
||||
await page.goto('https://ibjp.co.kr/dist/login', timeout=15000)
|
||||
await page.wait_for_load_state('networkidle', timeout=10000)
|
||||
|
||||
# 로그인 폼 입력
|
||||
inputs = await page.locator('input[type="text"], input[type="password"]').all()
|
||||
if len(inputs) >= 2:
|
||||
await inputs[0].fill(username)
|
||||
await inputs[1].fill(password)
|
||||
|
||||
# 로그인 버튼 클릭
|
||||
buttons = await page.locator('button').all()
|
||||
for btn in buttons:
|
||||
text = await btn.text_content()
|
||||
if '로그인' in (text or ''):
|
||||
await btn.click()
|
||||
break
|
||||
|
||||
# 로그인 완료 대기
|
||||
try:
|
||||
await page.wait_for_url('**/comOrd**', timeout=15000)
|
||||
print('Login successful, redirected to comOrd')
|
||||
except Exception as e:
|
||||
print(f'URL wait failed: {e}')
|
||||
await asyncio.sleep(3)
|
||||
|
||||
print(f'Current URL: {page.url}')
|
||||
|
||||
# 주문 원장 페이지로 이동
|
||||
await page.goto('https://ibjp.co.kr/dist/ordLedger', timeout=15000)
|
||||
await page.wait_for_load_state('networkidle', timeout=15000)
|
||||
|
||||
print(f'Order Ledger URL: {page.url}')
|
||||
|
||||
# 페이지 HTML 저장
|
||||
html = await page.content()
|
||||
with open('ordLedger_page.html', 'w', encoding='utf-8') as f:
|
||||
f.write(html)
|
||||
print('Page HTML saved to ordLedger_page.html')
|
||||
|
||||
# 스크린샷 저장
|
||||
await page.screenshot(path='ordLedger_screenshot.png', full_page=True)
|
||||
print('Screenshot saved')
|
||||
|
||||
# 테이블 데이터 분석
|
||||
tables = await page.locator('table').all()
|
||||
print(f'Found {len(tables)} tables')
|
||||
|
||||
for i, table in enumerate(tables):
|
||||
headers = await table.locator('th').all()
|
||||
header_texts = [await h.text_content() for h in headers]
|
||||
print(f'Table {i} headers: {header_texts}')
|
||||
|
||||
# 페이지 텍스트 출력 (분석용)
|
||||
body_text = await page.locator('body').text_content()
|
||||
print('\n=== Page Text Preview ===')
|
||||
print(body_text[:3000] if body_text else 'No text')
|
||||
|
||||
await asyncio.sleep(30) # 페이지 확인 시간
|
||||
await browser.close()
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(analyze_order_ledger())
|
||||
Reference in New Issue
Block a user