From 6bb045d761a47b5cb7db424bd365dc6edafecc03 Mon Sep 17 00:00:00 2001 From: Sam Chau Date: Thu, 21 Aug 2025 09:58:51 +0930 Subject: [PATCH] fix(yaml): add normalization of boolean keys to strings for JSON compatibility --- backend/app/git/status/comparison.py | 13 +++++++++++++ docker-compose.yml | 5 +---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/backend/app/git/status/comparison.py b/backend/app/git/status/comparison.py index 07f5fd3..9272db4 100644 --- a/backend/app/git/status/comparison.py +++ b/backend/app/git/status/comparison.py @@ -158,6 +158,16 @@ def compare_yaml(old_data: Any, return changes +def normalize_yaml_keys(data): + """Convert boolean keys to strings in YAML data to avoid JSON serialization issues""" + if isinstance(data, dict): + return {str(k): normalize_yaml_keys(v) for k, v in data.items()} + elif isinstance(data, list): + return [normalize_yaml_keys(item) for item in data] + else: + return data + + def create_change_summary(old_data: Optional[Dict], new_data: Optional[Dict], file_path: str) -> Dict[str, Any]: """ @@ -180,6 +190,9 @@ def create_change_summary(old_data: Optional[Dict], new_data: Optional[Dict], - changes: Detailed changes from compare_yaml """ try: + # Normalize keys to avoid JSON serialization issues with boolean keys + old_data = normalize_yaml_keys(old_data) if old_data else None + new_data = normalize_yaml_keys(new_data) if new_data else None filename = os.path.basename(file_path) new_name = new_data.get("name") if new_data else None old_name = old_data.get("name") if old_data else None diff --git a/docker-compose.yml b/docker-compose.yml index 4ddecb5..f5f32fd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3.8' services: frontend: build: ./frontend @@ -19,6 +18,4 @@ services: - ./config:/config environment: - TZ=Australia/Adelaide - env_file: - - .env - restart: always \ No newline at end of file + restart: always