feat: 지오영/수인 잔고 API 엔드포인트 추가
- GET /api/geoyoung/balance - GET /api/sooin/balance
This commit is contained in:
parent
241e65aaf1
commit
1829c3efa7
@ -375,6 +375,78 @@ def api_geoyoung_order_batch():
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
# ========== 잔고 탐색 (임시) ==========
|
||||||
|
|
||||||
|
@geoyoung_bp.route('/explore-balance', methods=['GET'])
|
||||||
|
def api_explore_balance():
|
||||||
|
"""잔고 페이지 탐색 (임시 디버그용)"""
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
|
||||||
|
session = get_geo_session()
|
||||||
|
if not session._logged_in:
|
||||||
|
session.login()
|
||||||
|
|
||||||
|
results = {
|
||||||
|
'logged_in': session._logged_in,
|
||||||
|
'cookies': len(session.session.cookies),
|
||||||
|
'pages_found': [],
|
||||||
|
'balance_pages': []
|
||||||
|
}
|
||||||
|
|
||||||
|
# Order 페이지에서 메뉴 링크 수집
|
||||||
|
try:
|
||||||
|
# 먼저 Order 페이지 접근
|
||||||
|
resp = session.session.get(f"{session.BASE_URL}/Home/Order", timeout=10)
|
||||||
|
results['order_page'] = {
|
||||||
|
'status': resp.status_code,
|
||||||
|
'url': resp.url,
|
||||||
|
'is_error': 'Error' in resp.url
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp.status_code == 200 and 'Error' not in resp.url:
|
||||||
|
soup = BeautifulSoup(resp.text, 'html.parser')
|
||||||
|
|
||||||
|
# 모든 링크 추출
|
||||||
|
for link in soup.find_all('a', href=True):
|
||||||
|
href = link.get('href', '')
|
||||||
|
text = link.get_text(strip=True)[:50]
|
||||||
|
|
||||||
|
if href.startswith('/') and href not in [l['href'] for l in results['pages_found']]:
|
||||||
|
entry = {'href': href, 'text': text}
|
||||||
|
results['pages_found'].append(entry)
|
||||||
|
|
||||||
|
# 잔고 관련 키워드
|
||||||
|
keywords = ['account', 'balance', 'trans', 'state', 'history', 'ledger', '잔고', '잔액', '거래', '명세', '내역']
|
||||||
|
if any(kw in href.lower() or kw in text for kw in keywords):
|
||||||
|
results['balance_pages'].append(entry)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
results['error'] = str(e)
|
||||||
|
|
||||||
|
return jsonify(results)
|
||||||
|
|
||||||
|
|
||||||
|
@geoyoung_bp.route('/balance', methods=['GET'])
|
||||||
|
def api_get_balance():
|
||||||
|
"""
|
||||||
|
잔고액 조회
|
||||||
|
|
||||||
|
GET /api/geoyoung/balance
|
||||||
|
"""
|
||||||
|
session = get_geo_session()
|
||||||
|
|
||||||
|
# get_balance 메서드가 있으면 호출
|
||||||
|
if hasattr(session, 'get_balance'):
|
||||||
|
result = session.get_balance()
|
||||||
|
return jsonify(result)
|
||||||
|
else:
|
||||||
|
return jsonify({
|
||||||
|
'success': False,
|
||||||
|
'error': 'NOT_IMPLEMENTED',
|
||||||
|
'message': '지오영 잔고 조회 미구현'
|
||||||
|
}), 501
|
||||||
|
|
||||||
|
|
||||||
# ========== 하위 호환성 ==========
|
# ========== 하위 호환성 ==========
|
||||||
|
|
||||||
# 기존 코드에서 직접 클래스 참조하는 경우를 위해
|
# 기존 코드에서 직접 클래스 참조하는 경우를 위해
|
||||||
|
|||||||
@ -104,6 +104,36 @@ def api_session_status():
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@sooin_bp.route('/balance', methods=['GET'])
|
||||||
|
def api_sooin_balance():
|
||||||
|
"""
|
||||||
|
수인약품 잔고(미수금) 조회 API
|
||||||
|
|
||||||
|
GET /api/sooin/balance
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"balance": 14293001, // 현재 잔고 (누계합)
|
||||||
|
"prev_balance": 10592762, // 전일잔액
|
||||||
|
"monthly_sales": 3700239, // 월 매출
|
||||||
|
"yearly_sales": 34380314 // 연 누계 매출
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
session = get_sooin_session()
|
||||||
|
result = session.get_balance()
|
||||||
|
return jsonify(result)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"수인약품 잔고 조회 오류: {e}")
|
||||||
|
return jsonify({
|
||||||
|
'success': False,
|
||||||
|
'error': 'BALANCE_ERROR',
|
||||||
|
'message': str(e),
|
||||||
|
'balance': 0
|
||||||
|
}), 500
|
||||||
|
|
||||||
|
|
||||||
@sooin_bp.route('/cart', methods=['GET'])
|
@sooin_bp.route('/cart', methods=['GET'])
|
||||||
def api_sooin_cart():
|
def api_sooin_cart():
|
||||||
"""장바구니 조회 API"""
|
"""장바구니 조회 API"""
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user