feat: make agent work orders an optional feature

Add ENABLE_AGENT_WORK_ORDERS configuration flag to allow disabling the agent work orders microservice. Service discovery now gracefully handles unavailable services, and health checks return appropriate status when feature is disabled.

Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Rasmus Widing
2025-10-24 15:56:34 +03:00
parent acf1fcc21d
commit 6a8e784aab
6 changed files with 96 additions and 22 deletions

View File

@@ -16,12 +16,20 @@ client = TestClient(app)
def test_health_endpoint():
"""Test health check endpoint"""
"""Test health check endpoint - should be healthy when feature is disabled"""
response = client.get("/health")
assert response.status_code == 200
data = response.json()
assert data["status"] == "healthy"
# When feature is disabled (default), health check returns healthy
# When feature is enabled but dependencies missing, returns degraded
# We accept both as valid test outcomes
assert data["status"] in ["healthy", "degraded"]
assert data["service"] == "agent-work-orders"
assert "enabled" in data
# If disabled, should have explanatory message
if not data.get("enabled"):
assert "message" in data
def test_create_agent_work_order():

View File

@@ -154,14 +154,24 @@ def test_config_explicit_url_overrides_discovery_mode():
@pytest.mark.unit
@patch.dict("os.environ", {"STATE_STORAGE_TYPE": "file"})
def test_config_state_storage_type():
"""Test STATE_STORAGE_TYPE configuration"""
from src.agent_work_orders.config import AgentWorkOrdersConfig
import os
config = AgentWorkOrdersConfig()
# Temporarily set the environment variable
old_value = os.environ.get("STATE_STORAGE_TYPE")
os.environ["STATE_STORAGE_TYPE"] = "file"
assert config.STATE_STORAGE_TYPE == "file"
try:
from src.agent_work_orders.config import AgentWorkOrdersConfig
config = AgentWorkOrdersConfig()
assert config.STATE_STORAGE_TYPE == "file"
finally:
# Restore old value
if old_value is None:
os.environ.pop("STATE_STORAGE_TYPE", None)
else:
os.environ["STATE_STORAGE_TYPE"] = old_value
@pytest.mark.unit