import pandas as pd
def calculate_oee(machine_id, period_days=30):
data = pd.read_sql("SELECT * FROM production_logs WHERE machine_id = ? AND date >= NOW() - ?", (machine_id, period_days))
planned = data['planned_runtime'].sum()
downtime = data['downtime'].sum()
availability = (planned - downtime) / planned
ideal_cycle = data['ideal_cycle_time'].mean()
actual_cycle = data['actual_cycle_time'].mean()
performance = ideal_cycle / actual_cycle
good = data['good_parts'].sum()
total = (data['good_parts'] + data['defect_parts']).sum()
quality = good / total if total > 0 else 0
return {'OEE': availability * performance * quality * 100, 'Availability': availability * 100, 'Performance': performance * 100, 'Quality': quality * 100}