fix(prediction): pair_trawl pool 에 sog/cog 계산된 궤적 사용 (A-1 후속)
버그: vessel_store._tracks 는 raw_sog 만 보유 → _trajectory_similarity 가 sog/cog 컬럼 부재로 항상 0 반환 → candidates=0. df_targets(select_analysis_targets 결과, 412* 전체 8k+ 에 sog/cog 계산) 를 mmsi 별로 groupby 하여 pool_tracks dict 생성. base 확장 필터의 sog 컬럼도 동일하게 적용. 첫 사이클 로그: base=512, pool=54825 → candidates=0 (2026-04-16 09:25). 수정 후 재검증 예정.
This commit is contained in:
부모
1a065840bd
커밋
6c08d831d0
@ -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
|
||||
|
||||
불러오는 중...
Reference in New Issue
Block a user