{
  "ok": true,
  "scope": "user_role_community_publish_repository_preview",
  "status": "blocked_before_live_user_role_community_publish_repository",
  "date": "2026-06-24",
  "repository": {
    "code": "user_role_community_publish_repository",
    "status": "preview_user_role_community_publish_repository_ready",
    "repositoryKind": "owner_scoped_private_role_and_community_publish_repository",
    "readMethods": [
      "getMyRoleForOwner",
      "listMyRolesForOwner",
      "getCommunityVisibilityState",
      "getAiReviewResultForOwner",
      "getAdminManualReviewQueue"
    ],
    "writeMethods": [
      "createPrivateUserRole",
      "requestCommunityPublish",
      "recordAiReviewDecision",
      "enqueueManualReviewTask",
      "rejectWithUserGuidance",
      "confirmCommunityPublish"
    ],
    "liveTables": [
      "ai_roles",
      "role_ai_review_results",
      "role_manual_review_tasks",
      "role_review_logs",
      "role_prompt_versions"
    ],
    "transactionBoundary": "owner_private_role_create_then_optional_ai_review_before_community_visibility",
    "idempotencyKey": "userId:clientRoleId:communitySubmitRevision",
    "promotionGate": "role_private_owner_rls_ai_review_manual_queue_publish_gate_and_public_policy_verified"
  },
  "request": {
    "userId": "preview-user-id",
    "clientRoleId": "client-role-preview-001",
    "roleId": "user-role-preview-001",
    "publishToCommunity": true,
    "reviewCase": "gray",
    "age": 24
  },
  "privateRoleCreatePlan": {
    "method": "createPrivateUserRole",
    "targetTable": "ai_roles",
    "statusAfterCreate": "ai_review_pending",
    "visibilityAfterCreate": "community_pending",
    "auditStatusAfterCreate": "ai_review_pending",
    "ownerVisibility": "owner_can_see_and_chat_immediately",
    "communityVisibility": "hidden_until_review_approved",
    "requiredBeforeWrite": [
      "authenticated_owner_user_id",
      "role_required_fields_present",
      "age_required_for_high_freedom_style",
      "basic_content_safety_passed",
      "client_role_id_idempotency"
    ]
  },
  "communitySubmitPlan": {
    "method": "requestCommunityPublish",
    "enabledOnlyWhen": "publish_to_community_toggle_true_or_owner_resubmit",
    "statusWhenNotRequested": "private_ready",
    "statusWhenRequested": "ai_review_pending",
    "communityVisibleBeforeApproval": false,
    "ownerCanChatBeforeApproval": true
  },
  "aiReviewPlan": {
    "method": "recordAiReviewDecision",
    "checkedFields": [
      "avatar",
      "role_name",
      "tags",
      "intro",
      "persona",
      "opening_line",
      "dialogue_style",
      "age",
      "real_person_or_ip_risk",
      "copyright_or_infringement_risk",
      "explicit_sexual_content",
      "violence",
      "illegal_content"
    ],
    "riskLevel": "medium",
    "decision": "manual_review",
    "statusAfterSubmit": "manual_review_pending",
    "userVisibleMessage": "内容存在争议点，已进入人工复核队列，审核前社区其他用户不可见。",
    "possibleDecisions": [
      "allow_publish_queue",
      "auto_public",
      "manual_review",
      "reject_with_guidance"
    ],
    "notLiveYet": [
      "model_provider_call",
      "avatar_provider_scan",
      "risk_reason_persistence"
    ]
  },
  "manualReviewPlan": {
    "method": "enqueueManualReviewTask",
    "queue": "gray_sample_review_queue",
    "onlyFor": [
      "gray_sample",
      "user_appeal",
      "reported_role",
      "high_risk_category"
    ],
    "notRequiredForEveryRole": true,
    "requiredBeforeHumanAction": [
      "admin_actor",
      "reason_type",
      "resolution",
      "user_visible_guidance"
    ]
  },
  "publicReadPlan": {
    "communitySquare": {
      "method": "listCommunityPublicRoles",
      "source": "ai_roles + role_review_logs",
      "filter": "visibility = 'community_public' and audit_status in ('approved', 'ai_approved') and publish_status = 'online'",
      "excludes": [
        "private_ready",
        "ai_review_pending",
        "manual_review_pending",
        "rejected_with_guidance"
      ]
    },
    "myRoles": {
      "method": "listMyRolesForOwner",
      "source": "ai_roles",
      "ownerFilter": "owner_user_id = authenticated_user_id",
      "includes": [
        "private_ready",
        "ai_review_pending",
        "manual_review_pending",
        "approved",
        "rejected_with_guidance"
      ]
    }
  },
  "adminQueuePreview": {
    "queue": "gray_sample_review_queue",
    "filters": [
      "risk_level",
      "decision",
      "status",
      "reason_type",
      "submitted_at"
    ],
    "columns": [
      "role_id",
      "owner_user_id",
      "role_name",
      "risk_level",
      "decision",
      "manual_queue",
      "user_visible_message",
      "submitted_at"
    ],
    "sampleRows": [
      {
        "roleId": "user-role-preview-001",
        "ownerUserId": "preview-user-id",
        "roleName": "晚风里的陌生人",
        "riskLevel": "medium",
        "decision": "manual_review",
        "manualQueue": "gray_sample_review_queue",
        "communityVisible": false
      }
    ]
  },
  "blockers": [
    "live_user_role_repository_not_implemented",
    "ai_roles_owner_rls_not_verified",
    "role_ai_review_results_table_not_migrated",
    "role_manual_review_tasks_table_not_migrated",
    "avatar_scan_provider_not_live",
    "ai_review_provider_not_live",
    "community_public_policy_not_verified",
    "manual_review_queue_not_live"
  ],
  "nextStep": "replace preview with owner-scoped user role tables, AI review result persistence, manual review queue, public community read policy and publish gate before enabling live community submission",
  "boundaries": [
    "user_role_community_publish_repository_preview_only",
    "does_not_create_real_user_role",
    "does_not_submit_to_real_ai_review",
    "does_not_publish_to_community",
    "does_not_write_production_database",
    "does_not_call_model_provider",
    "does_not_upload_or_scan_real_avatar"
  ]
}