package authx

// 平台账号角色（JWT role）——统一中文命名。
const (
	Role超级管理员 = "超级管理员" // 平台级：可管理所有公司
	Role管理员     = "管理员"   // 公司顶级
	Role编辑       = "编辑"
	Role只读       = "只读"
	Role待加入     = "待加入"
	Role智能体     = "智能体"
)

// RoleAgent 智能体 JWT 角色（与 Role智能体 相同）。
const RoleAgent = Role智能体

// 智能体租户角色编码（roles 表 code）——统一中文。
const (
	AgentRole生成发布 = "生成发布"
	AgentRole只读     = "只读"
	AgentRole读写     = "读写"
	AgentRole运维     = "运维"
)

// NormalizeRole 将平台角色统一为中文（兼容英文旧码）。
func NormalizeRole(role string) string {
	switch role {
	case "platform_admin", "super_admin", Role超级管理员:
		return Role超级管理员
	case "owner", Role管理员:
		return Role管理员
	case "editor", Role编辑:
		return Role编辑
	case "viewer", Role只读:
		return Role只读
	case "pending", Role待加入:
		return Role待加入
	case "agent", Role智能体:
		return Role智能体
	default:
		return role
	}
}

// NormalizeAgentRoleCode 智能体角色编码 → 中文（兼容英文旧码）。
func NormalizeAgentRoleCode(code string) string {
	switch code {
	case "publisher", AgentRole生成发布:
		return AgentRole生成发布
	case "viewer", AgentRole只读:
		return AgentRole只读
	case "editor", AgentRole读写:
		return AgentRole读写
	case "operator", AgentRole运维:
		return AgentRole运维
	default:
		return code
	}
}

// IsPlatformAdmin 是否平台超级管理员（可跨公司）。
func IsPlatformAdmin(role string) bool {
	return NormalizeRole(role) == Role超级管理员
}

// IsOwner 是否公司顶级管理员（不含超级管理员）。
func IsOwner(role string) bool {
	return NormalizeRole(role) == Role管理员
}

// IsCompanyAdmin 公司内顶级管理员（超级管理员不介入公司内部）。
func IsCompanyAdmin(role string) bool {
	return NormalizeRole(role) == Role管理员
}

// IsAgent 是否智能体账号。
func IsAgent(role string) bool {
	return NormalizeRole(role) == Role智能体
}

// RoleLabel 平台角色 → 中文显示（已是中文则原样）。
func RoleLabel(role string) string {
	return NormalizeRole(role)
}

// ValidPlatformRole 是否可赋予人类成员的角色（不含待加入/智能体/超级管理员）。
func ValidPlatformRole(role string) bool {
	switch NormalizeRole(role) {
	case Role管理员, Role编辑, Role只读:
		return true
	default:
		return false
	}
}
