fix: prediction e2e — Decimal/violation/KPI/stats/parent workflow 5건 수정 #12
No reviewers
레이블
레이블 없음
마일스톤 없음
담당자 없음
참여자 2명
알림
마감일
마감일이 설정되지 않았습니다.
의존성
No dependencies set.
Reference: gc/kcg-ai-monitoring#12
불러오는 중...
Reference in New Issue
Block a user
No description provided.
Delete Branch "feature/prediction-e2e-fixes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
prediction 분석 사이클의 gear_correlation Decimal TypeError, violation_classifier 필드 누락, kpi_writer/stats_aggregator UTC→KST 수정, V016 parent workflow 누락 컬럼 일괄 추가.
## 이슈 1: gear_correlation Decimal → float TypeError - prediction/algorithms/gear_correlation.py:785 - _load_all_scores()가 NUMERIC 컬럼을 Decimal로 읽어 float 상수와 연산 시 실패 - float() 명시 변환으로 수정 - 효과: gear correlation 24,474 raw metrics + 3,966 scores 정상 기록 ## 이슈 2: violation_classifier classified=0 문제 - prediction/output/violation_classifier.py - result.get('id')는 AnalysisResult에 없어 항상 None → 모든 UPDATE 건너뜀 - 존재하지 않는 permit_status/gear_judgment 필드에 의존 - (mmsi, analyzed_at) 기준 UPDATE로 변경 - 중국 선박(412/413*) + EEZ 진입은 permit 없어도 EEZ_VIOLATION 판정 - 효과: classified=0 → classified=4~6/cycle ## 이슈 3: kpi_writer 모두 0 (tracking_active 외) - prediction/output/kpi_writer.py:27 - date.today() + timezone.utc 혼용 → 현재 시각이 UTC로는 아직 '어제'라 '오늘 >= today_start' 쿼리가 0 반환 - KST 기준으로 today_start 계산 - 효과: realtime_detection 0 → 7,107, illegal_transship 0 → 5,033 ## 이슈 4: stats_daily 오늘 0건 - prediction/output/stats_aggregator.py:96, 194 - aggregate_daily/monthly가 UTC 경계 사용 - KST 기준 자정으로 수정 - 효과: 2026-04-08 detections 0 → 543,656, events 0 → 5,253 ## 이슈 5: parent workflow 테이블 누락 컬럼 (V005 ↔ prediction 불일치) V016 마이그레이션으로 일괄 추가: - gear_parent_label_sessions: label_parent_name, normalized_parent_name, duration_days, actor, comment, metadata, updated_at 등 8개 컬럼 - gear_group_parent_resolution: parent_name, normalized_parent_name, selected_parent_name, confidence, decision_source, top_score, second_score, score_margin, stable_cycles, evidence_summary, episode_id, continuity_*, prior_bonus_total, last_evaluated_at, last_promoted_at 등 17개 컬럼 - gear_parent_candidate_exclusions: normalized_parent_name, reason_type, duration_days, metadata, updated_at, active_from, active_until + candidate_mmsi GENERATED ALWAYS AS (excluded_mmsi) 별칭 - gear_group_parent_candidate_snapshots: parent_name 효과: gear parent inference: 925 groups, 301 direct-match, 1329 candidates, 188 review-required, 925 episode-snapshots 기록 — 전체 모선 워크플로우 정상 ## 검증 결과 (e2e) - analysis cycle: 6,824 vessels, 112초/cycle 정상 - vessel_analysis_results: 10분 13,650건, 총 125만건 - prediction_events: 1시간 138건, 총 12,258건 - prediction_alerts: 1시간 183건 - gear_correlation_scores: 3,966건 - gear_group_parent_resolution: 926건 - stats_hourly: 17행, stats_daily: 오늘 543,656건 - 백엔드 Flyway V016 정상 적용 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>approved