import polars as pl


def run(tb_sales_master, options, contexts):
    result = tb_sales_master.group_by(
        [
            "customer_id",
            "customer_name",
            "customer_type",
            "city",
            "country_name",
            "continent_name",
        ]
    ).agg(
        [
            # 주문 수
            pl.col("order_id").n_unique().alias("total_orders"),
            pl.col("order_date").n_unique().alias("total_order_dates"),
            # 최초/최종 주문일
            pl.col("order_date").min().alias("first_order_date"),
            pl.col("order_date").max().alias("last_order_date"),
            # 구매한 제품 종류 수
            pl.col("material_id").n_unique().alias("unique_material_count"),
        ]
    )

    return {"tb_customer_summary": result}
