Skip to content

관리자 헬스 리포트

한국어 번역본

이 문서는 원문(영어)의 한국어 번역이다. 정본은 원문이며, 계약·게이트 판단이 갈리면 원문을 따른다. 원문: docs/data/admin-health-report.md

public.get_admin_operations_checklist()는 Barbelic의 관리자용 운영 체크리스트다. 이 함수는 DB 측 헬스 리포트를 Edge Function 배포 프로브 및 Supabase 마이그레이션 이력 확인과 함께 감싼다.

public.get_admin_health_report()는 하위 계층의 DB/임포트/통계 헬스 리포트로 여전히 존재한다. 관리자 UI는 get_admin_operations_checklist()를 호출해야 한다.

RPC

sql
select public.get_admin_operations_checklist();

하위 계층 DB/임포트/통계 리포트:

sql
select public.get_admin_health_report();

선택적 임계값:

sql
select public.get_admin_operations_checklist(
  p_stale_after := '15 minutes'::interval,
  p_stats_stale_after := '1 day'::interval,
  p_rpc_response_warning_bytes := 3000000
);

RPC 응답 크기 이상치(outlier)는 호출자가 제공한 샘플로부터 측정된다. 관리자 UI는 최근 프론트엔드 작업 로그를 p_rpc_response_samples로 전달한다. 또한 설정된 각 함수의 헬스 GET 엔드포인트를 프로브해 Edge Function 배포 샘플을 덧붙인다.

sql
select public.get_admin_operations_checklist(
  p_rpc_response_samples := '[
    {
      "operationName": "get_calendar_month_summary",
      "durationMs": 220,
      "responseBytes": 4200000,
      "at": "2026-06-22T00:00:00.000Z"
    },
    {
      "sampleKind": "edge_function_deployment",
      "name": "wodup-start-import",
      "expectedVersion": "20260821-barbelic-headers-v1",
      "deployedVersion": "20260821-barbelic-headers-v1",
      "ok": true,
      "status": 200
    }
  ]'::jsonb
);

권한

이 함수는 security definer이지만, 실행은 여전히 제한된다.

  • service_role은 백엔드·관리자 자동화를 위해 실행할 수 있다.
  • 인증된 사용자는 public.is_lift_guild_admin()을 통과해야 한다.
  • anonpublic에는 실행 권한이 없다.

검사 항목

리포트는 다음을 반환한다.

  • status: ok, warning, 또는 critical
  • ok: critical 검사가 하나도 없을 때만 true
  • summary: 대시보드와 알림을 위한 개수 전용 필드
  • checks: 각 헬스 영역별 상세 상태와 샘플

헬스 영역:

  1. orphan_session_exercises
    • session_exercise_part.exercise_id(옛 session_exercises, 이슈 #1215)에 대응하는 exercises.id가 없을 때 critical.
  2. wodup_import_batches
    • 배치가 실패했거나, result_error_count > 0이거나, 종료되지 않은 상태로 p_stale_after보다 오래 멈춰 있을 때 critical.
    • 배치가 현재 열려 있지만 아직 낡지(stale) 않았을 때 warning.
  3. stats_refresh_jobs
    • dirty 통계 갱신 잡이 실패했거나 낡았을 때 critical.
    • 잡이 pending/processing이지만 아직 신선할 때 warning.
  4. stats_staleness
    • 완료 세션 데이터가 p_stats_stale_after보다 오래되었는데 구체화된 롤업/통계가 없거나, 구체화된 행이 소스 행보다 오래되었을 때 critical.
  5. rpc_response_outliers
    • 제공된 프론트엔드 작업 샘플이 p_rpc_response_warning_bytes를 초과할 때 critical.
  6. edge_functions
    • 배포된 함수가 다른 배포 버전을 보고하거나 도달할 수 없을 때 critical.
    • 기대되는 함수에 대해 브라우저가 프로브 샘플을 제공하지 않았을 때 warning.
  7. schema_migrations
    • Supabase 마이그레이션 이력을 사용할 수 없거나 기대되는 마이그레이션 버전이 누락되었을 때 critical.

Edge Function 배포 버전

배포된 각 함수는 다음을 노출한다.

  • GET /functions/v1/{function_name}
  • x-lift-guild-function-name
  • x-barbelic-deployment-version
  • function_namedeployment_version을 담은 JSON 본문

기대 버전은 src/react/services/deploymentManifest.js에 있다. 함수를 변경할 때는 매니페스트 버전을 올리고 목록에 있는 모든 함수를 재배포한다. 배포 파이프라인 검사가 매니페스트, supabase/config.toml, 함수 폴더의 정합을 유지한다.

참고

이 리포트는 원본 Wodup 페이로드를 의도적으로 노출하지 않는다. 샘플 행에는 ID, 날짜, 상태, 개수, 짧은 운영 필드만 포함된다.