{
  "task": "HRMS_FEISHU_READONLY_SNAPSHOT_REFRESH_DRY_RUN_APPLY_PACK_Z5",
  "generated_at": "2026-06-03T16:33:11+08:00",
  "apply_status": "blocked_before_refresh",
  "blocked_reasons": [
    "token_cache_or_provider_not_usable",
    "refresh_dry_run_endpoint_missing"
  ],
  "pre_apply_checks": {
    "snapshot_table_row_count_zero": true,
    "master_data_table_row_count_zero": true,
    "readiness_endpoint_accessible": true,
    "contract_endpoint_accessible": true,
    "token_scope_app_permission_ready": false,
    "privacy_guardrails_ready": true
  },
  "readiness_endpoint_metadata_only": {
    "url": "https://hrms.yuechongjia.com/api/feishu-readonly-snapshot/readiness",
    "status": 200,
    "ok": true,
    "content_type": "application/json",
    "json_ok": true,
    "provider_installed": true,
    "token_cache_status": "token_cache_expired",
    "token_metadata_status": "token_cache_expired",
    "provider_usable": false,
    "readonly_scope_declared": true,
    "write_scope_detected": false,
    "expires_at": "2026-05-12T15:49:49.701271+08:00",
    "ttl_seconds": -1903402,
    "snapshot_schema_ready": true,
    "next_gate": "FEISHU_READONLY_TOKEN_CACHE_REMEDIATION_PREVIEW_GATE"
  },
  "contract_endpoint_metadata_only": {
    "url": "https://hrms.yuechongjia.com/api/feishu-readonly-snapshot/contract",
    "status": 200,
    "ok": true,
    "content_type": "application/json",
    "json_ok": true,
    "provider_installed": true,
    "token_cache_status": "token_cache_expired",
    "token_metadata_status": "token_cache_expired",
    "provider_usable": false,
    "readonly_scope_declared": true,
    "write_scope_detected": false,
    "expires_at": "2026-05-12T15:49:49.701271+08:00",
    "ttl_seconds": -1903403,
    "snapshot_schema_ready": true,
    "next_gate": "FEISHU_READONLY_TOKEN_CACHE_REMEDIATION_PREVIEW_GATE"
  },
  "refresh_dry_run_endpoint_probe": {
    "url": "https://hrms.yuechongjia.com/api/feishu-readonly-snapshot/refresh-dry-run",
    "status": 404,
    "ok": false,
    "error": "HTTPError"
  },
  "service_endpoint_summary": {
    "actual_refresh_executed": false,
    "reason": "Precheck failed before live refresh: token/provider not usable and refresh-dry-run endpoint not available."
  }
}
