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:
|
||||
try:
|
||||
# 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
|
||||
|
|
@ -763,10 +768,12 @@ Erst dann starten die automatischen TICKs mit Bildern!"""
|
|||
needs_id_sync = False # Erfolgreich gefunden, kein Sync nötig
|
||||
|
||||
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:
|
||||
old_id = self.last_assistant_message_id
|
||||
self.last_assistant_message_id = msg.id
|
||||
logger.info(f"TTS: ID aktualisiert: {old_id} -> {msg.id}")
|
||||
|
||||
# State speichern (persistent)
|
||||
if self._current_chat_id:
|
||||
|
|
|
|||
|
|
@ -513,7 +513,38 @@ class ClaudeChatInterface:
|
|||
if since_id is None:
|
||||
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 = []
|
||||
found_marker = False
|
||||
|
||||
|
|
@ -523,33 +554,6 @@ class ClaudeChatInterface:
|
|||
elif msg.id == since_id:
|
||||
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
|
||||
|
||||
def _get_all_messages(self) -> List[ChatMessage]:
|
||||
|
|
|
|||
Loading…
Reference in New Issue