fix number is save, add extra logging for ids
This commit is contained in:
parent
c34eb1c740
commit
e7a62efe90
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"53884f57-43ed-4047-a32d-429cf976d2d0": "claude_msg_39"
|
||||||
|
}
|
||||||
|
|
@ -740,7 +740,12 @@ Erst dann starten die automatischen TICKs mit Bildern!"""
|
||||||
while self.running:
|
while self.running:
|
||||||
try:
|
try:
|
||||||
# Hole neue Nachrichten
|
# Hole neue Nachrichten
|
||||||
messages = self.chat.get_new_messages(since_id=self.last_assistant_message_id)
|
current_since_id = self.last_assistant_message_id
|
||||||
|
messages = self.chat.get_new_messages(since_id=current_since_id)
|
||||||
|
|
||||||
|
# Debug: Zeige was wir suchen und was wir finden
|
||||||
|
if messages:
|
||||||
|
logger.info(f"TTS: {len(messages)} neue Nachrichten (since={current_since_id})")
|
||||||
|
|
||||||
# ════════════════════════════════════════════════════════════════
|
# ════════════════════════════════════════════════════════════════
|
||||||
# Bei leerem Ergebnis: Prüfe ob wir die ID synchronisieren müssen
|
# Bei leerem Ergebnis: Prüfe ob wir die ID synchronisieren müssen
|
||||||
|
|
@ -763,10 +768,12 @@ Erst dann starten die automatischen TICKs mit Bildern!"""
|
||||||
needs_id_sync = False # Erfolgreich gefunden, kein Sync nötig
|
needs_id_sync = False # Erfolgreich gefunden, kein Sync nötig
|
||||||
|
|
||||||
for msg in messages:
|
for msg in messages:
|
||||||
logger.debug(f"TTS: Nachricht - assistant={msg.is_from_assistant}, id={msg.id[:20]}..., text={msg.text[:50]}...")
|
logger.debug(f"TTS: Nachricht - assistant={msg.is_from_assistant}, id={msg.id}, text={msg.text[:50]}...")
|
||||||
|
|
||||||
if msg.is_from_assistant:
|
if msg.is_from_assistant:
|
||||||
|
old_id = self.last_assistant_message_id
|
||||||
self.last_assistant_message_id = msg.id
|
self.last_assistant_message_id = msg.id
|
||||||
|
logger.info(f"TTS: ID aktualisiert: {old_id} -> {msg.id}")
|
||||||
|
|
||||||
# State speichern (persistent)
|
# State speichern (persistent)
|
||||||
if self._current_chat_id:
|
if self._current_chat_id:
|
||||||
|
|
|
||||||
|
|
@ -513,7 +513,38 @@ class ClaudeChatInterface:
|
||||||
if since_id is None:
|
if since_id is None:
|
||||||
return all_messages
|
return all_messages
|
||||||
|
|
||||||
# Filtere nur neue
|
# ════════════════════════════════════════════════════════════════
|
||||||
|
# STRATEGIE: Nutze immer den Index aus claude_msg_X
|
||||||
|
# Die IDs werden bei jedem Aufruf neu generiert, daher können wir
|
||||||
|
# nicht auf exakte ID-Übereinstimmung vertrauen.
|
||||||
|
# Stattdessen extrahieren wir den Index und geben alle Nachrichten
|
||||||
|
# NACH diesem Index zurück.
|
||||||
|
# ════════════════════════════════════════════════════════════════
|
||||||
|
if since_id and since_id.startswith("claude_msg_"):
|
||||||
|
try:
|
||||||
|
last_index = int(since_id.split("_")[-1])
|
||||||
|
# Zähle Claude-Nachrichten und gib nur die nach dem Index zurück
|
||||||
|
claude_msgs = [m for m in all_messages if m.is_from_assistant]
|
||||||
|
total_claude = len(claude_msgs)
|
||||||
|
|
||||||
|
if last_index < total_claude - 1:
|
||||||
|
# Es gibt neue Nachrichten!
|
||||||
|
new_claude_msgs = claude_msgs[last_index + 1:]
|
||||||
|
logger.debug(f"Index-basiert: {len(new_claude_msgs)} neue Claude-Nachrichten (Index {last_index + 1} bis {total_claude - 1})")
|
||||||
|
return new_claude_msgs
|
||||||
|
else:
|
||||||
|
# Keine neuen Nachrichten (last_index ist der letzte oder darüber)
|
||||||
|
logger.debug(f"Index-basiert: Keine neuen Nachrichten (last={last_index}, total={total_claude})")
|
||||||
|
return []
|
||||||
|
except (ValueError, IndexError) as e:
|
||||||
|
logger.warning(f"Fehler beim Parsen von since_id '{since_id}': {e}")
|
||||||
|
|
||||||
|
# Alte Hash-basierte IDs oder ungültiges Format
|
||||||
|
if since_id and since_id.startswith("claude_"):
|
||||||
|
logger.debug(f"since_id '{since_id[:30]}...' hat altes Format - überspringe alle")
|
||||||
|
return []
|
||||||
|
|
||||||
|
# Fallback: Exakte ID-Suche (für Nicht-Claude-IDs)
|
||||||
new_messages = []
|
new_messages = []
|
||||||
found_marker = False
|
found_marker = False
|
||||||
|
|
||||||
|
|
@ -523,33 +554,6 @@ class ClaudeChatInterface:
|
||||||
elif msg.id == since_id:
|
elif msg.id == since_id:
|
||||||
found_marker = True
|
found_marker = True
|
||||||
|
|
||||||
# WICHTIG: Wenn since_id nicht gefunden wurde, versuche eine Fallback-Logik
|
|
||||||
if not found_marker and all_messages:
|
|
||||||
# Neue IDs haben Format "claude_msg_X" wobei X ein Zähler ist
|
|
||||||
# Alte IDs haben Format "claude_HASH" - diese sind nicht mehr gültig
|
|
||||||
if since_id and since_id.startswith("claude_msg_"):
|
|
||||||
# Extrahiere den Zähler und gib alle Nachrichten NACH diesem Index zurück
|
|
||||||
try:
|
|
||||||
last_index = int(since_id.split("_")[-1])
|
|
||||||
# Zähle Claude-Nachrichten und gib nur die nach dem Index zurück
|
|
||||||
claude_msgs = [m for m in all_messages if m.is_from_assistant]
|
|
||||||
if last_index < len(claude_msgs):
|
|
||||||
# Es gibt neue Nachrichten!
|
|
||||||
new_claude_msgs = claude_msgs[last_index + 1:]
|
|
||||||
logger.debug(f"Fallback: {len(new_claude_msgs)} neue Claude-Nachrichten ab Index {last_index + 1}")
|
|
||||||
return new_claude_msgs
|
|
||||||
else:
|
|
||||||
# Keine neuen Nachrichten
|
|
||||||
return []
|
|
||||||
except (ValueError, IndexError):
|
|
||||||
pass
|
|
||||||
|
|
||||||
# Alte Hash-basierte IDs oder ungültiges Format
|
|
||||||
if since_id and since_id.startswith("claude_"):
|
|
||||||
logger.debug(f"since_id '{since_id[:30]}...' hat altes Format oder nicht gefunden - überspringe alle (Neustart-Schutz)")
|
|
||||||
return []
|
|
||||||
return []
|
|
||||||
|
|
||||||
return new_messages
|
return new_messages
|
||||||
|
|
||||||
def _get_all_messages(self) -> List[ChatMessage]:
|
def _get_all_messages(self) -> List[ChatMessage]:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue