Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- announcements.district + idx_ann_district 인덱스 - user_profile: preferred_districts(JSON obj), min_match_score(int 70), notify_enabled(bool) - match_results: notified_at(TEXT) - _profile_row_to_dict: notify_enabled bool화, preferred_districts dict 역직렬화 - PROFILE_COLUMNS 확장 (3 신규 필드) - upsert_profile: list|dict 모두 JSON 직렬화 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace deprecated mktemp with mkstemp to eliminate TOCTOU race, narrow OSError catches to PermissionError (Windows SQLite lock intent only), and add a deferred-import comment for clarity. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>