snpdb 5분 버킷 데이터가 적재 완료까지 ~12분 소요되는데, 기존 fetch_incremental이 상한 없이 미완성 버킷을 수집하여 _last_bucket이 조기 전진 → 뒤늦게 완성된 행 영구 누락. - time_bucket.py 신규: safe_bucket(12분 지연) + backfill(3 bucket) - snpdb.py: fetch_all_tracks/fetch_incremental에 safe 상한 + 백필 하한 - vessel_store.py: merge_incremental sort+keep='last', evict_stale time_bucket 우선 - config.py: SNPDB_SAFE_DELAY_MIN=12, SNPDB_BACKFILL_BUCKETS=3 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
from pydantic_settings import BaseSettings
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
# snpdb (궤적 데이터 소스)
|
|
SNPDB_HOST: str = '211.208.115.83'
|
|
SNPDB_PORT: int = 5432
|
|
SNPDB_NAME: str = 'snpdb'
|
|
SNPDB_USER: str = 'snp'
|
|
SNPDB_PASSWORD: str
|
|
|
|
# kcgdb (분석 결과 저장)
|
|
KCGDB_HOST: str = '211.208.115.83'
|
|
KCGDB_PORT: int = 5432
|
|
KCGDB_NAME: str = 'kcgdb'
|
|
KCGDB_SCHEMA: str = 'kcg'
|
|
KCGDB_USER: str = 'kcg_app'
|
|
KCGDB_PASSWORD: str
|
|
|
|
# 스케줄러
|
|
SCHEDULER_INTERVAL_MIN: int = 5
|
|
|
|
# 인메모리 캐시
|
|
CACHE_WINDOW_HOURS: int = 24
|
|
INITIAL_LOAD_HOURS: int = 24
|
|
STATIC_INFO_REFRESH_MIN: int = 60
|
|
PERMIT_REFRESH_MIN: int = 30
|
|
SNPDB_SAFE_DELAY_MIN: int = 12
|
|
SNPDB_BACKFILL_BUCKETS: int = 3
|
|
|
|
# 파이프라인
|
|
TRAJECTORY_HOURS: int = 6
|
|
MMSI_PREFIX: str = '412'
|
|
MIN_TRAJ_POINTS: int = 100
|
|
|
|
# Ollama (LLM)
|
|
OLLAMA_BASE_URL: str = 'http://localhost:11434'
|
|
OLLAMA_MODEL: str = 'qwen3:14b' # CPU-only: 14b 권장, GPU 있으면 32b
|
|
OLLAMA_TIMEOUT_SEC: int = 300
|
|
|
|
# Redis
|
|
REDIS_HOST: str = 'localhost'
|
|
REDIS_PORT: int = 6379
|
|
REDIS_PASSWORD: str = ''
|
|
|
|
# 로깅
|
|
LOG_LEVEL: str = 'INFO'
|
|
|
|
model_config = {'env_file': '.env', 'env_file_encoding': 'utf-8', 'extra': 'ignore'}
|
|
|
|
|
|
settings = Settings()
|