virtual-insanity
← 리포트 목록

repair_part1

2026-04-14 webapp

260414 Webapp Repair Part 1 — /api/ops, /graph

결론

  • /api/ops 500 복구 완료: live curl 200 OK.
  • /graph 404 복구 완료: live curl 200 OK, Knowledge Graph HTML 렌더 응답 확인.
  • 금지 파일(shared/llm.py, shared/cycle_base.py)은 수정하지 않음.

수정 내역

1) /api/ops 500

  • 파일: ~/.openclaw/workspace/scripts/pipeline/webapp/blueprints/market.py
  • 원인: api_ops()_L() 반환값을 8개로 언패킹했지만, 현재 _L()은 10개 loader를 반환해 ValueError: too many values to unpack (expected 8) 발생.
  • 조치: 필요한 loader만 인덱스로 명시 참조하도록 변경.
  • load_agent_worker_statusloaders[4]
  • load_system_digest_summaryloaders[5]
  • load_cowork_tasksloaders[7]

2) /graph 404

  • 파일: ~/.openclaw/workspace/scripts/pipeline/webapp/blueprints/vault.py
  • 원인: Knowledge Graph 화면은 /vault/knowledge-graph로만 등록되어 있고 /graph 별칭 라우트가 없었음.
  • 조치: 같은 view에 /graph route alias 추가.

검증 결과

정적/앱 내부 검증

python3 -m py_compile webapp/blueprints/market.py webapp/blueprints/vault.py
=> OK

Flask test_client:

/api/ops 200 application/json 19278
/graph 200 text/html; charset=utf-8 26850

live server 검증

launchctl kickstart -k gui/$(id -u)/com.openclaw.sihwang-webapp 후 localhost:8080에서 확인.

/api/ops status=200 bytes=19278
/graph status=200 bytes=26850

/graph HTML 표식:

<title>Knowledge Graph — virtual-insanity</title>
<h1 ...>Knowledge Graph</h1>
fetch(`/api/vault/knowledge-graph?...`)

비고

  • stealth-browser 도구는 현재 세션에 제공되지 않아 사용하지 못함.
  • 대신 Flask 렌더링 + live curl HTML 응답으로 대체 검증함.
  • 이 작업에서 의도한 변경은 /api/ops loader 언패킹 수정과 /graph alias 추가뿐이다. 같은 파일의 기존 미커밋 변경은 다른 작업 맥락일 수 있어 건드리지 않았다.

자체 평가

  • 정확성: 5/5
  • 완성도: 4.5/5
  • 검증: 4.5/5
  • 최소 변경: 4.5/5
  • 종합: 4.6/5