From 23f0e9b3ef1d2451deebb9c06f7bf09210a2f7c8 Mon Sep 17 00:00:00 2001 From: zenn Date: Wed, 29 Jul 2026 15:53:28 +0900 Subject: [PATCH] =?UTF-8?q?=ED=86=B5=EA=B3=84=20=EC=9B=90=EC=9E=A5=20?= =?UTF-8?q?=EB=B3=B4=EA=B4=80=20=EA=B8=B0=EA=B0=84=20=ED=99=95=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/deploy.md | 7 ++++--- docs/history.md | 4 ++++ docs/todo.md | 3 --- docs/update.md | 6 ++++++ package-lock.json | 4 ++-- package.json | 2 +- 6 files changed, 17 insertions(+), 9 deletions(-) diff --git a/docs/deploy.md b/docs/deploy.md index ecb079a..e5533de 100644 --- a/docs/deploy.md +++ b/docs/deploy.md @@ -1,7 +1,7 @@ # 배포 가이드 -> v1.12.7은 Google 로그인/계정 연동과 통계 콘텐츠 세션 원장을 포함한다. 운영 배포 전 `068_csp_violation_aggregates.sql`, `069_media_catalog.sql`, `070_post_import_jobs.sql`, `071_users_google_oauth.sql`, `072_analytics_content_sessions.sql`을 순서대로 적용하고 미디어 카탈로그는 reconcile 완료 후 `MEDIA_CATALOG_MODE=database` 고정 순서를 지킨다. 게시물 Export·Import·일반 업로드는 디스크·임시 디렉터리 스트리밍을 사용하므로 NAS 앱 컨테이너의 임시 저장 공간과 `public/uploads/exports`, `public/uploads/_import-jobs` 쓰기 권한을 확인한다. -> 로컬 기준 v1.12.7에서 `npm run lint`, `npm test`, `npm run build` 검증을 통과했다. +> v1.12.8은 Google 로그인/계정 연동과 통계 콘텐츠 세션 원장을 포함한다. 운영 배포 전 `068_csp_violation_aggregates.sql`, `069_media_catalog.sql`, `070_post_import_jobs.sql`, `071_users_google_oauth.sql`, `072_analytics_content_sessions.sql`을 순서대로 적용하고 미디어 카탈로그는 reconcile 완료 후 `MEDIA_CATALOG_MODE=database` 고정 순서를 지킨다. 게시물 Export·Import·일반 업로드는 디스크·임시 디렉터리 스트리밍을 사용하므로 NAS 앱 컨테이너의 임시 저장 공간과 `public/uploads/exports`, `public/uploads/_import-jobs` 쓰기 권한을 확인한다. +> 로컬 기준 v1.12.8에서 `npm run lint`, `npm test`, `npm run build` 검증을 통과했다. ## 빌드 유형 @@ -14,7 +14,7 @@ > `npm run dev`는 프로젝트 전용 실행 스크립트를 통해 개발 서버, Admin, Tailwind Viewer 링크만 요약 출력한다. -## v1.12.7 배포 전 검증 +## v1.12.8 배포 전 검증 Playwright API 테스트도 브라우저 바이너리는 필요하지 않지만 `verify:ci`에는 Chromium E2E가 포함된다. 최초 1회 의존성과 Chromium을 설치하고 Docker daemon이 실행 중인지 확인한다. @@ -344,6 +344,7 @@ docker compose --env-file .env.production up -d --build - `site_analytics_daily`, `post_analytics_daily`: 사이트 전체 방문자와 게시물별 조회수의 누적 원본이므로 자동 삭제하지 않는다. - `analytics_traffic_daily`: 유입원·디바이스·키워드 축약 집계 원본이므로 자동 삭제하지 않는다. - `analytics_daily_visitors`: 일별 중복 방문 제거용 해시만 담으므로 32일 초과 행은 통계 수집·관리자 조회 흐름에서 주기적으로 삭제한다. +- `analytics_content_sessions`: 콘텐츠 세션별 중복 방지와 최근 참여 지표 보정용 원장이며, 방문자 해시와 동일하게 32일 초과 행은 통계 수집·관리자 조회 흐름에서 주기적으로 삭제한다. - `analytics_active_sessions`: 현재 접속자 목록용 임시 데이터이며 90초 초과 행은 조회·수집 시 삭제한다. `ip_address`는 현재 접속자 화면에서 익명 방문자 묶음과 보조 식별 정보로 표시한다. - 관리자 대시보드 차트는 최대 365일 범위를 조회하며, 차트 범위를 넘는 집계도 누적 통계 원본으로 보관한다. - 관리자 통계 집계 시작일은 `ANALYTICS_COLLECTED_SINCE` 환경 변수로 설정한다. 기본값은 `2026-06-01`이다. diff --git a/docs/history.md b/docs/history.md index 17a1796..e9623f1 100644 --- a/docs/history.md +++ b/docs/history.md @@ -1,3 +1,7 @@ +## 2026-07-29 v1.12.8 — 콘텐츠 세션 원장은 32일 보관으로 확정한다 + +콘텐츠 세션 원장은 최근 기간의 평균 체류, 스크롤, 읽음 중복 제거를 보정하기 위한 상세 기록이다. 일별 누적 집계는 별도로 계속 보존하므로 원장까지 장기 보관하지 않아도 누적 방문자·조회수·과거 차트의 기본 값은 유지된다. 따라서 방문자 해시 보관 정책과 동일하게 32일만 유지해 개인정보성 식별 해시 보관 범위를 짧게 유지하고, 최근 운영 판단에 필요한 세부 참여 지표만 원장 기준으로 보정한다. + ## 2026-07-29 v1.12.7 — 추이 차트 버킷도 원장 기준으로 보정한다 관리자 통계 추이 차트는 방문자 수와 함께 평균 체류시간, 50% 스크롤 도달을 같은 버킷 단위로 보여준다. 요약 카드와 인기 콘텐츠 부가 지표를 원장 기준으로 보정한 뒤에도 차트만 일별 집계 값을 계속 쓰면 같은 기간을 보는데 숫자의 기준이 달라질 수 있다. 따라서 각 차트 버킷이 원장 보관 범위 안에 있고 해당 원장 데이터가 있을 때만 평균 체류와 스크롤 지표를 원장 기준으로 덮어쓰고, 방문자 수와 유입 비율은 기존 일별 집계 기준을 유지한다. diff --git a/docs/todo.md b/docs/todo.md index d53a15c..4df7e3a 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -15,7 +15,4 @@ ## 데이터베이스 -- 통계 콘텐츠 세션 원장 기반 후속 개선. - - 콘텐츠 세션 원장 보관 기간을 운영 데이터 증가량 기준으로 32일 유지 또는 별도 기간으로 분리할지 검토. - ## 배포 diff --git a/docs/update.md b/docs/update.md index d8cfd8d..0199fa2 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,5 +1,11 @@ # 업데이트 이력 +## v1.12.8 + +- 콘텐츠 세션 원장 보관 기간을 방문자 해시와 동일한 32일 유지로 확정. +- 통계 콘텐츠 세션 원장 후속 개선 TODO 완료 처리. +- 배포 문서의 통계 데이터 보관 정책에 `analytics_content_sessions` 32일 보관 기준 추가. + ## v1.12.7 - 관리자 통계 추이 차트의 버킷별 평균 체류와 50% 스크롤 도달 지표를 콘텐츠 세션 원장 우선 계산으로 보정. diff --git a/package-lock.json b/package-lock.json index e71ac19..81855c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sori.studio", - "version": "1.12.7", + "version": "1.12.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sori.studio", - "version": "1.12.7", + "version": "1.12.8", "hasInstallScript": true, "dependencies": { "@nuxtjs/tailwindcss": "^6.14.0", diff --git a/package.json b/package.json index e998a28..42af622 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sori.studio", - "version": "1.12.7", + "version": "1.12.8", "private": true, "type": "module", "imports": {