diff --git a/prediction/scheduler.py b/prediction/scheduler.py index de27e68..7032046 100644 --- a/prediction/scheduler.py +++ b/prediction/scheduler.py @@ -212,9 +212,19 @@ def run_analysis_cycle(): pt_sub_registered: set[str] = set() # TODO: fishery_code=PT-S 구분 base_mmsis: set[str] = {c['mmsi'] for c in classifications} base_mmsis |= pt_registered + # pool_tracks: 중국 전체 8k+ 선박의 sog/cog 계산된 궤적 + # df_targets 는 select_analysis_targets() 에서 이미 전체 412* 에 sog/cog 계산 + # (vessel_store._tracks 는 raw_sog 만 보유해 _trajectory_similarity 가 동작 안 함) + pool_tracks: dict = {} + try: + for mmsi_val, grp in df_targets.groupby('mmsi'): + pool_tracks[str(mmsi_val)] = grp.reset_index(drop=True) + except Exception as e: + logger.warning('pool_tracks 생성 실패, vessel_dfs fallback: %s', e) + pool_tracks = dict(vessel_dfs) + # 조업 속력대(1.5~5.0kn)에서 움직이는 모든 중국 선박을 base로 확장. # classifications 500척만으로는 bbox 기점이 부족해 실제 공조 페어를 놓침. - pool_tracks = getattr(vessel_store, '_tracks', {}) or vessel_dfs for mmsi, df in pool_tracks.items(): if not mmsi.startswith('412'): continue