kcg-ai-monitoring/prediction
htlee 197da13826 refactor(prediction): 사이클 스테이지 에러 경계 도입 (Phase 0-1)
docs/prediction-analysis.md P1 권고 반영. 5분 사이클의 각 스테이지를
한 try/except 로 뭉친 기존 구조를 스테이지 단위로 분리해 실패 지점을
명시적으로 특정하고 부분 실패 시에도 후속 스테이지가 계속 돌아가도록 개선.

- prediction/pipeline/stage_runner.py 신설
  - run_stage(name, fn, *args, required=False, **kwargs) 유틸
  - required=True 면 예외 re-raise (상위 사이클 try/except 가 잡도록)
  - required=False 면 logger.exception 으로 stacktrace 보존 + None 반환
  - 지속시간 로깅 포함

- prediction/scheduler.py run_analysis_cycle() 수정
  - 출력 단계 6모듈을 각각 run_stage() 로 분리:
    violation_classifier / event_generator / kpi_writer /
    stats_aggregate_hourly / stats_aggregate_daily / alert_dispatcher
  - upsert_results / cleanup_old 도 run_stage 로 래핑 (upsert 는 required=True)
  - 내부 try/except 의 logger.warning → logger.exception 으로 업그레이드
    (fetch_dark_history, gear collision event promotion, group polygon,
     gear correlation, pair detection, chat cache)
  - 스테이지 실패 시 journalctl -u kcg-ai-prediction 에서 stacktrace 로
    원인 바로 특정 가능 (기존은 "failed: X" 한 줄만 남아 디버깅 불가)

검증:
- python3 -c "import ast; ast.parse(...)" scheduler.py / stage_runner.py 통과
- run_stage smoke test (정상/실패 흡수/required 재raise 3가지) 통과

범위 밖 (후속):
- Phase 0-2 ILLEGAL_FISHING_PATTERN 전용 페이지 (다음 MR)
- Phase 0-3 Transshipment 전용 페이지 (다음 MR)
2026-04-17 11:28:30 +09:00
..
algorithms feat(detection): GEAR_IDENTITY_COLLISION 탐지 패턴 추가 2026-04-17 06:53:12 +09:00
cache feat: prediction 알고리즘 재설계 + 프론트 CRUD 권한 가드 보완 (#29) 2026-04-13 11:08:11 +09:00
chat feat: S2 prediction 분석 엔진 모노레포 이식 2026-04-07 12:56:51 +09:00
data feat: prediction 알고리즘 재설계 + 프론트 CRUD 권한 가드 보완 (#29) 2026-04-13 11:08:11 +09:00
db feat(prediction): vessel_analysis_results 에 분석 시점 lat/lon 저장 2026-04-16 14:30:49 +09:00
models feat(prediction): vessel_analysis_results 에 분석 시점 lat/lon 저장 2026-04-16 14:30:49 +09:00
output feat(detection): GEAR_IDENTITY_COLLISION 탐지 패턴 추가 2026-04-17 06:53:12 +09:00
pipeline refactor(prediction): 사이클 스테이지 에러 경계 도입 (Phase 0-1) 2026-04-17 11:28:30 +09:00
scripts feat(prediction): 서버 스크립트에 tier/match_method/G-02/G-03 추적 추가 2026-04-16 09:50:42 +09:00
tests feat: S2 prediction 분석 엔진 모노레포 이식 2026-04-07 12:56:51 +09:00
config.py feat: prediction 알고리즘 재설계 + 프론트 CRUD 권한 가드 보완 (#29) 2026-04-13 11:08:11 +09:00
env.example feat: S2 prediction 분석 엔진 모노레포 이식 2026-04-07 12:56:51 +09:00
fleet_tracker.py feat(detection): GEAR_IDENTITY_COLLISION 탐지 패턴 추가 2026-04-17 06:53:12 +09:00
main.py feat(detection): DAR-03 어구 탐지 워크플로우 + 모선 검토 UI + 24h 리플레이 통합 2026-04-15 13:26:15 +09:00
requirements.txt feat: S2 prediction 분석 엔진 모노레포 이식 2026-04-07 12:56:51 +09:00
scheduler.py refactor(prediction): 사이클 스테이지 에러 경계 도입 (Phase 0-1) 2026-04-17 11:28:30 +09:00
time_bucket.py feat: S2 prediction 분석 엔진 모노레포 이식 2026-04-07 12:56:51 +09:00