import Spec.Prelude import Spec.System.Connections /-! # Hierarchy —— 主体层级 整个服务中的主体: 平台 → 组织(租户)→ 用户。 - **平台**(Platform): SaaS 提供方实体 - **组织**(Organization): SaaS 租户 - **用户**(User): 租户内的独立实体 **术语**: "管理员"一词在文档中不单独出现,避免跨层歧义。 -/ namespace Spec.System variable (I : Identifiers) /-- 平台(`PINNED`, SaaS 提供方)。只有一个,独立于组织。管理面见 `PlatformAdministration`(ADR-0023)。 -/ structure Platform where /-- 平台自有飞书应用(`PINNED`, ADR-0023)。 -/ application : I.PlatformFeishuApplicationId /-- 组织(`PINNED`, ADR-0020)。project/team 必须归属且仅归属一个 org。 外部连接见 `Connections`。角色/tenancy/凭据见 `Spec.System.Organization`。 -/ structure Organization where /-- 组织标识(`OPEN` 表示)。 -/ id : I.OrganizationId /-- 外部连接(`PINNED`)。 -/ connections : List (ConnectionBinding I) /-- 用户(`PINNED`, 租户层独立实体)。必属一个组织。外部连接见 `Connections`。 -/ structure User where /-- 用户标识(`OPEN` 表示;组织内唯一,不可改;登录用)。 -/ id : I.UserId /-- 所属组织(`PINNED`, ADR-0020)。 -/ organization : I.OrganizationId /-- 显示名(`PINNED`, 可改)。 -/ displayName : String /-- 密码哈希(`OPEN` 表示;id + 密码登录)。 -/ passwordHash : String /-- 外部连接(`PINNED`)。 -/ connections : List (ConnectionProfile I) end Spec.System