- collect_brand_assets: Vision 결과의 logo_images 를 JSON 에서 제거하고
진짜 로고(logo/og 매칭) 인 경우만 raw_info.logo_url 컬럼에 저장.
favicon-only 매칭은 컬럼 저장 X (옛 logic 동일).
- analysis._build_overrides: select_branding_logo_url 로 컬럼 읽어
ClinicSnapshot.logo_images 를 horizontal=logo_url 로 재구성.
- branding raw_data 가 "사실 데이터(URL/hex)" vs "Vision 분석 텍스트(묘사)"
섞이던 문제 일부 해소 — URL 은 컬럼, 텍스트만 JSON 에 잔존.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- common/db.py 단일 파일 → common/db/ 패키지로 분리 (hospital/source/run/market/file_data)
- 모든 채널 데이터를 raw_info 단일 테이블로 통일 (hospital_baseinfo.raw_data / 채널별 *_data 테이블 제거)
- 부가 채널(tiktok/instagram_en/facebook_en/kakaotalk/naver_cafe)도 remote_source+raw_info 로 일원화
- EN 채널은 같은 source_type + language='EN' 으로 구분, select_run_raw_data 가 합성키로 반환
- SourceType.BRANDING 추가 — brand_assets/channel_logos 결과를 하나의 raw_info entry 에 머지
- collect.collect_all: main wave gather → branding 2단계 순차 실행
- mock_urls 매칭 + _with_scheme 보정 유지
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>