import pandas as pd

class spc_DataSchema:
    BATCH = "batch",
    SPEED = "speed",
    BATCHQUANTITY = "numeric",
    PARA1 = "numeric",
    PARA2 = "character",
    PARA3 = "numeric",
    PARA4 = "numeric",
    PARA5 = "numeric",
    PARA6 = "numeric",
    PARA7 = "numeric",
    PARA8 = "numeric",
    PARA9 = "numeric",
    PARA10 ="numeric",
    PARA11 ="numeric",
    PARA12 ="numeric",
    PARA13 ="numeric",
    PARA14 ="numeric",
    PARA15 ="numeric",
    PARA16 ="numeric",
    PARA17 ="numeric",
    PARA18 ="numeric",
    PARA19 ="numeric",
    PARA20 ="numeric",
    PARA21 ="numeric",
    PARA22 ="character",
    PARA23 ="numeric",
    timestamp ="date" 
    

def load_eventlog_data(path: str) -> pd.DataFrame:
    # load the data from the CSV file
    data = pd.read_csv(
        path,
        dtype={
        spc_DataSchema.BATCH : "batch",
        spc_DataSchema.SPEED : "speed",
        spc_DataSchema.BATCHQUANTITY : "numeric",
        spc_DataSchema.PARA1 : "numeric",
        spc_DataSchema.PARA2 : "character",
        spc_DataSchema.PARA3 : "numeric",
        spc_DataSchema.PARA4 : "numeric",
        spc_DataSchema.PARA5 : "numeric",
        spc_DataSchema.PARA6 : "numeric",
        spc_DataSchema.PARA7 : "numeric",
        spc_DataSchema.PARA8 : "numeric",
        spc_DataSchema.PARA9 : "numeric",
        spc_DataSchema.PARA10 :"numeric",
        spc_DataSchema.PARA11 :"numeric",
        spc_DataSchema.PARA12 :"numeric",
        spc_DataSchema.PARA13 :"numeric",
        spc_DataSchema.PARA14 :"numeric",
        spc_DataSchema.PARA15 :"numeric",
        spc_DataSchema.PARA16 :"numeric",
        spc_DataSchema.PARA17 :"numeric",
        spc_DataSchema.PARA18 :"numeric",
        spc_DataSchema.PARA19 :"numeric",
        spc_DataSchema.PARA20 :"numeric",
        spc_DataSchema.PARA21 :"numeric",
        spc_DataSchema.PARA22 :"character",
        spc_DataSchema.PARA23 :"numeric",
        spc_DataSchema.timestamp :"datetime" 
        },
        parse_dates=[spc_DataSchema.timestamp],
    )
    data['formatted_date'] = pd.to_datetime(data['datetime'])
    data[DataSchema.wd] = data[data.timestamp].dt.isocalendar().week + 0.1 * data[DataSchema.timestamp].dt.weekday()
    data[DataSchema.month] = data[DataSchema.DATE].dt.month
    return data
