Fix get_field(): support multiline values in key-value format (email body was truncated to first line)
This commit is contained in:
parent
46a77c7800
commit
7fe1365ebc
1 changed files with 14 additions and 7 deletions
21
app.py
21
app.py
|
|
@ -1002,16 +1002,23 @@ def parse_agent_commands(agent_key, response_text, task_id=None):
|
||||||
import re
|
import re
|
||||||
|
|
||||||
def get_field(block, field):
|
def get_field(block, field):
|
||||||
"""Extrahiert ein Feld aus einem XML-Block: 'field: value' oder '<field>value</field>'."""
|
"""Extrahiert ein Feld aus einem XML-Block: '<field>value</field>' oder 'field: value'.
|
||||||
# Versuche erst XML-Tag-Format
|
Unterstützt mehrzeilige Werte (z.B. langer Email-Body).
|
||||||
|
"""
|
||||||
|
# Versuche erst XML-Tag-Format (bevorzugt, unterstützt Mehrzeiligkeit)
|
||||||
m = re.search(rf'<{field}>(.*?)</{field}>', block, re.DOTALL | re.IGNORECASE)
|
m = re.search(rf'<{field}>(.*?)</{field}>', block, re.DOTALL | re.IGNORECASE)
|
||||||
if m:
|
if m:
|
||||||
return m.group(1).strip()
|
return m.group(1).strip()
|
||||||
# Dann Key-Value-Format
|
# Key-Value-Format: finde 'field: ...' und lies bis zum nächsten echten Key (^\w+: )
|
||||||
m = re.search(rf'^{field}\s*:\s*(.+)', block, re.MULTILINE | re.IGNORECASE)
|
m = re.search(rf'(?m)^{field}\s*:\s*(.*)', block, re.IGNORECASE)
|
||||||
if m:
|
if not m:
|
||||||
return m.group(1).strip()
|
return ''
|
||||||
return ''
|
rest = block[m.start(1):]
|
||||||
|
# Stoppe nur bei echten einwortigen Keys (^\w+: Leerzeichen) — nicht bei "Report:" etc.
|
||||||
|
stop = re.search(r'(?m)^\w+\s*:\s', rest)
|
||||||
|
if stop:
|
||||||
|
return rest[:stop.start()].strip()
|
||||||
|
return rest.strip()
|
||||||
|
|
||||||
# ── CREATE_TASK ──────────────────────────────────────────────────────────
|
# ── CREATE_TASK ──────────────────────────────────────────────────────────
|
||||||
for block in re.findall(r'<create_task>(.*?)</create_task>', response_text, re.DOTALL | re.IGNORECASE):
|
for block in re.findall(r'<create_task>(.*?)</create_task>', response_text, re.DOTALL | re.IGNORECASE):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue