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'])
|
||||
def api_sooin_cart():
|
||||
"""장바구니 조회 API"""
|
||||
|
||||
Loading…
Reference in New Issue
Block a user