# 398/400/401 통합 처리 설계

## 개요
이 문서는 이슈 #398, #400, #401을 `origin/main` 기반 통합 브랜치에서 순차적으로 처리하고,
각 PR을 셀프 리뷰 및 CI 게이트로 검증한 뒤 머지하는 운영 설계를 정의한다.
최종 머지된 통합 브랜치에서 overnight 스크립트를 실행하고, 모니터링 이후에도 프로그램은 계속 실행 상태를 유지한다.

## 목표
- 통합 브랜치: `feature/398-400-401`
- 작업 브랜치: `fix/398`, `fix/400`, `fix/401`
- PR base: 모두 `feature/398-400-401`
- 머지 조건: `CI 전체 통과` + `셀프 리뷰에서 minor 포함 이슈 0건`
- 최종 확인: 통합 브랜치에서 overnight 실행 및 모니터링, 프로세스 지속 실행

## 아키텍처
- `origin/main`에서 `feature/398-400-401` 생성
- 각 이슈는 독립 브랜치(`fix/398`, `fix/400`, `fix/401`)에서 구현
- PR은 순차적으로 생성/검증/머지 (`398 -> 400 -> 401`)
- 각 PR은 셀프 리뷰 코멘트를 남기고, minor 이상 발견 시 수정 후 재검증
- 3개 PR 머지 완료 후 통합 브랜치에서 overnight 백그라운드 실행 및 로그 모니터링
- 모니터링 완료 후에도 프로세스는 종료하지 않음

## 컴포넌트
- Git/브랜치 컴포넌트: 브랜치 생성, 리베이스, 충돌 해결
- 이슈 구현 컴포넌트:
  - #398: KR 주문 `rt_cd` 실패 처리, 오알림/오기록 차단
  - #400: US 세션 전환 감지, US_DAY 억제, US_REG 진입 이벤트/강제 재스캔
  - #401: 시장 단위 병렬 처리 및 공유 상태 동시성 보호
- PR 운영 컴포넌트: PR 생성, 셀프 리뷰 코멘트 작성, 승인 기준 확인
- CI 게이트 컴포넌트: 체크 상태 폴링 및 pass 확인
- 머지 컴포넌트: 게이트 통과 PR만 머지
- 런타임 검증 컴포넌트: overnight 실행, 로그 추적, 프로세스 생존 확인

## 데이터/제어 흐름
1. `feature/398-400-401` 생성
2. `fix/398` 구현 -> 테스트 -> 커밋 -> PR 생성
3. 셀프 리뷰 코멘트 작성(결함 레벨 포함)
4. CI 완료 대기 후 `CI pass && minor 0`이면 머지
5. `fix/400`, `fix/401`에 대해 동일 절차 반복
6. 통합 브랜치에서 overnight 백그라운드 실행
7. 로그/상태 모니터링으로 실제 동작 확인
8. 결과 보고 후에도 프로세스는 계속 실행

## 에러 처리/복구
- PR 생성/충돌 실패: 해당 브랜치만 중단 후 해결, 다른 브랜치와 격리 유지
- 셀프 리뷰 실패(minor 포함): 머지 금지, 수정 커밋 후 리뷰 갱신
- CI 실패: 실패 원인 수정 후 재푸시, 재검증
- 머지 실패: base 최신화 및 재시도
- overnight 시작 실패: 로그 분석 후 재기동
- 모니터링 중 오류: 오류 보고는 하되 자동 종료하지 않고 실행 유지

## 테스트/검증
- PR별 관련 단위/통합 테스트 실행
- 필요 시 `tests/test_main.py`, `tests/test_runtime_overnight_scripts.py` 포함 회귀 실행
- 셀프 리뷰는 `Critical/Major/Minor` 기준으로 작성
- minor 0건 명시된 경우에만 머지 진행
- 최종 통합 브랜치에서 overnight 기동/루프 진입/에러 로그 확인
- PID/프로세스 생존 확인 후 실행 지속 상태 보고

## 비목표
- 본 문서는 구현 상세 코드 변경 자체를 다루지 않는다.
- 본 문서는 외부 리뷰어 승인 프로세스를 다루지 않는다(셀프 리뷰만 대상).
