import sys
import os
import logging
import pandas as pd

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)


def find_xlsx_file(fetch_dir, filename):
    search_paths = [
        filename,
        os.path.join(fetch_dir, filename),
    ]
    for path in search_paths:
        if os.path.exists(path):
            return path
    return None


def main():
    if len(sys.argv) < 2:
        logger.error("Missing repo parameter")
        logger.info("Usage: python validate_issue.py <repo>")
        return 1

    repo = sys.argv[1]

    script_dir = os.path.dirname(os.path.abspath(__file__))
    fetch_dir = os.path.join(os.path.dirname(script_dir), 'fetch')

    logger.info("=" * 60)
    logger.info("Open Issues Summary:")
    logger.info("=" * 60)

    open_file = find_xlsx_file(fetch_dir, f"{repo}_open_issue.xlsx")
    if not open_file:
        logger.error(f"File not found: {repo}_open_issue.xlsx")
        logger.info(f"  Searched paths:")
        logger.info(f"    - Current directory")
        logger.info(f"    - {fetch_dir}")
        return 1

    df_open = pd.read_excel(open_file)
    logger.info(f"Total: {len(df_open)} opened Issues")
    logger.info(f"File: {open_file}")

    logger.info("=" * 60)
    logger.info("Closed Issues Summary:")
    logger.info("=" * 60)

    closed_file = find_xlsx_file(fetch_dir, f"{repo}_closed_issue.xlsx")
    if not closed_file:
        logger.error(f"File not found: {repo}_closed_issue.xlsx")
        return 1

    df_closed = pd.read_excel(closed_file)
    logger.info(f"Total: {len(df_closed)} closed Issues")
    logger.info(f"File: {closed_file}")

    logger.info("=" * 60)
    logger.info("Issues Comments Summary:")
    logger.info("=" * 60)

    comments_file = find_xlsx_file(fetch_dir, f"{repo}_issue_comments.xlsx")
    if not comments_file:
        logger.warning(f"File not found: {repo}_issue_comments.xlsx")
        logger.info("Skipping comments summary...")
    else:
        df_comments = pd.read_excel(comments_file)
        logger.info(f"Total: {len(df_comments)} comments on Issues")
        logger.info(f"File: {comments_file}")

    logger.info("=" * 60)
    logger.info("Issue Type Distribution:")
    logger.info("=" * 60)
    logger.info("Open Issue Types:")
    if 'Issue类型' in df_open.columns:
        logger.info(f"\n{df_open['Issue类型'].value_counts()}")
    elif 'issue_type' in df_open.columns:
        logger.info(f"\n{df_open['issue_type'].value_counts()}")
    else:
        logger.warning("No issue_type column found")

    logger.info("Closed Issue Types:")
    if 'Issue类型' in df_closed.columns:
        logger.info(f"\n{df_closed['Issue类型'].value_counts()}")
    elif 'issue_type' in df_closed.columns:
        logger.info(f"\n{df_closed['issue_type'].value_counts()}")
    else:
        logger.warning("No issue_type column found")

    return 0


if __name__ == "__main__":
    sys.exit(main())