From b8695fecd6ca4857bbef10bb66c70429cbafa0f8 Mon Sep 17 00:00:00 2001 From: Jonny Date: Mon, 14 Sep 2026 12:05:44 +0200 Subject: [PATCH] fix: fall back to settings defaults on DB error, add missing identity-line system-prompt test Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01V57jSQPqwkGG8BuAXg59X5 --- Claude outputs/main.py | 6 +++++- Claude outputs/tests/test_chat_tools.py | 19 +++++++++++++++++++ Claude outputs/tests/test_settings.py | 12 ++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/Claude outputs/main.py b/Claude outputs/main.py index 3a7cb4f..c24734a 100644 --- a/Claude outputs/main.py +++ b/Claude outputs/main.py @@ -1066,7 +1066,11 @@ MAX_TOOL_ROUNDS = 5 async def _identity_system_prompt() -> str: - settings = await get_all_settings() + try: + settings = await get_all_settings() + except Exception as e: + logger.warning(f"Settings unavailable, using defaults: {e}") + settings = SETTINGS_DEFAULTS return ( f"Du bist {settings['assistant_name']}, der KI-Assistent von " f"{settings['company_name']}. Bei Fragen zur Erreichbarkeit kannst " diff --git a/Claude outputs/tests/test_chat_tools.py b/Claude outputs/tests/test_chat_tools.py index b8ed9a6..67626aa 100644 --- a/Claude outputs/tests/test_chat_tools.py +++ b/Claude outputs/tests/test_chat_tools.py @@ -177,3 +177,22 @@ async def test_run_chat_completion_includes_current_datetime_in_system_prompt(): _, kwargs = main.claude_client.messages.create.call_args assert "TESTMARKER" in kwargs["system"] + + +@pytest.mark.asyncio +async def test_run_chat_completion_includes_identity_prompt_in_system_prompt(): + completion = MagicMock() + completion.stop_reason = "end_turn" + completion.content = [_text_block("Hallo!")] + completion.usage = _usage(10, 5) + + main.claude_client = MagicMock() + main.claude_client.messages.create.return_value = completion + + with patch.object(main, "build_memory_context", new=AsyncMock(return_value="")), patch.object( + main, "_identity_system_prompt", new=AsyncMock(return_value="IDENTITYMARKER Du bist JARVIS.") + ): + await main.run_chat_completion([{"role": "user", "content": "Hi"}], conversation_id=1) + + _, kwargs = main.claude_client.messages.create.call_args + assert "IDENTITYMARKER" in kwargs["system"] diff --git a/Claude outputs/tests/test_settings.py b/Claude outputs/tests/test_settings.py index db792d1..8a36515 100644 --- a/Claude outputs/tests/test_settings.py +++ b/Claude outputs/tests/test_settings.py @@ -124,3 +124,15 @@ async def test_identity_system_prompt_uses_settings(): assert "FRIDAY" in prompt assert "Stark Industries" in prompt assert "info@stark.example" in prompt + + +@pytest.mark.asyncio +async def test_identity_system_prompt_falls_back_to_defaults_on_db_error(): + with patch.object( + main, "get_all_settings", new=AsyncMock(side_effect=RuntimeError("relation \"settings\" does not exist")) + ): + prompt = await main._identity_system_prompt() + + assert main.SETTINGS_DEFAULTS["assistant_name"] in prompt + assert main.SETTINGS_DEFAULTS["company_name"] in prompt + assert main.SETTINGS_DEFAULTS["contact_email"] in prompt