martinbrahm commited on
Commit
0459685
·
verified ·
1 Parent(s): 212e616

Upload main.py

Browse files
Files changed (1) hide show
  1. main.py +25 -15
main.py CHANGED
@@ -13,7 +13,7 @@ COLLECTION_RULES = "availability_rules"
13
  COLLECTION_INBOX = "inbox"
14
  KNOWLEDGE_CACHE = []
15
 
16
- # --- FIREBASE START ---
17
  db = None
18
  try:
19
  key = os.environ.get("FIREBASE_KEY")
@@ -31,13 +31,15 @@ except Exception as e:
31
  # --- CACHE LADEN ---
32
  def reload_knowledge():
33
  global KNOWLEDGE_CACHE
34
- if not db: return
35
  try:
36
  docs = db.collection(COLLECTION_KNOWLEDGE).stream()
37
  KNOWLEDGE_CACHE = [d.to_dict() for d in docs]
38
  print(f"📚 {len(KNOWLEDGE_CACHE)} Einträge geladen.")
 
39
  except Exception as e:
40
  print(f"❌ Cache Fehler: {e}")
 
41
 
42
  @app.on_event("startup")
43
  async def startup():
@@ -50,7 +52,24 @@ def get_stem(word):
50
  return w
51
 
52
  # ==========================================
53
- # 1. TOOL: VERFÜGBARKEIT PRÜFEN
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  # ==========================================
55
  @app.post("/check_availability")
56
  async def check_availability(request: Request):
@@ -58,7 +77,6 @@ async def check_availability(request: Request):
58
 
59
  today = datetime.now().strftime("%Y-%m-%d")
60
  status = "available"
61
- # Standard-Nachricht
62
  message = "Normaler Betrieb."
63
 
64
  try:
@@ -69,7 +87,6 @@ async def check_availability(request: Request):
69
  if rd.get('start_date') <= today <= rd.get('end_date'):
70
  print(f"🛑 REGEL GEFUNDEN: {rd.get('name')}")
71
  status = "unavailable"
72
- # Hier bauen wir den Satz für den Agenten
73
  message = rd.get('instruction_text')
74
  break
75
  except Exception as e:
@@ -78,7 +95,6 @@ async def check_availability(request: Request):
78
 
79
  print(f"👉 RESULTAT: {status} | {message}")
80
 
81
- # Rückgabe als JSON-String für das LLM
82
  return {
83
  "result": json.dumps({
84
  "status": status,
@@ -87,7 +103,7 @@ async def check_availability(request: Request):
87
  }
88
 
89
  # ==========================================
90
- # 2. TOOL: WISSENSSUCHE (Preise etc.)
91
  # ==========================================
92
  @app.post("/search")
93
  async def search(request: Request):
@@ -140,14 +156,8 @@ async def search(request: Request):
140
  return {"result": "Systemfehler."}
141
 
142
  # ==========================================
143
- # 3. DUMMY ENDPUNKT (MÜLLSCHLUCKER)
144
- # Fängt die 404 Fehler ab!
145
  # ==========================================
146
  @app.post("/vapi-incoming")
147
  async def dummy_incoming(request: Request):
148
- # Wir sagen Vapi einfach "Alles OK", damit er Ruhe gibt
149
- return {"status": "ok"}
150
-
151
- @app.get("/")
152
- def home():
153
- return {"status": "Online"}
 
13
  COLLECTION_INBOX = "inbox"
14
  KNOWLEDGE_CACHE = []
15
 
16
+ # --- FIREBASE VERBINDUNG ---
17
  db = None
18
  try:
19
  key = os.environ.get("FIREBASE_KEY")
 
31
  # --- CACHE LADEN ---
32
  def reload_knowledge():
33
  global KNOWLEDGE_CACHE
34
+ if not db: return 0
35
  try:
36
  docs = db.collection(COLLECTION_KNOWLEDGE).stream()
37
  KNOWLEDGE_CACHE = [d.to_dict() for d in docs]
38
  print(f"📚 {len(KNOWLEDGE_CACHE)} Einträge geladen.")
39
+ return len(KNOWLEDGE_CACHE)
40
  except Exception as e:
41
  print(f"❌ Cache Fehler: {e}")
42
+ return 0
43
 
44
  @app.on_event("startup")
45
  async def startup():
 
52
  return w
53
 
54
  # ==========================================
55
+ # 1. HAUPTSEITE & MONITORING (Repariert!)
56
+ # ==========================================
57
+ @app.get("/")
58
+ def home():
59
+ # Hier ist die Info zurück!
60
+ return {
61
+ "status": "Online",
62
+ "docs_loaded": len(KNOWLEDGE_CACHE),
63
+ "endpoints": ["/check_availability", "/search", "/refresh_knowledge"]
64
+ }
65
+
66
+ @app.get("/refresh_knowledge")
67
+ def refresh():
68
+ count = reload_knowledge()
69
+ return {"status": "Cache aktualisiert", "docs_loaded": count}
70
+
71
+ # ==========================================
72
+ # 2. TOOL: VERFÜGBARKEIT PRÜFEN
73
  # ==========================================
74
  @app.post("/check_availability")
75
  async def check_availability(request: Request):
 
77
 
78
  today = datetime.now().strftime("%Y-%m-%d")
79
  status = "available"
 
80
  message = "Normaler Betrieb."
81
 
82
  try:
 
87
  if rd.get('start_date') <= today <= rd.get('end_date'):
88
  print(f"🛑 REGEL GEFUNDEN: {rd.get('name')}")
89
  status = "unavailable"
 
90
  message = rd.get('instruction_text')
91
  break
92
  except Exception as e:
 
95
 
96
  print(f"👉 RESULTAT: {status} | {message}")
97
 
 
98
  return {
99
  "result": json.dumps({
100
  "status": status,
 
103
  }
104
 
105
  # ==========================================
106
+ # 3. TOOL: WISSENSSUCHE
107
  # ==========================================
108
  @app.post("/search")
109
  async def search(request: Request):
 
156
  return {"result": "Systemfehler."}
157
 
158
  # ==========================================
159
+ # 4. MÜLLSCHLUCKER (Gegen 404 Fehler)
 
160
  # ==========================================
161
  @app.post("/vapi-incoming")
162
  async def dummy_incoming(request: Request):
163
+ return {"status": "ok"}