You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.3 KiB
5.3 KiB
Phase 2 구현 계획
이 문서는 AI 코딩 에이전트가 Phase 2를 실제로 구현할 수 있도록 작업 순서, 산출물, 완료 기준을 정의합니다.
1. 구현 원칙
- 작은 단위로 쪼개서 머지 가능한 PR 수준으로 작업합니다.
- 각 단계는 테스트 가능한 산출물을 남겨야 합니다.
- raw-first / idempotent / replayable 원칙을 절대 깨지 않습니다.
TODO로 남기는 것보다 최소 동작 경로를 먼저 완성합니다.- Phase 2 범위 밖 기능을 섞지 않습니다.
2. 선행조건
아래가 준비되어 있어야 합니다.
- Phase 0 문서 승인
- Phase 1 문서 승인
- 저장소 구조 초기화
- PostgreSQL/DuckDB 연결 확인
- 공통 설정 로더 및 로깅 유틸 준비
- Phase 1 DB migration baseline 적용
3. 작업 분할
Workstream A — 공통 실행 프레임
A1. Job Runner 공통 모듈
구현:
- run_id 생성기
- job context
- structured log helper
- 상태 전이 helper
- retry helper
완료 기준:
- 샘플 job이 created → running → completed까지 상태를 남길 수 있어야 함
A2. Checkpoint Store
구현:
- checkpoint load/save 인터페이스
- source/job별 namespace
- optimistic update 또는 atomic update
완료 기준:
- 샘플 key에 대해 저장/조회/갱신 가능
- race condition 기본 테스트 통과
A3. Raw File Store
구현:
- temp write → checksum → atomic rename
- sidecar 메타 저장
- path builder
완료 기준:
- 샘플 payload에 대해 raw + sidecar 저장 가능
- checksum mismatch 시 예외 발생
Workstream B — SEC 수집기
B1. submissions poll
구현:
- CIK 목록 입력
- submissions JSON fetch
- raw 저장
- filing header staging 생성
- documents upsert
완료 기준:
- 최소 1개 CIK에 대해 최신 submissions 처리 성공
- 신규 accession 탐지 가능
B2. filing fetch
구현:
- accession 대상 fetch
- filing text/index/exhibit 저장
- artifact inventory 생성
완료 기준:
- accession 1건에 대해 filing 본문과 99.1 저장 가능
B3. xbrl extract
구현:
- XBRL 대상 식별
- 주요 fact rows 추출
- canonical fact 저장
완료 기준:
- accession 1건에서 fact rows 생성 가능
Workstream C — Alpaca 수집기
C1. daily bars backfill
구현:
- symbol/date range 입력
- raw 저장
- canonical daily bars 생성
- PostgreSQL/Parquet 저장
완료 기준:
- 3개 이상 심볼, 20일 이상 backfill 성공
C2. intraday bars poll
구현:
- symbol list 입력
- 지정 trading day intraday 수집
- canonical intraday bars 생성
완료 기준:
- 1개 trading day에 대해 분봉 데이터 저장 가능
Workstream D — FRED / FINRA 수집기
D1. FRED series sync
구현:
- series_id 목록 설정
- series metadata + observations 저장
완료 기준:
- 3개 이상 series 동기화 성공
D2. FINRA short volume
구현:
- 거래일 파일 fetch
- 파싱 및 구조화
- 비정상 행 검출
완료 기준:
- 1일 파일 처리 및 symbol row 저장 성공
Workstream E — 검증 및 운영
E1. Data Quality Validator
구현:
- uniqueness 검사
- null/empty 검사
- timestamp/date 범위 검사
- freshness 검사
완료 기준:
- source별 검증 리포트 생성 가능
E2. CLI + Cron friendly entrypoints
구현:
- 각 잡 CLI
- dry_run / backfill / replay 지원
완료 기준:
- 문서에 있는 CLI 예시가 실제로 동작
E3. Runbook support
구현:
- failed run 재시도 명령
- quarantine 조회 명령
- lineage 조회 유틸
완료 기준:
- 운영자가 CLI만으로 기본 진단 가능
4. 권장 구현 순서
- Workstream A
- Workstream B1
- Workstream C1
- Workstream D1 / D2
- Workstream B2
- Workstream C2
- Workstream B3
- Workstream E
이 순서의 이유:
- 먼저 공통 런타임을 안정화해야 함
- 그 다음 전략에 가장 중요한 SEC + 일봉 가격부터 확보
- 나머지 소스는 이후 붙여도 연구가 가능
5. AI 코딩 에이전트용 세부 지시
5.1 구현 스타일
- 각 collector는
main.py,runner.py,client.py,normalize.py,write.py로 분리 - source별 하드코딩 최소화
- 공통 로직은
libs/common,libs/adapters,libs/db로 이동 - 타입힌트 필수
- 테스트 fixture를 먼저 만들고 구현
5.2 금지사항
- source adapter 내부에서 전략 점수 계산 금지
- raw 저장 없이 structured write 금지
- print 기반 로그 금지
- 전역 mutable state 금지
- silent failure 금지
5.3 필수 구현 항목
- dry_run
- replay
- force
- run_id propagation
- checksum capture
- structured log
- checkpoint persistence
6. 각 PR 또는 작업 단위의 Definition of Done
모든 작업은 아래를 만족해야 완료로 봅니다.
- 코드 구현 완료
- 단위 테스트 추가
- 최소 1개 통합 테스트 추가
- README 또는 해당 문서 갱신
- 예외/오류 메시지 사람이 이해 가능
- 로그에 run_id 포함
- idempotent 재실행 확인
7. 최종 완료 기준
Phase 2 전체 완료 조건:
- SEC / Alpaca / FRED / FINRA 수집기가 모두 동작한다.
- poll/backfill/replay 3모드가 적어도 핵심 source에 구현돼 있다.
- raw/staging/structured lineage가 연결된다.
- job_runs / checkpoint / quality result가 기록된다.
- 운영자가 runbook만 보고 수집 상태를 확인하고 재실행할 수 있다.