fix(prediction): dark_suspicion Adapter 입력 매핑 교정 (run_outputs 0 rows silent) #95
No reviewers
레이블
레이블 없음
마일스톤 없음
담당자 없음
참여자 2명
알림
마감일
마감일이 설정되지 않았습니다.
의존성
No dependencies set.
Reference: gc/kcg-ai-monitoring#95
불러오는 중...
Reference in New Issue
Block a user
No description provided.
Delete Branch "fix/dark-suspicion-adapter-input"
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?
변경 요약
Detection Model Registry end-to-end 검증 중
detection_model_run_outputs=0 rows로 나오는 silent 문제 발견·수정.evaluated_count=0메트릭이 조기 포착 — Phase 1-2 의 가시성 장치가 실전에서 역할.원인
DarkSuspicionModel.run()이ctx.inputs[*].features.gap_info.is_dark경로로 대상을 필터했으나, 실제AnalysisResult.featuresJSONB 는gap_info키를 포함하지 않음. 실제 스키마:즉 scheduler 가 이미
compute_dark_suspicion을 돌려 결과를 flatten 저장하므로, 2중 계산 시도가 잘못된 경로.수정
Adapter 를
transshipment_5stage/risk_composite/pair_trawl_tier와 동일한 관찰형 으로 재작성:row.is_dark필터 후features.dark_suspicion_score / dark_tier / dark_patternsJSONB snapshot 기록evaluated_count / critical_count / high_count / watch_count / none_count / avg_scoreinput_ref: {mmsi, analyzed_at, gap_min}운영 검증 (E2E)
파일 교체 + 재기동 → 1 사이클 후:
detection_model_run_outputsevaluated_countcritical_counthigh_countwatch_countnone_countavg_scorecycle_duration_msDAGExecutor doneexecuted=1 failed=0샘플 outputs (JSONB):
범위 밖 (후속 PR)
현 버전은 기존
compute_dark_suspicion결과를 관찰 만. ACTIVE 버전 params 를 compute 함수에 런타임 주입 하는 scheduler 호출부 리팩토링은 별도 PR. 이는 5 모델 모두 동일 상태(카탈로그 + 관찰만).테스트
python -m unittestprediction 기반 테스트 23/23 통과배포
scp+systemctl restart)기존 DarkSuspicionModel.run() 이 ctx.inputs[*].features.gap_info.is_dark 로 대상을 필터했으나, 실제 AnalysisResult.features 는 gap_info 키를 포함하지 않고 다음으로 이미 flatten 저장됨: - dark_suspicion_score (0~100 int) - dark_tier ('CRITICAL'/'HIGH'/'WATCH'/'NONE') - dark_patterns (list[str]) - gap_start_state / gap_start_sog / gap_start_lat / gap_start_lon 결과: PRIMARY 승격 + feature flag=1 적용해도 Adapter 가 한 선박도 평가하지 못해 detection_model_run_outputs 에 0 rows 적재 — E2E 검증 에서 evaluated_count=0 메트릭이 silent 조기 포착. 수정: Adapter 를 transshipment/risk/pair_trawl 과 동일한 관찰형으로 재작성. - row.is_dark 필터 후 기존 결과(score/tier/patterns) JSONB snapshot 기록 - critical/high/watch/none_count + avg_score 메트릭 집계 - input_ref: {mmsi, analyzed_at, gap_min} 운영 반영 후 1 사이클에서 3508 rows 적재 (141 CRITICAL / 467 HIGH / 963 WATCH / avg_score=27.78) 확인. 범위 밖 (후속 PR): - compute_dark_suspicion 에 ACTIVE 버전 params 를 런타임 주입해 실제 score/tier 재계산하는 scheduler 호출부 리팩토링. 현 상태는 params 카탈로그 관찰까지만 (나머지 4 모델과 동일 수준). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>E2E 검증에서 silent 포착 → 수정 → 3508 rows 적재 확인. 관찰형 Adapter 로 5 모델 일관. LGTM