260414 webapp repair part2
작성: 2026-04-14T19:14:42+09:00
결과 요약
/vault/knowledge-graph/embed의graph.jsonfetch 경로를 절대 경로로 수정했다./vault/knowledge-graph/graph.json라우트를 추가했다./api/chart/SPY용memory/price-history/SPY.json을 생성했다.price_history_collector.py의 수집 대상에SPY를 추가했다.- webapp LaunchAgent를 kickstart해서 코드 변경을 반영했다.
수정 파일
/Users/ron/.openclaw/workspace/graphify-out/graph.htmlhref="./graph.json"→href="/vault/knowledge-graph/graph.json"-
fetch('./graph.json')→fetch('/vault/knowledge-graph/graph.json') -
/Users/ron/.openclaw/workspace/scripts/pipeline/webapp/blueprints/vault.py - 신규 route 추가:
/vault/knowledge-graph/graph.json -
_GRAPHIFY_DIR/graph.json을application/json으로 반환 -
/Users/ron/.openclaw/workspace/memory/price-history/SPY.json - 신규 생성
- 50개 일봉, 범위: 2026-01-30 ~ 2026-04-13
- source: StockAnalysis SPY history page
-
local yfinance/DNS가 sandbox에서 실패해 StockAnalysis 페이지 데이터로 seed 생성
-
/Users/ron/.openclaw/workspace/scripts/pipeline/price_history_collector.py TICKERS에"SPY": "SPY"추가- 이유: 향후 실제 collector가 복구/활성화되면
/api/chart/SPY데이터도 갱신되도록 하기 위함
Hermes/OpenClaw cron 확인
- OpenClaw
price-history-collector: disabled, migration state는 HermesocAL-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이*:8080LISTEN 중이고, 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미변경.