feat(prediction): DAR-03 탐지 로직 보강 + 한중어업협정 906척 레지스트리 적재 #45

병합
htlee feature/dar03-detection-hardening 에서 develop 로 2 commits 를 머지했습니다 2026-04-16 07:46:30 +09:00
소유자

변경 사항

추가

  • 한중어업협정 중국어선 허가현황 레지스트리: V029 kcg.fishery_permit_cn(29컬럼, 연단위 스냅샷) + fleet_vessels.permit_year/fishery_code 컬럼. load_fishery_permit_cn.py로 연도별 XLS → DB 적재(906척/497 신청인사)
  • 페어 탐색 재설계: find_pair_candidates() bbox 1차 + 궤적 유사도 2차(location 0.4 + sog_corr 0.3 + cog_alignment 0.3). 동종 어선 페어도 허용, role 가점(PT_REGISTERED/COOP_FISHING/TRANSSHIP_LIKE)
  • fleet_tracker API 3개: get_pt_registered_mmsis / get_gear_episodes / get_gear_positions

수정

  • DAR-03 G-04/G-05/G-06 Dead code 해결: classify_gear_violations() scheduler 호출 연결. if 'pair_results' in dir() 버그 제거. 사이클당 G-05 303건 / G-04 1건 탐지 시작
  • spoofing 산식: 24h 희석 버그 → 최근 1h 윈도우 + teleport 절대 가점(건당 0.20) + extreme(>50kn) 단독 발견 시 score=max(0.6) 확정
  • gear_code DB write 경로: AnalysisResult.gear_code 필드 + kcgdb.upsert_results() + scheduler 두 경로에서 fleet_tracker.get_vessel_gear_code() 호출

변경

  • transshipment 선종 완화: _CARRIER_HINTS(cargo/tanker/supply/carrier/reefer) 부분일치 + 412* 중국어선 FISHING 간주
  • gear drift 임계: 750m → 500m (DAR-03 스펙 정합)
  • fleet_tracker 현재 연도 필터: permit_year 기반 단일 연도만 캐시

기타

  • cron 스크립트 신규 섹션: hourly P1~P5(허가/매칭/gear_code/fleet_role) + D3.5(pair_type) / diagnostic PART 7.5 + 4-5.5

관련 이슈

  • 운영 12시간 검증: Spoofing·Transship·G-04/05/06 탐지 0건 → SNPDB 원본 AIS 교차검증 결과 실제 이상선박 다수(teleport 474 MMSI, 지속페어 1,428건)에도 불구하고 Dead code/버그로 탐지 누락 확인 → 본 MR로 해결

테스트

  • 문법 검증 (ast.parse 7개 파일 통과)
  • redis-211 배포 + 첫 사이클 성공 (8,171 vessels upserted, 270s)
  • G-05 303건 / G-04 1건 / GEAR_MISMATCH 270건 탐지 확인
  • pool=55,328 확장 로그 확인
  • cron 스크립트 수동 실행 + 신규 섹션 출력 확인
  • pair_trawl 탐지 완화 튜닝 (후속)
  • spoofing > 0.5 탐지 활성화 (후속)
