0f07947879
Die OpenAI Chat Completions API liefert den eigentlichen KI-Inhalt als escaped JSON-String in choices[0].message.content, nicht als direktes JSON-Objekt. Der Adapter gab bisher den gesamten Envelope zurück, was dazu führte, dass AiResponseParser das Pflichtfeld 'title' nicht fand. Neues Verhalten: extractContentFromResponse() parst zunächst den äußeren Envelope und gibt choices[0].message.content als AiRawResponse-Inhalt weiter – analog zum AnthropicClaudeHttpAdapter. Bei fehlendem Inhalt (leer, kein choices-Array) oder unparseablem Envelope wird eine technische Failure (NO_CHOICE_CONTENT bzw. UNPARSEABLE_JSON) zurückgegeben. Tests aktualisiert und drei neue Tests für den zweistufigen Parse-Pfad sowie für Fehlerfälle ergänzt. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>