feat: JSON 배열 처리 및 오류 메시지 개선

- `_parse_json()` 메서드에서 최상위 JSON 배열을 허용하고, 이를 `actions` 리스트로 래핑하여 정상적인 파이프라인으로 이어지도록 개선
- JSON 파싱 실패 시 원인 파악을 돕기 위해 오류 메시지에 첫 비공백 문자를 포함
- 새로운 단위 테스트를 추가하여 JSON 객체 및 배열 파서의 회귀 방지
- README.md 및 문서에 변경 사항 반영
This commit is contained in:
kswdev0
2026-03-26 10:57:25 +09:00
parent 153f02f5e9
commit 0a46e16e5b
4 changed files with 141 additions and 3 deletions

View File

@@ -263,3 +263,22 @@
### README
- `GLM API 연결 문제 디버깅` 절 추가
---
## GLM 응답 형식 편차: JSON 객체 외(배열) 처리 강화
### 문제 관찰
- 로그에서 `ValueError: JSON 파싱 실패 ('{' 없음)`이 반복됨
- `_parse_json()`은 기본적으로 JSON 객체(`{...}`)를 기대하므로, GLM이 최상위에서 JSON 배열(`[...]`)로 응답하면 파싱 실패로 떨어질 수 있음
### 변경 목표
1. `_parse_json()`이 최상위 JSON 배열을 `actions` 리스트로 래핑해 정상 파이프라인으로 이어지게 함
2. 실패 시 원인 파악을 돕기 위해 `raw`의 첫 비공백 문자를 오류 메시지에 포함
3. `tests/test_ai_planner_parse_json.py`로 회귀 방지
### 구현 범위
- `ai_planner.py`
- `_parse_json()`에서 JSON `list`도 허용하고, `{' 없음`일 때 `[...]`를 균형 추출 후 래핑
- 실패 원인 로깅(첫 비공백 문자)
- `tests/`
- JSON 객체/배열 파서 단위 테스트 추가