#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
한약재 제품 코드 심층 분석
"""

import pandas as pd

def deep_analyze():
    file_path = 'sample/(게시)한약재제품코드_2510.xlsx'
    sheet_name = '한약재 제품코드_20250930기준(유효코드만 공지)'

    # 데이터 읽기 - 제품코드를 문자열로 읽어서 0 유지
    df = pd.read_excel(file_path, sheet_name=sheet_name, dtype={'제품코드': str})

    print("=== 한약재 제품 코드 데이터 심층 분석 ===")
    print(f"전체 데이터: {len(df):,}개 제품")
    print(f"유일한 주성분코드: {df['주성분코드'].nunique()}개")
    print(f"유일한 약재 품목명: {df['한약재 품목명'].nunique()}개")
    print(f"유일한 업체: {df['업체명'].nunique()}개")

    # 주성분코드별 통계
    print("\n=== 주성분코드별 제품 수 (상위 20개) ===")
    ingredient_stats = df.groupby(['주성분코드', '한약재 품목명']).size().reset_index(name='제품수')
    ingredient_stats = ingredient_stats.sort_values('제품수', ascending=False).head(20)

    for _, row in ingredient_stats.iterrows():
        print(f"  {row['주성분코드']} ({row['한약재 품목명']}): {row['제품수']}개 제품")

    # 업체별 통계
    print("\n=== 업체별 제품 수 (상위 10개) ===")
    company_stats = df['업체명'].value_counts().head(10)
    for company, count in company_stats.items():
        print(f"  {company}: {count}개 제품")

    # 규격별 분석
    print("\n=== 약품 규격 분석 ===")
    spec_stats = df['약품규격(단위)'].value_counts()
    print("규격 단위별 제품 수:")
    for spec, count in spec_stats.items():
        print(f"  {spec}: {count}개")

    # 특정 약재들 확인
    print("\n=== 주요 약재 확인 ===")
    target_herbs = ['건강', '감초', '당귀', '황기', '숙지황', '백출', '천궁', '육계', '백작약', '인삼', '생강', '대추']

    for herb in target_herbs:
        herb_data = df[df['한약재 품목명'] == herb]
        if not herb_data.empty:
            unique_code = herb_data['주성분코드'].iloc[0] if len(herb_data) > 0 else 'N/A'
            product_count = len(herb_data)
            company_count = herb_data['업체명'].nunique()
            print(f"  {herb}: 주성분코드={unique_code}, {product_count}개 제품, {company_count}개 업체")
        else:
            print(f"  {herb}: 데이터 없음")

    # 한 약재에 여러 제품이 있는 예시 - 건강
    print("\n=== '건강' 약재의 제품 예시 (처음 10개) ===")
    gangang_data = df[df['한약재 품목명'] == '건강'].head(10)
    if not gangang_data.empty:
        for _, row in gangang_data.iterrows():
            # 제품코드를 9자리로 표시 (0 패딩)
            product_code = str(row['제품코드']).zfill(9)
            print(f"  업체: {row['업체명']}, 제품명: {row['제품명']}, 제품코드: {product_code}, 규격: {row['약품규격(숫자)']} {row['약품규격(단위)']}")

    # 현재 시스템과의 비교
    print("\n=== 현재 DB 설계와의 차이점 ===")
    print("1. 현재 시스템:")
    print("   - herb_items: 약재 기본 정보 (예: 건강)")
    print("   - inventory_lots: 로트별 재고 (원산지, 가격 등)")
    print("\nㅇ2. 제품코드 시스템:")
    print("   - 주성분코드: 약재별 고유 코드 (예: 3050H1AHM = 건강)")
    print("   - 제품코드: 업체별 제품 고유코드")
    print("   - 표준코드/대표코드: 바코드 시스템")
    print("   - 규격: 포장 단위 (500g, 1000g 등)")

    print("\n=== 시사점 ===")
    print("- 54,000개 이상의 유통 제품이 454개 주성분코드로 분류됨")
    print("- 같은 약재(주성분)라도 업체별로 다른 제품명과 코드를 가짐")
    print("- 제품별로 다양한 포장 규격 존재 (-, 500g, 600g, 1000g 등)")
    print("- 표준코드(바코드)를 통한 제품 식별 가능")

if __name__ == "__main__":
    deep_analyze()