{
  "ok": true,
  "status": "preview_only",
  "version": "role-data-contract-2026-06-13-v1",
  "sourceDocument": "docs/20角色卡片温度与酒馆系参考补充-2026-06-12.md",
  "entities": [
    {
      "name": "role_cards",
      "purpose": "公开角色卡、角色详情和聊天入口的主记录。",
      "requiredFields": [
        "id",
        "name",
        "subtitle",
        "category",
        "tags",
        "profile.identity",
        "profile.relationshipPremise",
        "profile.personalityBase",
        "profile.dialogueStyle",
        "profile.openingLine",
        "memoryRules",
        "auditStatus",
        "publishStatus"
      ],
      "indexedFields": [
        "publishStatus",
        "auditStatus",
        "category",
        "tags",
        "heat"
      ]
    },
    {
      "name": "role_prompt_versions",
      "purpose": "保存角色 prompt 的版本、必审项、启用状态和回滚目标。",
      "requiredFields": [
        "roleId",
        "version",
        "blocks",
        "status",
        "reviewedBy",
        "createdAt"
      ],
      "indexedFields": [
        "roleId",
        "version",
        "status"
      ]
    },
    {
      "name": "role_review_logs",
      "purpose": "记录角色草稿、prompt 版本、发布、下架和记忆删除请求的人工审核日志。",
      "requiredFields": [
        "targetType",
        "targetId",
        "action",
        "actor",
        "reason",
        "createdAt"
      ],
      "indexedFields": [
        "targetType",
        "targetId",
        "actor",
        "createdAt"
      ]
    },
    {
      "name": "role_memory_candidates",
      "purpose": "记录用户明确同意前的候选偏好和忘记请求处理状态。",
      "requiredFields": [
        "userId",
        "roleId",
        "type",
        "value",
        "status",
        "createdAt"
      ],
      "indexedFields": [
        "userId",
        "roleId",
        "status"
      ]
    }
  ],
  "lifecycle": {
    "allowedStatuses": [
      "draft_sample",
      "draft",
      "pending_review",
      "needs_copy_edit",
      "needs_safety_review",
      "approved_for_publish_queue",
      "rejected"
    ],
    "allowedPublishStatuses": [
      "offline",
      "scheduled",
      "published",
      "hidden",
      "archived"
    ],
    "publishRule": "publish requires approved audit status and a separate explicit publish action"
  },
  "sampleValidation": {
    "roleId": "wf-moonlit-bookseller",
    "requiredFields": [
      {
        "field": "id",
        "ok": true
      },
      {
        "field": "name",
        "ok": true
      },
      {
        "field": "subtitle",
        "ok": true
      },
      {
        "field": "category",
        "ok": true
      },
      {
        "field": "tags",
        "ok": true
      },
      {
        "field": "profile.identity",
        "ok": true
      },
      {
        "field": "profile.personalityBase",
        "ok": true
      },
      {
        "field": "profile.dialogueStyle",
        "ok": true
      },
      {
        "field": "profile.openingLine",
        "ok": true
      },
      {
        "field": "memoryRules",
        "ok": true
      },
      {
        "field": "review.mustReviewBeforePublish",
        "ok": true
      }
    ],
    "privacyChecks": [
      {
        "rule": "public role response hides internal prompt blocks",
        "ok": true
      },
      {
        "rule": "memory rules forbid high-sensitive privacy",
        "ok": true
      },
      {
        "rule": "manual review required before publish",
        "ok": true
      }
    ]
  },
  "boundaries": [
    "preview_only_not_real_schema",
    "does_not_create_database_tables",
    "does_not_write_production_database",
    "does_not_grant_public_database_access",
    "rls_and_permission_policy_still_missing",
    "migration_still_required_before_production"
  ]
}