## 변경 사항 ### 추가 - **한중어업협정 중국어선 허가현황 레지스트리**: V029 `kcg.fishery_permit_cn`(29컬럼, 연단위 스냅샷) + `fleet_vessels.permit_year/fishery_code` 컬럼. `load_fishery_permit_cn.py`로 연도별 XLS → DB 적재(906척/497 신청인사) - **페어 탐색 재설계**: `find_pair_candidates()` bbox 1차 + 궤적 유사도 2차(location 0.4 + sog_corr 0.3 + cog_alignment 0.3). 동종 어선 페어도 허용, role 가점(PT_REGISTERED/COOP_FISHING/TRANSSHIP_LIKE) - **fleet_tracker API 3개**: `get_pt_registered_mmsis` / `get_gear_episodes` / `get_gear_positions` ### 수정 - **DAR-03 G-04/G-05/G-06 Dead code 해결**: `classify_gear_violations()` scheduler 호출 연결. `if 'pair_results' in dir()` 버그 제거. 사이클당 G-05 303건 / G-04 1건 탐지 시작 - **spoofing 산식**: 24h 희석 버그 → 최근 1h 윈도우 + teleport 절대 가점(건당 0.20) + extreme(>50kn) 단독 발견 시 score=max(0.6) 확정 - **gear_code DB write 경로**: `AnalysisResult.gear_code` 필드 + `kcgdb.upsert_results()` + scheduler 두 경로에서 `fleet_tracker.get_vessel_gear_code()` 호출 ### 변경 - **transshipment 선종 완화**: `_CARRIER_HINTS`(cargo/tanker/supply/carrier/reefer) 부분일치 + 412* 중국어선 FISHING 간주 - **gear drift 임계**: 750m → **500m** (DAR-03 스펙 정합) - **fleet_tracker 현재 연도 필터**: permit_year 기반 단일 연도만 캐시 ### 기타 - cron 스크립트 신규 섹션: hourly P1~P5(허가/매칭/gear_code/fleet_role) + D3.5(pair_type) / diagnostic PART 7.5 + 4-5.5 ## 관련 이슈 - 운영 12시간 검증: Spoofing·Transship·G-04/05/06 탐지 0건 → SNPDB 원본 AIS 교차검증 결과 실제 이상선박 다수(teleport 474 MMSI, 지속페어 1,428건)에도 불구하고 Dead code/버그로 탐지 누락 확인 → 본 MR로 해결 ## 테스트 - [x] 문법 검증 (`ast.parse` 7개 파일 통과) - [x] redis-211 배포 + 첫 사이클 성공 (8,171 vessels upserted, 270s) - [x] G-05 303건 / G-04 1건 / GEAR_MISMATCH 270건 탐지 확인 - [x] pool=55,328 확장 로그 확인 - [x] cron 스크립트 수동 실행 + 신규 섹션 출력 확인 - [ ] pair_trawl 탐지 완화 튜닝 (후속) - [ ] spoofing > 0.5 탐지 활성화 (후속)
htlee added 2 commits 2026-04-16 07:45:39 +09:00
- V029: kcg.fishery_permit_cn 신규 테이블(연단위, permit_year+permit_no 복합 유니크) + fleet_vessels permit_year/fishery_code 컬럼
- load_fishery_permit_cn.py: xls → DB 적재 스크립트, 906척 + 497 신청인사 upsert
- G-04/G-05/G-06 Dead code 해결: classify_gear_violations 호출 연결, dir() 버그 제거
- find_pair_candidates: bbox 1차 + 궤적 유사도(location/sog_corr/cog_alignment) 2차, role 가점
- spoofing 산식 교체: 1시간 윈도우 + teleport 절대 가점 + extreme 50kn 단독 0.6 확정
- transshipment 선종 완화: shipTy 부분일치 + 412* FISHING 간주
- gear_code DB write 경로 신설 + fleet_tracker API 3개 추가
- cron 스크립트: fishery_permit/pair_type/fleet_role 신규 섹션
claude-bot 이 변경사항을 승인하였습니다. 2026-04-16 07:46:29 +09:00
claude-bot left a comment
멤버

MR 승인 (via /mr skill)

MR 승인 (via /mr skill)
htlee merged commit 47c553d993 into develop 2026-04-16 07:46:30 +09:00
htlee 삭제된 브랜치 feature/dar03-detection-hardening 2026-04-16 07:46:30 +09:00
"로그인하여 이 대화에 참여"
No reviewers
레이블 없음
마일스톤 없음
담당자 없음
참여자 2명
알림
마감일
기한이 올바르지 않거나 범위를 벗어났습니다. 'yyyy-mm-dd'형식을 사용해주십시오.

마감일이 설정되지 않았습니다.

의존성

No dependencies set.

Reference: gc/kcg-ai-monitoring#45
No description provided.