diff --git a/backend/geoyoung_api.py b/backend/geoyoung_api.py index 6bad557..6f26860 100644 --- a/backend/geoyoung_api.py +++ b/backend/geoyoung_api.py @@ -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 + + # ========== 하위 호환성 ========== # 기존 코드에서 직접 클래스 참조하는 경우를 위해 diff --git a/backend/sooin_api.py b/backend/sooin_api.py index 9841736..1cbdaa6 100644 --- a/backend/sooin_api.py +++ b/backend/sooin_api.py @@ -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"""