此文档是织信低代码平台的团队介绍文档，包含团队成员、团队角色和组织架构。

## 概述

织信采用多租户架构，系统中用户分为三种类型：

- **系统账号 (Account)**：通过注册或管理后台添加，是登录织信的凭证
- **团队成员 (CompanyMember)**：每个Account可加入多个团队
- **应用成员 (User)**：每个CompanyMember在团队中可加入多个应用

系统账号在没有加入团队的情况下，登录系统后不能执行任何操作。管理后台可对账号执行禁用、强制修改密码等操作。

## 团队成员

团队成员（CompanyMember）是系统账号加入团队后的身份。每个团队成员可拥有多个角色，归属于一个或多个部门。

### 加入方式

- 创建团队后自动加入并获得管理员角色
- 接受邀请加入
- 管理员在后台添加（已有账号或创建新账号）
- 脚本调用 `informat.company.addCompanyMember()`

### 移除方式

- 管理后台移除
- 用户自行退出
- 脚本调用 `informat.company.deleteCompanyMember()`

## 团队角色

团队成员被赋予不同的团队角色，这些角色关联相应权限。团队成员可拥有多个角色。

### 默认角色

- **管理员**：拥有所有权限，可进行应用设计
- **成员**：仅有使用应用的权限

### 角色权限列表

| 权限ID | 权限名称 | 说明 |
|--------|---------|------|
| CompanySetting | 团队设置 | 管理团队基本信息和配置 |
| InviteMember | 成员管理 | 邀请、添加、移除团队成员 |
| CompanyApp | 应用管理 | 创建、编辑、删除应用 |
| CompanyAppDesigner | 应用设计 | 设计应用的数据表、工作流、仪表盘等 |
| CompanyAppMonitor | 应用监控 | 监控应用运行状态 |

创建或编辑角色时，通过 `permissionIds` 字段设置角色拥有的权限，值为上表中的权限ID列表。

## 组织架构（部门）

每个团队可构建部门组织架构树，部门之间存在父子关系。每个部门可有一个或多个CompanyMember作为负责人。

每个团队成员都至少需要加入一个部门，在成员信息中，`departmentList` 记录成员所在部门列表。

### 创建方式

- 团队部署后自动创建
- 管理员手动创建
- 脚本调用 `informat.dept.addDept()`

### 删除方式

- 管理员删除
- 脚本调用 `informat.dept.deleteDept()`

## 应用成员

团队成员加入应用后成为应用成员（User），被赋予不同的应用角色。每个应用默认有"管理员 admin"角色，拥有所有权限。

### 加入方式

- 应用管理员添加用户
- 应用管理员设置授权方式为"按照角色和部门"授权
- 脚本调用 `informat.user.addUser()`

### 移除方式

- 应用管理员移除
- 若授权方式为"按角色和部门"，当用户角色或部门不在授权范围内时自动移除
- 脚本调用 `informat.user.deleteUser()`
