# Phase 3 구현 계획

## 1. 선행조건

- Phase 0 승인 완료
- Phase 1 저장소/DB/서비스 계약 구현 완료
- Phase 2 ingestion 파이프라인이 raw/staging/structured 데이터를 안정적으로 제공
- parser_event.schema.json 사용 가능

## 2. 구현 단위

### Workstream A. Parser foundation
목표:
- 문서 선택기
- 텍스트 normalizer
- rule parser skeleton
- span mapper

완료 조건:
- 8-K + EX-99.1 문서를 정규화 텍스트로 만들 수 있다.

### Workstream B. LLM enrichment
목표:
- llm client wrapper
- schema validation
- prompt registry
- cache layer
- raw response logging

완료 조건:
- 동일 문서 재호출 없이 schema-valid 응답을 저장할 수 있다.

### Workstream C. Canonicalization
목표:
- rule + llm 병합
- provenance 저장
- disagreement 탐지
- review queue 생성

완료 조건:
- canonical event record를 event_records에 적재할 수 있다.

### Workstream D. Feature builder
목표:
- event/document/numeric/market/regime/attention feature 계산
- as_of_ts / available_ts 저장
- leakage validator

완료 조건:
- event_feature_records 생성 가능

### Workstream E. Labeling
목표:
- reaction date 계산
- entry convention별 label 생성
- MFE/MAE 계산
- snapshot export

완료 조건:
- train/valid/test parquet snapshot 생성 가능

### Workstream F. QA and review
목표:
- gold set loader
- parser evaluator
- review queue tooling
- weekly quality report skeleton

완료 조건:
- 골드셋 회귀 검증과 review queue triage 가능

## 3. 권장 작업 순서

1. document selector + normalizer 구현
2. rule parser 기본 필드 구현
3. line/span reference 구현
4. llm wrapper + schema validator 구현
5. canonical merge 구현
6. event feature builder 구현
7. market/regime feature join 구현
8. labeler 구현
9. dataset snapshot exporter 구현
10. review queue / gold set evaluator 구현

## 4. 금지사항

- 규칙/LLM 출력 형식을 중간에 자주 바꾸기
- evidence 없이 핵심 필드 저장
- as_of_ts 없는 feature 저장
- future leakage 검사 없이 label 생성
- raw response를 버리고 normalized output만 저장

## 5. Task slicing 예시

### Task 1
`apps/parser/document_selector.py`
- 입력: filing_documents
- 출력: parser_jobs
- 테스트: 8-K with EX-99.1 prioritization

### Task 2
`libs/common/text_normalizer.py`
- HTML to text
- disclaimer strip option
- hash generation

### Task 3
`apps/parser/rule_parser.py`
- guidance keywords
- one-off keywords
- demand/pricing/margin keywords

### Task 4
`libs/llm/client.py`
- invoke
- cache
- retry
- raw response persistence

### Task 5
`apps/parser/canonicalize.py`
- merge policy
- disagreement flags
- review queue write

### Task 6
`apps/feature_builder/build_event_features.py`
- parser-derived features
- availability metadata

### Task 7
`apps/feature_builder/build_market_features.py`
- reaction day price/volume features
- regime join

### Task 8
`apps/labeler/generate_labels.py`
- reaction_date
- entry_date
- 1D/3D/5D labels
- MFE/MAE

### Task 9
`apps/qa/evaluate_gold_set.py`
- parser metrics
- regression compare

## 6. 완료 정의

Phase 3 완료는 아래를 모두 만족해야 합니다.
- parser output schema validation 100%
- gold set core metrics가 baseline 이상
- feature leakage tests pass
- snapshot export reproducible
- review queue 생성/소진 흐름 작동
- operator가 파싱 실패 원인과 review 대상을 추적 가능
