diff --git a/src/app/Services/AgentAIService.php b/src/app/Services/AgentAIService.php index 0c23ab6..1e82dc9 100644 --- a/src/app/Services/AgentAIService.php +++ b/src/app/Services/AgentAIService.php @@ -104,6 +104,10 @@ class AgentAIService $content = $response['choices'][0]['message']['content'] ?? null; $usage = $response['usage'] ?? []; + \Log::info('AgentAI: Raw response', [ + 'content' => mb_substr($content ?? '', 0, 500), + ]); + $parsed = self::parseJson($content); // Multi-Action: Array von Aktionen @@ -112,6 +116,10 @@ class AgentAIService } if (($parsed['type'] ?? 'unknown') === 'unknown' && $content) { + \Log::warning('AgentAI: type=unknown – Raw content', [ + 'content' => mb_substr($content, 0, 500), + ]); + // Harte Sicherung: wenn das Modell rohen JSON-Text liefert, der // NICHT geparst werden konnte, darf der nie als "message" landen — // sonst liest die TTS geschweifte Klammern vor. @@ -652,6 +660,14 @@ EMAIL: Multi (PFLICHT bei mehreren Aktionen gleichzeitig!): [{"type": "event", "data": {"title": "Zahnarzt", "datetime": "2026-04-20 08:00"}}, {"type": "task", "data": {"title": "Zahnarzt vorbereiten", "priority": "medium"}}] +MULTI-EVENT MIT ERINNERUNG — KORREKT (PFLICHT-BEISPIEL): +User: "Ich hab morgen Reifenwechsel um 17 Uhr, erinnere mich um 7:55. Und heute um 14 Uhr Volleyball, erinnere mich um 7:58." +[ + {"type": "event", "data": {"title": "Reifenwechsel", "datetime": "{{ now('Europe/Vienna')->addDay()->setTime(17,0)->utc()->format('Y-m-d H:i') }}", "reminder_at": "{{ now('Europe/Vienna')->addDay()->setTime(7,55)->utc()->format('Y-m-d H:i:s') }}"}}, + {"type": "event", "data": {"title": "Volleyball", "datetime": "{{ now('Europe/Vienna')->setTime(14,0)->utc()->format('Y-m-d H:i') }}", "reminder_at": "{{ now('Europe/Vienna')->setTime(7,58)->utc()->format('Y-m-d H:i:s') }}"}} +] +FALSCH: Als task oder task_update anlegen — Termine mit Uhrzeit sind IMMER events! + PROMPT; } diff --git a/src/app/Services/AgentActionService.php b/src/app/Services/AgentActionService.php index fd48875..53fa7e8 100644 --- a/src/app/Services/AgentActionService.php +++ b/src/app/Services/AgentActionService.php @@ -236,12 +236,20 @@ class AgentActionService 'incoming_data' => $data, ]); - $event = $candidates->first() ? Event::find($candidates->first()->id) : null; - - if (!$event) { + // Kein Kandidat → neues Event erstellen falls Zeitangabe vorhanden + if ($candidates->isEmpty()) { + if (!empty($data['datetime']) || !empty($data['start'])) { + \Log::info('EventUpdate: Kein Kandidat gefunden → erstelle neues Event', ['search' => $search]); + $createData = array_merge($data, [ + 'title' => $data['title'] ?? $data['search'] ?? $search, + ]); + return self::handleEvent($user, $createData); + } return ['status' => 'failed', 'message' => "Kein Termin mit \"{$search}\" gefunden", 'meta' => ['search' => $search]]; } + $event = Event::find($candidates->first()->id); + \Log::info('EventUpdate: Ausgewählter Termin (vor Änderung)', [ 'event_id' => $event->id, 'title' => $event->title,