/**
 * Portal KBDB template 種子資料（portal-auth design §2.1/§3.2，Gitea #24/#25 P2）
 *
 * 種子資料檔慣例（rule 07 §1 / pre-write-guard *-seeds.ts 類別）：
 *   「裝好後預設有哪些 template」是 API 的能力，資料宣告放 server（本檔），
 *   由 /init/seed（與 /portal/admin/bootstrap 的 ensure 路徑）冪等灌入 KBDB。
 *   薄殼（CLI/MCP）不自帶這份清單。
 *
 * 零新表鐵律：這些是 KBDB 萬用表的 template（虛擬表定義），不是 D1 真表。
 * 帳號「資料」（records/entries）一律寫 `{CONSOLE_TENANT}::portal` 子 namespace
 * （design D-2）；template 定義本身是全域 schema（templates 表無 owner 概念）。
 */

export interface PortalTemplateSeed {
  name: string;
  description: string;
  slots: string[];
  created_by: 'system';
}

export const PORTAL_TEMPLATE_SEEDS: PortalTemplateSeed[] = [
  {
    // design §2.1：portal 同仁帳號。password_hash 存 KDF 輸出（pbkdf2-sha256$…，D-6），
    // 永不存明碼；libraries 是 JSON array 字串（["general"] / ["*"]＝全庫）。
    name: 'portal_user',
    description: 'RAG Portal 同仁帳號（portal-auth §2.1；資料寫 {tenant}::portal 子 namespace）',
    slots: ['email', 'display_name', 'status', 'role', 'password_hash', 'libraries', 'created_at', 'updated_at'],
    created_by: 'system',
  },
  {
    // design §3.2：庫目錄（admin 頁列庫用）。庫本體＝知識條目 metadata_json.$.library 標記，
    // 這裡只是「有哪些庫」的登記簿。
    // graph_source（design D-4，P3）：'true'＝此庫是知識圖譜的萃取來源——graph 粗閘按
    // 「用戶是否擁有 graph 來源庫權限」放行。**沒有任何庫標記時預設視同 general**（D-4 定案）。
    name: 'portal_library',
    description: 'RAG Portal 庫目錄登記（portal-auth §3.2；庫＝metadata_json.$.library 標記）',
    slots: ['name', 'display_name', 'description', 'status', 'graph_source'],
    created_by: 'system',
  },
  {
    // t130：rag_ingest_card.post_triplet 寫 POST /records {template:'triplet'}。
    // 新實例若無此 template 回 400「template not found: triplet」→ 三元組全滅。
    // slots 來源：kbdb_list_templates 核實（2026-07-19，library-map.test.ts PROD_TRIPLET_SLOTS）
    // + library（library-map.ts M1 預案：recompute 歸庫用，ensurePortalTemplates 若缺則 PATCH 補入）。
    name: 'triplet',
    description: 'KBDB 知識圖譜三元組（kbdb-graph-plugin 寫入；portal 讀此 template 建鄰接圖）',
    slots: [
      'subject', 'predicate', 'object',
      'source_block_id', 'confidence', 'clusters_json',
      'bridge_score', 'subject_entity_type', 'object_entity_type',
      'status', 'superseded_by',
      'source_uri', 'content_hash', 'source_anchor', 'predicate_embed',
      'library',
    ],
    created_by: 'system',
  },
];
