# Event Parser JSON 규격 ## 1. 목적 이 규격은 문서 파서의 출력 형식을 고정합니다. 규칙 기반 파서와 LLM 기반 파서는 **동일한 출력 schema**를 따라야 합니다. ## 2. 최상위 구조 ```json { "schema_version": "1.0.0", "document_id": "DOC::SEC::0000789019::2026-01-28::0001193125-26-027198", "parser_kind": "rule|llm|merged", "event_type": "earnings_release", "event_direction": "bullish", "event_date": "2026-01-29", "filing_time_bucket": "pre_market|regular_hours|post_market|unknown", "headline": "Q2 results and guidance update", "summary": "Revenue grew and forward guidance improved.", "guidance": { "status": "raised", "scope": "quarterly", "notes": "Management raised next-quarter revenue guidance." }, "signals": { "demand_strength": "strong", "pricing_power": "present", "backlog_or_bookings": "present", "customer_expansion": "present", "margin_quality": "improving" }, "risk_flags": { "oneoff_item": false, "tax_benefit": false, "valuation_gain": false, "non_gaap_heavy": false, "financing_related": false, "legal_or_regulatory_overhang": false }, "evidence": [ { "label": "guidance_raise", "text_span": "expects revenue for Q3 to be between ...", "section_hint": "Exhibit 99.1", "confidence": 0.92 } ], "confidence": { "overall": 0.88, "event_type": 0.97, "event_direction": 0.85, "guidance": 0.83, "risk_flags": 0.74 }, "warnings": [] } ``` ## 3. 필수 필드 - `schema_version` - `document_id` - `parser_kind` - `event_type` - `event_direction` - `event_date` - `filing_time_bucket` - `summary` - `guidance` - `signals` - `risk_flags` - `confidence` ## 4. 필드 정의 ### 4.1 parser_kind 허용값: - `rule` - `llm` - `merged` ### 4.2 event_type 초기 허용값: - `earnings_release` - `guidance_update` - `material_contract` - `regulatory_or_approval` - `capital_markets_or_financing` - `management_change` - `litigation_or_investigation` - `other_material_event` - `unknown` ### 4.3 event_direction 허용값: - `bullish` - `bearish` - `mixed` - `neutral` - `unknown` ### 4.4 filing_time_bucket 허용값: - `pre_market` - `regular_hours` - `post_market` - `unknown` ### 4.5 guidance.status 허용값: - `raised` - `inline_or_maintained` - `lowered` - `withdrawn` - `not_provided` - `unclear` ### 4.6 signals 각 필드는 문자열 enum 또는 `unknown` - `demand_strength`: `strong|stable|weakening|unknown` - `pricing_power`: `present|mixed|absent|unknown` - `backlog_or_bookings`: `present|mixed|absent|unknown` - `customer_expansion`: `present|mixed|absent|unknown` - `margin_quality`: `improving|stable|deteriorating|unknown` ### 4.7 risk_flags 각 필드는 boolean ### 4.8 evidence 원문 근거 배열. 최소 0개 허용. 권장 최대 10개. 각 evidence 필드: - `label` - `text_span` - `section_hint` - `confidence` ### 4.9 confidence 0~1 실수 필수: - `overall` - `event_type` - `event_direction` - `guidance` - `risk_flags` ## 5. 설계 원칙 - parser는 확신이 없으면 `unknown` 또는 `unclear`를 사용합니다. - parser는 숫자를 추정하지 않습니다. - parser는 근거 없는 positive/negative 해석을 하지 않습니다. - LLM parser는 가능한 한 evidence를 함께 반환해야 합니다. - `summary`는 300자 이내 요약을 권장합니다. ## 6. validation 규칙 - 필수 필드 누락 시 invalid - enum 이탈 시 invalid - confidence 범위 벗어나면 invalid - evidence confidence도 0~1 범위여야 함 - `document_id`가 없으면 invalid ## 7. 향후 확장 예비 필드 Phase 1에서는 사용하지 않지만 향후 확장 가능: - `transcript_tone` - `qna_stress` - `supply_chain_signal` - `macro_exposure` - `ai_theme_relevance`