Spaces:
Sleeping
Sleeping
| import os | |
| import subprocess | |
| import gradio as gr | |
| # Ensure model is trained | |
| if not (os.path.exists("model/model.pkl") and os.path.exists("model/encoders.pkl")): | |
| print("Model files not found. Training model...") | |
| os.makedirs("model", exist_ok=True) | |
| subprocess.run(["python", "train.py"], check=True) | |
| # β Import AFTER model is guaranteed to exist | |
| from predict import predict_transaction | |
| # Gradio UI | |
| def predict_ui(check_id, employee_id, total, discount_amount, item_count, time, terminal_id): | |
| if not employee_id or not time or not terminal_id: | |
| return "Please provide all required fields." | |
| return predict_transaction({ | |
| "check_id": check_id, | |
| "employee_id": employee_id.strip(), | |
| "total": total, | |
| "discount_amount": discount_amount, | |
| "item_count": item_count, | |
| "time": time.strip(), | |
| "terminal_id": terminal_id.strip() | |
| }) | |
| demo = gr.Interface( | |
| fn=predict_ui, | |
| inputs=[ | |
| gr.Number(label="Check ID"), | |
| gr.Text(label="Employee ID"), | |
| gr.Number(label="Total"), | |
| gr.Number(label="Discount Amount"), | |
| gr.Number(label="Item Count"), | |
| gr.Text(label="Time (HH:MM)"), | |
| gr.Text(label="Terminal ID"), | |
| ], | |
| outputs=gr.Text(label="Suspicious (1=True, 0=False)"), | |
| title="Suspicious Transaction Detector" | |
| ) | |
| demo.launch() | |