사이드바 "검색 횟수" 미갱신 — 원인 · 전수분석 · SSOT 수정

wks0968 워크스페이스 · 검색 1회 실행했으나 0/10 고정 이슈

2026-07-02alpha merged PR #9401게이트 미변경
결론: 캐시 문제 아님 — 코드(데이터 소스 불일치)입니다.
검색은 실제로 기록됐습니다. 다만 다른 테이블에 — 사이드바는 폐기된 buyer_search_jobs(v2, 최근 7일 0건)를 세는데, 실사용 검색(mastra lead-discovery)은 trial_feature_usage(feature=lead_discovery)에 usage_count=1로 카운트됨. 두 소스가 단절돼 사이드바가 영구 0.

1. 실측 증거 (alpha DB)

지표의미
유저 검색 실제 카운트trial_feature_usage.usage_count = 1검색 1회 정상 기록됨 (last 09:40 오늘)
사이드바가 읽는 소스buyer_search_jobs = 0이 ws 0건 · alpha 전체 최근7일 0건(폐기)
실사용 검색 시스템lead_discovery_sessions 65건/7일실제 활성 검색은 mastra 경로
표시 한도 vs 게이트 한도billing 10 · 게이트 10~12/14일한도 숫자·주기도 불일치

2. 사용량 관리 전수분석 — 5개 시스템에 분산

기능실사용 기록처사이드바 읽기게이트유형정합
검색trial_feature_usage(trial) / 무제한(유료)buyer_search_jobs(폐기)checkFeatureUsage 10/14일counter / derived불일치
바이어 저장workspace_usage.leads_used + usage_logsworkspace_usageleads_monthly_limitcounter(과소집계)부분
발송workspace_usage.emails_sent + usage_logs + Redisworkspace_usageRedis L1 + monthlycounter(과소집계)부분

사용량이 trial_feature_usage·buyer_search_jobs·lead_discovery_sessions·workspace_usage·usage_logs·Redis 6곳에 분산. 검색만 표시-실사용 소스가 완전 단절.

3. 별도 관리 테이블이 필요한가? → 아니오

선택지평가
신규 통합 usage 테이블 도입불필요 마이그레이션·이중기록만 늘고 drift 원천 추가
기존 SSOT 재사용(채택)최적 한도=billing_plans(이미 SSOT) · 사용=실사용 카운터(trial_feature_usage) 를 그대로 읽기

원칙: 더 정확한 소스가 이미 있으면 새 테이블 대신 그것을 읽는다(김치볶음밥·삭제 우선).

4. 적용한 수정 (PR #9401, 게이트 미변경)

Before
0 / 10
사이드바 → buyer_search_jobs(폐기) COUNT
After
1 / 10
사이드바 → trial_feature_usage.usageCount + billing_plans 한도

5. 남은 결정 (접근제어라 확인 후)

이슈현재선택
유료 검색 플랜한도 미적용게이트가 pro/team=무제한 → billing pro=50 무시유료에 plan limit 강제하려면 게이트(유료 early-return) 변경
trial 주기 불일치게이트 14일 rolling vs 표시 월trial_feature_usage 주기를 월로 통일 or 표시를 14일로
한도 값 드리프트trial_feature_usage.usage_limit 10/12 혼재billing_plans(10)로 정규화

이번 수정은 "표시=실사용" 정합(안전)까지. 위 3건은 접근제어·정책 변경이라 별도 승인 후 진행 권장.