DasProblem / Appy.py
sky-meilin's picture
Create Appy.py
34815e7 verified
# Datei: app.py
import json
import uuid
import time
import gradio as gr
from firebase_service import track_and_attribute_revenue_to_db
# --- HIER: DIE ERSTE MCP-FUNKTION ---
def track_and_attribute_revenue(source: str, product_id: str, amount: float, lead_id: str = None) -> str:
"""
MCP-Funktion zur Verbuchung von Umsätzen.
Wird von Sky Meilin 5.0 über Tool-Calling aufgerufen.
"""
# 1. Generiere IDs
transaction_id = f"TRX-{uuid.uuid4().hex[:8]}"
accounting_ref = f"ACC-{int(time.time())}"
# 2. Bauen des Datenobjekts
transaction_data = {
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
"transaction_source": source,
"item_sku": product_id,
"revenue_amount": amount,
"attributed_lead_id": lead_id if lead_id else "N/A",
"accounting_ref": accounting_ref,
"transaction_id": transaction_id
}
# 3. DATEN SPEICHERN (Der kritische Schritt zur Accounting KI)
success = track_and_attribute_revenue_to_db(transaction_data)
# 4. Rückgabe an Sky Meilin 5.0
return_value = {
"success": success,
"transaction_id": transaction_id,
"accounting_ref": accounting_ref
}
return json.dumps(return_value)
# --- GRADIO INTERFACE (FÜR HUGGING FACE TEST) ---
# Das Gradio Interface dient dazu, die Funktion in Ihrem Space zu testen
iface = gr.Interface(
fn=track_and_attribute_revenue,
inputs=[
gr.Textbox(label="Source", value="X_Affiliate_A1"),
gr.Textbox(label="Product ID", value="E-Book-V2"),
gr.Number(label="Amount", value=49.99),
gr.Textbox(label="Lead ID", value="L-456", optional=True)
],
outputs="json",
title="Sky Meilin MCP Tool: Revenue Tracker"
)
if __name__ == "__main__":
iface.launch()