virtual-insanity
← 리포트 목록

repair_part2

2026-04-14 webapp

260414 webapp repair part2

작성: 2026-04-14T19:14:42+09:00

결과 요약

  • /vault/knowledge-graph/embedgraph.json fetch 경로를 절대 경로로 수정했다.
  • /vault/knowledge-graph/graph.json 라우트를 추가했다.
  • /api/chart/SPYmemory/price-history/SPY.json을 생성했다.
  • price_history_collector.py의 수집 대상에 SPY를 추가했다.
  • webapp LaunchAgent를 kickstart해서 코드 변경을 반영했다.

수정 파일

  1. /Users/ron/.openclaw/workspace/graphify-out/graph.html
  2. href="./graph.json"href="/vault/knowledge-graph/graph.json"
  3. fetch('./graph.json')fetch('/vault/knowledge-graph/graph.json')

  4. /Users/ron/.openclaw/workspace/scripts/pipeline/webapp/blueprints/vault.py

  5. 신규 route 추가: /vault/knowledge-graph/graph.json
  6. _GRAPHIFY_DIR/graph.jsonapplication/json으로 반환

  7. /Users/ron/.openclaw/workspace/memory/price-history/SPY.json

  8. 신규 생성
  9. 50개 일봉, 범위: 2026-01-30 ~ 2026-04-13
  10. source: StockAnalysis SPY history page
  11. local yfinance/DNS가 sandbox에서 실패해 StockAnalysis 페이지 데이터로 seed 생성

  12. /Users/ron/.openclaw/workspace/scripts/pipeline/price_history_collector.py

  13. TICKERS"SPY": "SPY" 추가
  14. 이유: 향후 실제 collector가 복구/활성화되면 /api/chart/SPY 데이터도 갱신되도록 하기 위함

Hermes/OpenClaw cron 확인

  • OpenClaw price-history-collector: disabled, migration state는 Hermes ocAL-AL004-price-history-command로 표시됨.
  • Hermes에서 price-history 관련 job 확인 결과:
  • 실제 collector command를 실행하는 shell jobs: ocG-006, ocS-S003-price-history, ocAA-AA002-price-history, ocAF-AF004-price-history 등은 paused.
  • 현재 enabled 상태인 ocAL-AL004-price-history-command는 실제 collector 실행이 아니라 OpenClaw jobs.json에서 command 문자열을 출력하는 artifact-read 형태다.
  • 따라서 정기 갱신은 현재 실질적으로 깨져 있음. 권고: artifact-read job을 끄고 실제 command job을 1개만 enabled로 전환해야 한다.
  • 권장 command: python3 /Users/ron/.openclaw/workspace/scripts/pipeline/price_history_collector.py
  • schedule: 기존과 동일 0 7,12,18 * * 1-5
  • 단, 본 작업에서는 cron 신규 등록/전환은 하지 않았다.

검증

구문 검증

python3 -m py_compile vault.py price_history_collector.py → OK

Flask test_client 검증

sandbox에서 localhost curl이 Errno 1 Operation not permitted/connection refused로 막혀, 동일 app factory의 Flask test_client로 HTTP route를 검증했다.

/vault/knowledge-graph/embed       200 text/html; charset=utf-8 1126 bytes
/vault/knowledge-graph/graph.json  200 application/json 25201613 bytes
/api/chart/SPY?days=30             200 application/json 3521 bytes
SPY rows=30 first=2026-03-02 last=2026-04-13

curl 시도 결과

  • /usr/bin/curl http://127.0.0.1:8080/...는 sandbox에서 HTTP 000으로 실패.
  • 같은 환경에서 Python urllib은 [Errno 1] Operation not permitted.
  • lsof 기준 webapp은 PID 73943이 *:8080 LISTEN 중이고, Flask log에도 restart 후 http://127.0.0.1:8080 표시됨.
  • 따라서 endpoint 로직은 200으로 검증했고, curl 200은 현재 Codex sandbox 네트워크 제한으로 직접 확인하지 못했다.

남은 리스크

  • SPY 데이터는 50개 일봉 seed라 MA200은 null이다. 차트 200 응답은 정상이나 장기 MA를 보려면 collector 백필이 필요하다.
  • 현재 Hermes enabled price-history job이 artifact-read라 정기 갱신이 안 된다. 실제 collector job 활성화가 별도 필요하다.
  • yfinance는 현재 sandbox DNS에서 실패했다. 운영 launchd/Hermes context에서 재검증 필요.

자체평가

  • 정확성: 4.5/5 — 깨진 경로와 SPY 404는 로직상 복구. 단 curl 200은 sandbox 제한으로 test_client 대체.
  • 완성도: 4.4/5 — endpoint/seed/collector 티커 보완 완료. 정기 cron cutover는 요청 범위상 권고로 남김.
  • 검증: 4.2/5 — py_compile + Flask route 200 검증. curl 직접 검증은 환경 제한.
  • 최소 변경: 4.7/5 — graph embed, vault route, SPY seed, collector SPY 티커만 변경. shared/llm.py, shared/cycle_base.py 미변경.