1. 데이터 분석 통계 개요
DXCMS 관리자 패널의 [데이터 분석 통계] 메뉴는 사이트 방문자 유입 흐름과 행동 데이터를 6개 전문 탭으로 분석•시각화하는 통합 분석 도구입니다. 방문자 추이•인기 페이지•유입 경로•봇 현황•검색 키워드•실시간 로그를 기간별로 조회할 수 있습니다.
📌 접근 경로: 관리자 대시보드 → 데이터 분석 통계 (URL: /admin/statistics)
1.1 필요 DB 테이블 3종
통계 기능은 다음 3개 테이블이 모두 존재해야 정상 동작합니다. 테이블이 없으면 각 탭에 "데이터가 없습니다" 안내가 표시됩니다.
| 테이블명 |
관련 탭 |
저장 데이터 |
| visits |
방문자 추이 |
일별 집계 방문자 수. visit_date / visit_count / unique_count 컬럼. |
| search_keywords |
인기 검색어 |
검색어·검색 횟수·마지막 검색 시각. keyword / search_count / last_searched 컬럼. |
| visit_logs |
페이지 순위·유입 경로·봇/실제·실시간 로그 |
개별 페이지 요청 로그. ip / page_url / referer_domain / browser / is_bot / member_id / visit_date / created_at 컬럼. |
⚠️ 통계 고도화 패치(v3.0.0) 적용 시 visit_logs 테이블에 is_bot•browser•referer_domain 3개 컬럼이 추가됩니다. 패치가 적용되지 않으면 봇/실제 방문자 탭이 비활성화되고, 유입 경로 탭이 구버전 모드로 동작합니다.
1.2 화면 공통 구성
| 영역 |
설명 |
| 페이지 헤더 |
제목 "데이터 분석 통계"와 부제목 표시. |
| 기간 선택 바 |
날짜 범위 직접 입력 + 빠른 기간 버튼(오늘/7일/30일/이번달). 최대 90일 범위. 기본: 최근 30일. |
| 탭 내비게이션 |
6개 탭 버튼(방문자 추이·페이지 순위·유입 경로·봇/실제 방문자·인기 검색어·실시간 로그). 선택된 탭은 흰색 배경·탭 색상으로 강조. |
| 탭 본문 영역 |
선택된 탭에 따라 KPI 카드·차트·테이블이 표시됩니다. |
1.3 통계 캐시 (120초)
통계 데이터는 DxCache를 사용하여 120초간 캐시됩니다. 캐시 키는 tab•dateFrom•dateTo를 MD5 해시한 값입니다. 페이지를 새로고침해도 120초 이내라면 캐시된 데이터가 반환되므로 DB 부하를 방지합니다. DxCache가 비활성화된 환경에서는 매 요청마다 DB를 조회합니다.
💡 검색 키워드 삭제•초기화 시 해당 탭의 캐시(admin_stat_v1_{hash})가 즉시 초기화됩니다. 다른 데이터 변경은 최대 120초 후 반영됩니다.
2. 기간 선택 및 필터
모든 탭에 공통 적용되는 날짜 범위 필터입니다. 기간을 변경하면 현재 탭을 유지한 채 새 기간 데이터로 새로고침됩니다.
2.1 날짜 직접 입력
| 입력 형식 |
YYYY-MM-DD 형식. HTML date picker로 직접 선택 가능. |
| 최대 범위 |
90일. 90일 초과 설정 시 서버에서 종료일 기준 89일 전으로 자동 조정됩니다. |
| 기본값 |
시작일: 오늘로부터 29일 전. 종료일: 오늘(date("Y-m-d")). |
| 유효성 처리 |
날짜 값은 preg_replace('/[^0-9\-]/', '', ...)으로 숫자와 하이픈만 허용하여 SQL Injection 방지. |
2.2 빠른 기간 버튼
| 버튼 |
날짜 범위 |
설명 |
| 오늘 |
today ~ today |
오늘 하루만 조회. 실시간 현황 파악에 적합. |
| 7일 |
today-6 ~ today |
최근 7일(일주일) 조회. 주간 트렌드 파악. |
| 30일 |
today-29 ~ today |
최근 30일 조회. 기본값. 월간 성과 분석에 적합. |
| 이번달 |
Y-m-01 ~ today |
이번 달 1일부터 오늘까지. 월별 성과 비교에 적합. |
💡 현재 선택된 기간과 일치하는 빠른 버튼은 파란색(bg-sky-500 text-white)으로 강조 표시됩니다. 기간을 변경하면 URL 파라미터(from•to)가 업데이트됩니다.
2.3 URL 파라미터
| 파라미터 |
기본값 |
설명 |
| tab |
visits |
현재 탭. visits/pages/referer/bots/keywords/logs |
| from |
today-29 |
시작 날짜(YYYY-MM-DD). |
| to |
today |
종료 날짜(YYYY-MM-DD). |
3. 방문자 추이 탭 (visits)
가장 기본적인 방문 통계 탭입니다. KPI 카드 4개, 일별 바 차트, 월별 요약 리포트, 일별 상세 테이블로 구성됩니다.
3.1 KPI 카드 4종
| 카드 |
아이콘 색상 |
집계 방법 및 설명 |
| TODAY PAGEVIEW |
인디고색 |
visits 테이블 WHERE visit_date=오늘의 visit_count. 오늘의 총 페이지뷰 수. |
| TODAY UNIQUE |
초록색 |
visits 테이블 WHERE visit_date=오늘의 unique_count. 오늘의 순방문자 수(IP+브라우저 기준 중복 제거). |
| 기간 TOTAL PV |
보라색 |
선택 기간의 visit_count 합산(SUM). 선택 기간 전체 누적 페이지뷰. |
| 기간 DAILY AVG |
주황색 |
기간 TOTAL PV ÷ 조회된 일 수. 선택 기간의 일평균 방문자 수. |
3.2 기간별 방문 트래픽 바 차트
일별 방문 데이터를 CSS 기반 바 차트로 시각화합니다.
| 인디고 막대 (PV) |
visit_count(페이지뷰). 최대값을 100%로 하여 상대적 높이 계산. |
| 초록 막대 (UV) |
unique_count(순방문자). PV 최대값 기준으로 비율 계산. |
| X축 레이블 |
일(DD) 표시. 첫날·마지막날·5의 배수 날짜만 표시(가독성). |
| 호버 |
각 막대 title 속성에 날짜·PV·UV 값이 표시됩니다. |
| 차트 높이 |
200px 고정. |
3.3 Monthly Report (우측 패널)
최근 12개월의 월별 집계 요약을 우측 패널에 표시합니다.
| 집계 쿼리 |
SELECT DATE_FORMAT(visit_date,'%Y-%m') AS ym, SUM(visit_count), SUM(unique_count) FROM visits GROUP BY ym ORDER BY ym DESC LIMIT 12 |
| 표시 항목 |
연월(YYYY-MM) + 인디고색 총 PV + 초록색 총 UV(UV: N). |
| 정렬 |
최신 월이 상단. 최대 12개월. |
3.4 일별 상세 로그 테이블
| 컬럼 |
내용 |
| 일시 |
visit_date(YYYY-MM-DD). 최신 날짜 순으로 정렬됨. |
| 총 페이지뷰 |
visit_count. 인디고색 굵은 모노스페이스 숫자. |
| 순 방문자 |
unique_count. 초록색 굵은 숫자. |
| 순방문율 |
unique_count ÷ visit_count × 100. 프로그레스 바(하늘→인디고 그라데이션) + 퍼센트 숫자. |
💡 순방문율이 높을수록(예: 80% 이상) 동일 방문자가 여러 페이지를 탐색하지 않고 한 페이지만 보고 떠나는 비율이 높다는 의미일 수도 있습니다. 반대로 낮은 순방문율은 재방문이 많거나 여러 페이지를 탐색한다는 의미입니다. 콘텐츠와 UX에 따라 해석이 달라집니다.
4. 페이지 순위 탭 (pages)
방문자가 가장 많이 조회한 페이지 URL 순위를 TOP 30으로 표시합니다. 봇•정적 자산•API 경로는 자동으로 제외됩니다.
4.1 집계 쿼리 상세
visit_logs 테이블에서 기간 내 page_url별 접속 횟수를 집계합니다.
| 봇 제외 (패치 적용 시) |
AND is_bot=0 조건으로 크롤러·검색 로봇 트래픽 제외. |
| 정적 파일 제외 |
js/css/map/png/jpg/gif/svg/ico/woff/mp4/webm/pdf/zip 확장자 URL 자동 제외. |
| 외부 CDN 제외 |
cdnjs/unpkg/jsdelivr/googleapis/stackpath/bootstrapcdn/cloudflare.com 도메인 제외. |
| WebSocket 제외 |
page_url LIKE '/ws-%' 패턴 제외. |
| API·에셋 제외 |
page_url LIKE '/api/%' 및 '/assets/%' 제외. |
| 정렬 |
cnt DESC. 상위 30개(LIMIT 30)만 표시. |
4.2 목록 표시
| 요소 |
설명 |
| 순위 배지 |
1위=금색, 2위=은색, 3위=주황. 4위 이후는 회색 배지. |
| URL |
최대 70자로 잘라서 표시(...). 모노스페이스 폰트. 전체 URL은 title 속성으로 호버 시 확인 가능. |
| 접속 횟수 |
인디고색 배지로 "N 회" 표시. 천 단위 쉼표. |
| 비율 바 |
1위의 cnt를 100%로 하여 상대 비율 바(인디고→보라 그라데이션, 300px). 우측에 % 숫자. |
💡 페이지 순위에서 특정 페이지가 압도적으로 상위에 있다면 해당 콘텐츠가 가장 인기 있는 것입니다. 반대로 중요한 페이지가 하위라면 메뉴나 링크 구조 개선이 필요할 수 있습니다.
5. 유입 경로 탭 (referer)
외부에서 어느 사이트를 통해 방문자가 유입되었는지를 도메인 단위로 분석합니다. TOP 20 유입 도메인을 표시합니다.
5.1 집계 방식
| 버전 |
집계 방식 |
| 패치 적용 버전 (hasNewCols=true) |
visit_logs.referer_domain 컬럼을 사용. AND is_bot=0 조건으로 봇 제외. COUNT(DISTINCT ip)로 고유 IP 집계. |
| 구버전 호환 (hasNewCols=false) |
visit_logs.referer 컬럼(전체 URL)을 사용. 봇 필터 없음. GROUP BY referer로 집계. |
5.2 유입 경로 테이블 컬럼
| 컬럼 |
설명 |
| # |
순위 배지. 1위=금색, 2위=은색, 3위=주황. |
| 유입 도메인/경로 |
도메인별 브랜드 아이콘(Google·Naver·Daum·Facebook·Twitter·Instagram·YouTube·GitHub·Nate·기타 링크). 도메인명 텍스트. |
| 방문 횟수 |
해당 유입 도메인에서 온 총 방문 횟수(visit_cnt). |
| 고유 IP |
COUNT(DISTINCT ip). 해당 도메인에서 유입된 서로 다른 IP 수. |
| 비율 바 |
1위 방문 횟수를 100%로 한 상대 비율(보라 그라데이션 100px). |
💡 "(직접 유입)"으로 표시되는 항목은 referer_domain이 비어있는 경우입니다. 직접 URL 입력, 북마크, 특정 앱 내 링크 클릭 등이 직접 유입으로 분류됩니다.
5.3 유입 경로 분석 활용
- Google•Naver 비율이 높으면 → SEO 최적화가 잘 되어 있는 것. 키워드 분석과 연계하여 어떤 검색어로 유입되는지 확인.
- SNS(Instagram•Twitter•Facebook) 비율이 높으면 → 소셜 콘텐츠 효과. 어떤 SNS 채널이 효율적인지 파악.
- 직접 유입 비율이 높으면 → 브랜드 인지도가 높거나 충성 방문자 많음. 리텐션 전략에 집중.
- 특정 외부 사이트에서 많이 유입되면 → 해당 사이트와의 협력•제휴 검토.
6. 봇/실제 방문자 탭 (bots)
사이트 트래픽에서 실제 사람과 자동화된 봇(검색 엔진 크롤러, 모니터링 봇 등)을 구분하여 분석합니다. 이 탭은 통계 고도화 패치(visit_logs에 is_bot•browser 컬럼 추가) 적용 후에만 동작합니다.
⚠️ 패치가 적용되지 않은 환경에서는 "이 기능은 패치 적용 후 사용 가능합니다." 안내 화면만 표시됩니다.
6.1 KPI 카드 4종
| 카드 |
색상 |
집계 방법 및 설명 |
| 순방문자 |
초록색 |
COUNT(DISTINCT CONCAT(ip,'|',browser)) WHERE is_bot=0. IP+브라우저 조합 기준 중복 제거한 실제 방문자 수. |
| 페이지뷰(PV) |
파란색 |
COUNT(*) WHERE is_bot=0. 실제 사람의 총 페이지 요청 건수(중복 포함). |
| 봇/크롤러 |
빨간색 |
COUNT(*) WHERE is_bot=1. 자동화 요청 건수. 검색 엔진 크롤러, 모니터링 봇 포함. |
| 봇 비율 |
주황색 |
봇 건수 ÷ 전체 요청 건수(PV+봇) × 100. 전체 트래픽 중 봇이 차지하는 비율. |
6.2 순방문자(UV) vs 페이지뷰(PV)의 차이
봇/실제 방문자 탭에서는 두 개의 서로 다른 지수를 제공합니다.
| 지표 |
의미 및 계산 방법 |
| 순방문자 (Unique Visitor) |
동일 IP+브라우저 조합을 하나의 방문자로 계산. 실제 방문한 "사람" 수에 가장 가까운 지표. COUNT(DISTINCT CONCAT(ip,'|',browser)) |
| 페이지뷰 (Page View) |
한 사람이 여러 페이지를 봐도 모두 카운트. 동일 IP+브라우저가 10개 페이지를 보면 PV=10. COUNT(*) |
💡 PV ÷ UV 비율이 높으면 방문자 한 명이 많은 페이지를 탐색한다는 의미입니다. 낮은 비율(PV ≈ UV)은 방문자 대부분이 한 페이지만 보고 떠난다는 의미입니다.
6.3 브라우저별 순방문자
방문자가 사용한 브라우저를 분석하여 브라우저별 순방문자 수를 막대 그래프로 표시합니다.
| 집계 쿼리 |
SELECT browser, COUNT(DISTINCT ip) AS cnt FROM visit_logs WHERE ... AND is_bot=0 GROUP BY browser ORDER BY cnt DESC |
| 지원 브라우저 색상 |
Chrome=초록, Firefox=주황, Safari=파랑, Edge=하늘, Whale=청록, Samsung=인디고, Opera=빨강, IE=회색, Other=연회색. |
| 그래프 방식 |
최다 브라우저를 100%로 한 상대 비율 가로 막대. |
| 활용 용도 |
반응형·브라우저 호환성 테스트 우선순위 결정. 예: Chrome 사용자가 90%라면 Safari 최적화는 낮은 우선순위. |
6.4 봇 vs 실제 비율 차트
- 순방문자•페이지뷰•봇 3가지를 프로그레스 바 형태로 시각화합니다.
- 초록 바: 순방문자(UV) — IP+브라우저 중복 제거
- 파란 바: 페이지뷰(PV) — 실제 사람의 총 요청 건수
- 빨간 바: 봇/크롤러 — 자동화 요청 건수
💡 봇 비율이 30% 이상이라면 검색 엔진이 사이트를 활발히 색인하고 있다는 신호일 수 있습니다. 50% 이상이면 비정상적으로 높아 보안 점검이나 robots.txt 최적화가 필요할 수 있습니다.
7. 인기 검색어 탭 (keywords)
사이트 내 검색 기능을 통해 방문자가 입력한 검색어를 집계하여 인기 순으로 TOP 50을 표시합니다. search_keywords 테이블이 필요합니다.
7.1 검색어 목록 (TOP 50)
| 요소 |
설명 |
| 순위 배지 |
1위=금색, 2위=은색, 3위=주황, 4위 이상=회색. |
| 검색어 |
keyword 컬럼 텍스트. 마우스 호버 시 인디고색으로 변경. |
| 검색 횟수 |
search_count. 인디고 배지로 "N 회" 표시. |
| 비율 바 |
1위 search_count를 100%로 한 상대 비율(인디고→보라 그라데이션). |
| 마지막 검색일 |
last_searched의 날짜 부분(YYYY-MM-DD). 우측 회색 텍스트. |
| 개별 삭제 버튼 |
행 호버 시 나타나는 [×] 버튼. 클릭 시 해당 검색어 DB에서 삭제. |
7.2 검색어 요약 사이드바
목록 우측에 고정(sticky) 사이드바가 표시됩니다. 2개 패널로 구성됩니다.
| 패널 |
내용 |
| 검색어 요약 (어두운 카드) |
총 수집 키워드 수 / 누적 검색 횟수(전체 합산) / 급상승 1순위 키워드. 어두운(slate-900) 배경. |
| 검색어 분포 (태그 클라우드) |
TOP 20 키워드를 검색 횟수에 비례한 폰트 크기(10~18px)와 투명도(0.4~1.0)로 시각화. 마우스 호버 시 인디고색. |
7.3 검색어 관리 기능
| 기능 |
동작 |
| 개별 삭제 |
검색어 행에 마우스 호버 시 [×] 버튼 표시. 클릭 시 DELETE FROM search_keywords WHERE id=N. 캐시 초기화 후 리다이렉트. |
| 전체 초기화 |
패널 우측 상단 [🗑 전체 초기화] 버튼. "전체 기록을 영구적으로 삭제하시겠습니까?" 확인 후 TRUNCATE TABLE search_keywords. 복구 불가. |
🚨 전체 초기화는 모든 검색어 데이터를 영구 삭제합니다. 중요한 데이터는 삭제 전 DB Export를 통해 백업하세요.
7.4 검색어 데이터 활용
- 인기 검색어가 사이트 콘텐츠와 일치하면 SEO가 잘 된 것. 불일치하면 해당 키워드 콘텐츠 추가 필요.
- 자주 검색되지만 결과가 없는 키워드 → 새 게시글/FAQ 작성 기회.
- 계절성 키워드(예: 봄/여름 관련) 파악 → 시즌별 콘텐츠 기획.
- 브랜드 이름이 검색어에 많으면 → 직접 접속 또는 브랜드 인지도 지표.
8. 실시간 로그 탭 (logs)
visit_logs 테이블의 최근 100건 로그를 실시간 테이블로 표시합니다. 개별 페이지 요청의 상세 정보를 확인할 수 있습니다. 봇 트래픽은 행 전체가 반투명(opacity-50)으로 표시됩니다.
8.1 로그 테이블 컬럼
| 컬럼 |
내용 및 설명 |
| 일시 |
created_at에서 MM.DD HH:MM:SS 형식으로 표시. |
| IP 주소 |
방문자 IP. 하늘색 모노스페이스 폰트. |
| 브라우저 (패치 적용 시) |
browser 컬럼. 회색 배지로 브라우저명 표시. |
| 봇 여부 (패치 적용 시) |
is_bot=1이면 빨간색 🤖 배지, is_bot=0이면 초록색 👤 배지. |
| 요청 경로 |
page_url. 최대 280px에서 truncate. 전체 URL은 title로 확인. |
| 회원 |
로그인 상태면 인디고 배지로 회원 이름 표시(LEFT JOIN members). 비로그인이면 "비회원". |
| 유입 경로 |
referer_domain(패치) 또는 referer(구버전). 없으면 "— DIRECT —" 표시. |
8.2 실시간 로그 활용
- 특정 시간대에 비정상적으로 많은 봇 요청이 있다면 DDoS 또는 크롤러 공격 의심.
- 직전 배포 후 특정 URL에서 404 등 오류가 많이 발생하면 로그에서 빠르게 감지 가능.
- 새 이벤트 페이지 게시 후 트래픽 유입을 실시간으로 확인.
- 특정 회원의 비정상적 활동(반복 요청 등) 모니터링.
9. 전체 사용 절차
9.1 기본 통계 조회
- 관리자 대시보드 → [데이터 분석 통계] 메뉴 클릭
- 기간 선택 바에서 조회 기간 설정 (빠른 버튼 또는 날짜 직접 입력)
- 탭 클릭 (방문자 추이 / 페이지 순위 / 유입 경로 / 봇 분석 / 검색어 / 실시간 로그)
- 선택한 탭의 KPI 카드•차트•테이블에서 데이터 분석
- 다른 기간으로 변경하여 기간별 비교 분석
9.2 월간 리포트 활용
- [방문자 추이] 탭 → [이번달] 빠른 기간 버튼 클릭
- KPI 카드에서 이번 달 총 PV•일평균 확인
- 우측 Monthly Report 패널에서 전월 대비 비교
- [유입 경로] 탭으로 전환하여 이번 달 주요 유입 채널 확인
- [인기 검색어] 탭으로 전환하여 이번 달 인기 키워드 파악
- 데이터를 바탕으로 다음 달 콘텐츠•마케팅 전략 수립
9.3 검색어 데이터 정리
- [인기 검색어] 탭 클릭
- 목록 확인 후 불필요한 검색어(스팸•오타•무의미한 검색어) 개별 [×] 클릭 삭제
- 분기별 또는 시즌 변경 시 [전체 초기화] 클릭 (확인 창에서 확인)
- "전체 기록을 영구적으로 삭제하시겠습니까?" 확인 후 초기화 완료
10. 자주 묻는 질문 (FAQ)
Q1. 통계 데이터가 전혀 표시되지 않습니다.
A. visits / search_keywords / visit_logs DB 테이블이 없는 경우입니다. 마이그레이션(install/migrate.php)을 실행하여 테이블을 생성해야 합니다. 테이블 생성 후 방문자가 사이트에 접속하면 자동으로 데이터가 수집됩니다.
Q2. 봇/실제 방문자 탭에 "이 기능은 패치 적용 후 사용 가능합니다."가 표시됩니다.
A. 통계 고도화 패치(v3.0.0)가 적용되지 않아 visit_logs 테이블에 is_bot•browser•referer_domain 컬럼이 없는 상태입니다. install/migrate.php를 실행하여 패치를 적용하세요.
Q3. 통계 데이터가 120초 이상 지난 후에도 갱신되지 않습니다.
A. DxCache가 활성화된 경우 캐시 키(admin_stat_v1_{hash})가 120초 후 만료됩니다. 만료 전에 확인하려면 검색어 삭제•초기화 등으로 해당 탭 캐시를 수동 초기화하거나, 기간 파라미터를 변경(다른 날짜 선택)하면 새 캐시 키가 생성되어 새 데이터를 조회합니다.
Q4. 페이지 순위에 이미지•CSS 파일이 표시됩니다.
A. 통계 고도화 패치가 적용되지 않았거나, visit_logs 수집 로직에 정적 파일 필터가 적용되지 않은 경우입니다. 패치 적용 후에는 .js/.css/.png 등 정적 파일 요청이 visit_logs에 기록되지 않거나, 페이지 순위 집계 쿼리에서 자동으로 제외됩니다.
Q5. 검색어가 수집되지 않습니다.
A. 사이트의 검색 기능이 search_keywords 테이블에 검색어를 기록하는 로직을 포함해야 합니다. 기본 검색 기능이 아닌 커스텀 검색을 사용한다면 해당 검색 코드에 검색어 저장 로직을 추가해야 합니다.
Q6. 방문자 추이의 TODAY 값이 0입니다.
A. visits 테이블은 하루 단위로 집계됩니다. 오늘 방문이 있어도 집계 배치가 실행되지 않았거나, 방문 수집 로직이 실시간 집계가 아닌 배치 방식이면 TODAY가 0으로 표시될 수 있습니다. visit_logs는 실시간이므로 [실시간 로그] 탭에서 오늘 방문을 확인하세요.
Q7. 특정 IP를 차단하거나 봇에서 제외하려면?
A. admin/statistics/index.php의 visit_logs 집계 쿼리에서 AND ip != '특정IP' 조건을 추가하거나, visit_logs 수집 단계에서 해당 IP를 필터링하는 코드를 추가해야 합니다. 이는 직접 코드 수정이 필요합니다.
11. 용어 정리
| 용어 |
설명 |
| PV (Page View) |
페이지뷰. 한 페이지가 요청된 횟수. 동일 사용자의 중복 방문 포함. |
| UV (Unique Visitor) |
순방문자. IP+브라우저 조합 기준으로 중복 제거한 방문자 수. |
| visit_count |
visits 테이블의 일별 총 페이지뷰 집계 컬럼. |
| unique_count |
visits 테이블의 일별 순방문자 집계 컬럼. |
| visit_logs |
개별 페이지 요청을 실시간 기록하는 테이블. ip/page_url/member_id/created_at 등. |
| is_bot |
visit_logs 컬럼. 1=봇/크롤러, 0=실제 방문자. 통계 고도화 패치 후 추가. |
| browser |
visit_logs 컬럼. 파싱된 브라우저명. Chrome/Firefox/Safari/Edge 등. |
| referer_domain |
visit_logs 컬럼. 유입 경로의 도메인. 통계 고도화 패치 후 추가. |
| search_keywords |
검색어 수집 테이블. keyword/search_count/last_searched 컬럼. |
| visits |
일별 방문 집계 테이블. visit_date/visit_count/unique_count 컬럼. |
| hasNewCols |
visit_logs에 is_bot·browser 컬럼이 있는지 여부. 패치 적용 여부 판별에 사용. |
| needMigrate |
visits/search_keywords/visit_logs 중 하나라도 없으면 true. 마이그레이션 필요 상태. |
| 통계 고도화 패치 v3.0.0 |
visit_logs에 is_bot·browser·referer_domain 컬럼을 추가하는 패치. 봇 분석·브라우저 통계 활성화. |
| 캐시 키 |
admin_stat_v1_{md5(tab+dateFrom+dateTo)}. 탭과 기간이 같으면 동일 캐시 사용. |
| 120초 캐시 |
DxCache를 사용하여 동일 조건의 통계 조회를 120초간 캐시. |
| 순방문율 |
unique_count ÷ visit_count × 100%. 순방문자 비율. |
| 직접 유입 (DIRECT) |
referer_domain이 비어있는 경우. 직접 URL 입력·북마크·앱 내 링크. |
| 봇 비율 |
봇 요청 건수 ÷ 전체 요청 건수 × 100%. |
| 태그 클라우드 |
검색어 분포 패널. 검색 횟수에 비례한 폰트 크기와 투명도로 키워드 시각화. |
| reset_keywords |
검색어 전체 초기화 POST 액션. TRUNCATE TABLE search_keywords 실행. |
| delete_keyword |
단일 검색어 삭제 POST 액션. DELETE FROM search_keywords WHERE id=N. |