이 스킬
Event Radar Visual Decision Pack
이벤트 레이더 결과에서 사용할 수 있는 observed viz surface만 선택하고, evidenceBinding이 없으면 차트를 막는 L1/L1.5 절차다.
이어 가기
절차
실행 순서
- 1
visualRefs는 observed viz만 포함한다.
- 2
blocked visualRef를 emit하지 않는다.
예시
이런 질문이 들어오면 이 skill 을 쓴다
- 이벤트 레이더 시각화 가능 여부 확인
출력
기대 결과
- visualRef별 ready/blocked
- requiredBinding
공개 호출 방식
AI 도구 실행 순서는 EngineCall 우선이다. 아래 Python 블록은 확보한 L1/L1.5 근거를 buildEventRadarMemo로 묶는 RunPython fallback 절차다.
import dartlab
from dartlab.synth.eventRadar import buildEventRadarMemo
target = "005930"
c = dartlab.Company(target)
def rows(value, limit=40):
if hasattr(value, "head") and hasattr(value, "to_dicts"):
return value.head(limit).to_dicts()
if isinstance(value, list):
return value[:limit]
return []
try:
price_rows = rows(c.gather("price"), limit=40)
except Exception:
price_rows = []
try:
filings = rows(c.disclosure(), limit=50)
except Exception:
filings = []
memo = buildEventRadarMemo(
target=target,
market=str(getattr(c, "market", "KR")),
companyName=str(getattr(c, "corpName", target)),
filings=filings,
priceRows=price_rows,
)
emit_result(
table=memo["tables"]["visualDecisionPack"],
values=memo["headline"],
date=memo["asOf"],
sources=memo["sources"],
) 호출 동작
1. 결론 도출
4 visualRef ready/blocked + requiredBinding 단정. 예: “visualDecisionPack 4 row — priceChart ready (priceRows 40개 + date/close/volume 컬럼 통과) / kpiRibbon ready (action count + filing count 동행) / evidenceCoverage ready (coverage table 통과) / mermaidDiagram blocked (사건 cluster 노드 < 3 — 메커니즘 부재). 3 ready + 1 blocked → blocked 항목은 tableRef 로 우회.”
2. 핵심 근거 수집
- Company.gather(‘price’) latest 40 row — priceChart binding
- Company.disclosure() filings — kpiRibbon + evidenceCoverage binding
- buildEventRadarMemo() → visualDecisionPack table (4 viz × status + requiredBinding)
- viz status (engines.viz.{name}) observed 상태 확인
3. 메커니즘 분석
4 visualRef × (status + requiredBinding + evidence)
priceChart:
ready 조건 → priceRows 존재 + date/close/volume 컬럼 통과
blocked 시 → priceRows 결손 또는 컬럼 부적합 (tableRef 우회)
kpiRibbon:
ready 조건 → action count + filing count ≥ 1
blocked 시 → 모든 row 0 (의미 없음)
evidenceCoverage:
ready 조건 → sourceCoverageAudit table 통과
blocked 시 → audit 비어 있음
mermaidDiagram:
ready 조건 → cluster 노드 ≥ 3 + edge 근거 명시
blocked 시 → 메커니즘 흐름 부재 (8 노드 이하 의미 X)
↓
forbidden 발동 (회피):
unverified viz skill (예: engines.viz.experimental) → visualRefs 추가 X
priceRows 없이 priceChart → 차트 만들지 X (tableRef 우회)
blocked visual emit → false visualization visualDecisionPack 은 시각화 품질 게이트 — completed observed viz 만 통과. blocked 시 차트 대신 tableRef 로 답변 (forbidden 위반 회피).
4. 반례·한계
- visualRefs 에 unverified viz skill (incubator / experimental) 포함 → 품질 게이트 무너짐.
- priceRows 결손인데 priceChart=ready 표시 → false binding.
- requiredBinding 정의 모호 (예: “data 필요”) → 실제 검증 불가.
- 4 viz 외 mermaidDiagram 가 8 노드 이상 → engines.viz 가이드 위반.
5. 후속 모니터링
- 4 visualRef 모두 ready →
recipes.fundamental.disclosure.eventRadar.deepDive의 visual gate 통과. - priceChart blocked →
recipes.fundamental.disclosure.eventRadar.sourceCoverageAudit으로 source 확인. - mermaidDiagram blocked → cluster 분석 부재 —
recipes.news.eventTimelineFusion으로 cluster 만들기.
대표 반환 형태
| column | 의미 |
|---|---|
visualRef | observed viz skill |
status | ready/blocked |
requiredBinding | 필요한 근거 결합 |
evidence | 선택 사유 |
연계 절차
- recipes.fundamental.disclosure.eventRadar.sourceCoverageAudit - source coverage 확인.
- recipes.fundamental.disclosure.eventRadar.deepDive - 최종 답변의 visual gate.
기본 검증
- visualRefs는 observed viz만 포함한다.
- blocked visualRef를 emit하지 않는다.
런타임
실행 환경별 호환성
| 환경 | 상태 | 비고 / 제한 |
|---|---|---|
| Local Python | supported | — |
| Server | supported | — |
| MCP | supported | — |
| Web AI | supported | — |
| Pyodide | limited | — |
실패 회피
흔한 실패 · 절대 금지
- blocked visual을 무시하고 차트 emit
- unverified viz skill을 visualRefs에 연결하지 않는다.
- priceRows 없이 priceChart를 만들지 않는다.