#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
API를 통한 Excel 입고 처리 테스트
"""

import requests
import json

# API 베이스 URL
BASE_URL = "http://localhost:5001"

def test_upload_excel():
    """Excel 업로드 테스트"""

    # 1. 도매상 목록 확인
    print("=== 도매상 목록 확인 ===")
    response = requests.get(f"{BASE_URL}/api/suppliers")
    suppliers = response.json()

    if suppliers['success'] and suppliers['data']:
        print(f"✓ 도매상 {len(suppliers['data'])}개 조회")
        supplier_id = suppliers['data'][0]['supplier_id']
        supplier_name = suppliers['data'][0]['name']
        print(f"✓ 선택된 도매상: {supplier_name} (ID: {supplier_id})")
    else:
        print("도매상이 없습니다. 새로 생성합니다.")
        # 도매상 생성
        supplier_data = {
            'name': '한의정보',
            'business_no': '123-45-67890',
            'contact_person': '담당자',
            'phone': '02-1234-5678'
        }
        response = requests.post(f"{BASE_URL}/api/suppliers", json=supplier_data)
        result = response.json()
        if result['success']:
            supplier_id = result['supplier_id']
            print(f"✓ 도매상 생성 완료 (ID: {supplier_id})")
        else:
            print(f"✗ 도매상 생성 실패: {result.get('error')}")
            return

    # 2. Excel 파일 업로드
    print("\n=== Excel 파일 업로드 ===")

    # 파일 열기
    file_path = 'sample/한의정보.xlsx'
    with open(file_path, 'rb') as f:
        files = {'file': ('한의정보.xlsx', f, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')}
        data = {'supplier_id': supplier_id}

        # 업로드
        response = requests.post(f"{BASE_URL}/api/upload/purchase", files=files, data=data)

    # 결과 확인
    result = response.json()
    if result['success']:
        print(f"✓ 업로드 성공!")
        print(f"  - 형식: {result['summary']['format']}")
        print(f"  - 처리된 행: {result['summary']['processed_rows']}")
        if 'processed_items' in result['summary']:
            print(f"  - 처리된 품목: {result['summary']['processed_items']}")
        if 'total_amount' in result['summary']:
            total = result['summary']['total_amount']
            if isinstance(total, (int, float)):
                print(f"  - 총액: {total:,.0f}원")
            else:
                print(f"  - 총액: {total}원")
    else:
        print(f"✗ 업로드 실패: {result.get('error')}")

    # 3. 입고된 herb_items 확인
    print("\n=== 입고된 herb_items 확인 ===")
    response = requests.get(f"{BASE_URL}/api/herbs")
    herbs = response.json()

    if herbs['success']:
        print(f"✓ 총 {len(herbs['data'])}개 herb_items")
        # 샘플 출력
        for herb in herbs['data'][:5]:
            print(f"  - {herb['herb_name']}: 보험코드={herb.get('insurance_code', 'N/A')}, 재고={herb.get('stock_quantity', 0):,.0f}g")

    # 4. 재고 현황 확인
    print("\n=== 재고 현황 확인 ===")
    response = requests.get(f"{BASE_URL}/api/inventory/summary")
    inventory = response.json()

    if inventory['success']:
        summary = inventory['data']
        print(f"✓ 재고 요약:")
        print(f"  - 총 품목: {summary['total_items']}개")
        print(f"  - 재고 있는 품목: {summary['items_with_stock']}개")
        print(f"  - 총 재고 가치: {summary['total_value']:,.0f}원")

if __name__ == "__main__":
    test_upload_excel()