-- =============================================================================
-- Muse 全栈 app 最小启动种子（PostgreSQL）
-- 适用：muse-server，spring profile = local,infra，muse.security.mock-enable=true
-- 目标库：已含【yudao 基座表 system_*/infra_*】+【Muse Flyway V1-V21】的 PG 库
-- 目标：让 app 启动成功 + 放行/服务 /app-api/muse/**
--
-- 关键结论（基于只读代码核查，非猜测）：
--   1) 每个 app-api 请求都会先走 TokenAuthenticationFilter：
--      checkAccessToken(token) -> system_oauth2_access_token / system_oauth2_refresh_token
--      （查不到再回退到 mock 登录）。这两张表必须【存在】（yudao 基座表，已假定存在），
--      但【无需任何种子行】——mock token 命中不了它们正是预期路径。
--   2) muse.tenant.enable=true 时，TenantSecurityWebFilter 对非 ignore 的 app-api 请求
--      调用 validTenant(tenantId)，校验 system_tenant：存在 + status 启用 + 未过期。
--      => 这是本种子【唯一强制】的一行：system_tenant(id=1)。
--   3) validTenant 不连表查 system_tenant_package / system_users / system_role，
--      故这些表对“app 启动 + /app-api/muse/** 放行”不是必需；下文按“可选”给出，
--      仅为后续 admin-api 登录 / 跨租户场景方便。
--
-- 列布局对齐真实 PG yudao 基座（BaseDO）：deleted 为 boolean，tenant_id 为 bigint，
-- 审计列 creator/create_time/updater/update_time 均有默认值。id 显式给定（INPUT 模式）。
-- 全部 INSERT 幂等：ON CONFLICT (id) DO NOTHING，可重复执行。
-- =============================================================================

-- -----------------------------------------------------------------------------
-- [必需] 默认租户 system_tenant(id=1)
--   status=0 启用（CommonStatusEnum.ENABLE=0；DISABLE=1）
--   expire_time 设到 2099 远未来，避免 DateUtils.isExpired 触发 TENANT_EXPIRE
--   package_id=1：仅为列非空占位（yudao 无外键约束，不要求 package 行真实存在）
-- -----------------------------------------------------------------------------
INSERT INTO system_tenant
    (id, name, contact_user_id, contact_name, contact_mobile, status, websites,
     package_id, expire_time, account_count,
     creator, create_time, updater, update_time, deleted)
VALUES
    (1, '芋道源码', 1, 'Muse', '15601691300', 0, '',
     1, TIMESTAMP '2099-12-31 23:59:59', 1000,
     '1', CURRENT_TIMESTAMP, '1', CURRENT_TIMESTAMP, FALSE)
ON CONFLICT (id) DO NOTHING;

-- =============================================================================
-- 以下均为【可选】：/app-api/muse/** 的 mock 路径不需要它们。
-- 仅当你还想跑 admin-api 登录、或希望 getTenantIdList/套餐相关逻辑数据完整时再放开。
-- =============================================================================

-- -----------------------------------------------------------------------------
-- [可选] 租户套餐 system_tenant_package(id=1)：status=0 启用
--   menu_ids 用 '[]' 占位（DO 内是 Set<Long>，JSON 数组字符串）
-- -----------------------------------------------------------------------------
INSERT INTO system_tenant_package
    (id, name, status, remark, menu_ids,
     creator, create_time, updater, update_time, deleted)
VALUES
    (1, '系统租户套餐', 0, '最小启动占位', '[]',
     '1', CURRENT_TIMESTAMP, '1', CURRENT_TIMESTAMP, FALSE)
ON CONFLICT (id) DO NOTHING;

-- -----------------------------------------------------------------------------
-- [可选] 管理员 system_users(id=1)：status=0 启用，tenant_id=1
--   password 为 admin 的 BCrypt 值（yudao 默认 admin/admin123，密文随版本可能不同；
--   如需精确登录请以本环境实际加密结果为准）。app-api/muse/** 不读此表。
-- -----------------------------------------------------------------------------
INSERT INTO system_users
    (id, username, password, nickname, remark, dept_id, post_ids,
     email, mobile, sex, avatar, status, login_ip, login_date,
     creator, create_time, updater, update_time, deleted, tenant_id)
VALUES
    (1, 'admin',
     '$2a$10$mRMIYLDtRHlf6.9ipiqH1.Z.bh/R9dO9d5iHiGYPigi6r5KFkOJ/.',
     '芋道源码', '管理员', NULL, NULL,
     'aoteman@126.com', '15612345678', 1, '', 0, '', NULL,
     '1', CURRENT_TIMESTAMP, '1', CURRENT_TIMESTAMP, FALSE, 1)
ON CONFLICT (id) DO NOTHING;

-- -----------------------------------------------------------------------------
-- [可选] 超级管理员角色 system_role(id=1)：type=1 内置，data_scope=1 全部，status=0 启用
-- -----------------------------------------------------------------------------
INSERT INTO system_role
    (id, name, code, sort, data_scope, data_scope_dept_ids, status, type, remark,
     creator, create_time, updater, update_time, deleted, tenant_id)
VALUES
    (1, '超级管理员', 'super_admin', 1, 1, '', 0, 1, '内置角色',
     '1', CURRENT_TIMESTAMP, '1', CURRENT_TIMESTAMP, FALSE, 1)
ON CONFLICT (id) DO NOTHING;

-- =============================================================================
-- 说明：本种子不创建任何表。若启动报 “relation does not exist”，说明目标库缺少
-- 对应 yudao 基座表（最常见：system_oauth2_access_token / system_oauth2_refresh_token /
-- infra_* 系列），需要先用 yudao 基座 PG 建表脚本补齐，再执行本种子。
-- =============================================================================
