有巢应用脚手架分析
为什么要搭这套脚手架
Section titled “为什么要搭这套脚手架”有巢应用脚手架主要是为了简化开发流程,提高开发效率,减少重复劳动。它可以帮助开发者快速搭建一个基本的有巢应用,包括但不限于以下几点:
1. 多应用,每个新应用都要重跑一遍。 基础配置不是一次性动作,而是可复制的流程。没有脚手架,第一次靠想、第二次靠记、第三次开始漏——三次之后就想不全了。
2. 插件会往系统里塞东西,不写清楚就是黑箱。 数据字典插件插字典,组织机构插件插机构类型 / 性别 / 人员类型 / 学历 / 专业,审批状态插件插审批状态。这些是插件的隐式副作用——装完插件后系统里多出来什么,如果不提前列清楚,出问题根本不知道该去哪查。
3. 字典和枚举必须集中管。 税率、单位、计量单位这类业务常量,散在各业务表里就是灾难:改一次要改 N 处,改漏一处账就对不上。集中成字典项,改一处全生效。
4. 基础数据不预置,等于没上线。 角色(root / member / worker / admin / supporter)和组织(机构 → 部门)装完插件系统能跑,但没人有权限、组织树是空的,实际还是不能干活。
一、搭建开启插件
Section titled “一、搭建开启插件”| 分类 | 插件包名 | 说明 |
|---|---|---|
| 官方插件 | @nocobase/plugin-map | 地图插件 |
| 官方插件 | @nocobase/plugin-field-m2m-array | 多对多数组 |
| 官方插件 | @nocobase/plugin-field-component-mask | 掩码 |
| 官方插件 | @nocobase/plugin-password-policy | 密码策略 |
| 官方插件 | @nocobase/plugin-field-encryption | 加密 |
| 官方插件 | @nocobase/plugin-auth-wecom | 企业微信 |
| 自研插件 | @youchaoyun/plugin-common-collections | 公共表 |
| 自研插件 | @youchaoyun/plugin-field-sequence-pro | 高级自动编码 |
| 自研插件 | @youchaoyun/plugin-data-dictionary | 数据字典 |
| 自研插件 | @youchaoyun/plugin-attachment | 高级附件上传 |
| 自研插件 | @youchaoyun/plugin-paas-organization | 组织机构 |
| 自研插件 | @youchaoyun/plugin-auto-generate | 快速构建 |
| 自研插件 | @youchaoyun/plugin-header-logo | 顶栏Logo标题 |
| 自研插件 | @youchaoyun/plugin-icon-library | 图标库扩展 |
| 自研插件 | @youchaoyun/plugin-quick-filter | 快速筛选 |
| 自研插件 | @youchaoyun/plugin-notification | 通用提醒通知 |
| 自研插件 | @youchaoyun/plugin-edit-metadata | 元数据编辑 |
| 自研插件 | @youchaoyun/plugin-approval-status | 审批状态 |
| 自研插件 | @youchaoyun/plugin-login-setting | 登录页设置 |
| 自研插件 | @youchaoyun/plugin-watermark | 水印 |
| 第三方插件 | …… | — |
二、数据字典
Section titled “二、数据字典”| 字典类别 | 系统 | 字典项(枚举值) | 自动插入来源 |
|---|---|---|---|
| 字典类别#DictCatalog | 是 | 系统【内置】 | 数据字典插件 |
| 税率#TaxRate | — | — | 数据字典插件 |
| 计量单位#Unit | — | — | 数据字典插件 |
| 机构类型#OrganizationType | 是 | 机构(集团/子分公司/项目部)、部门、外协队伍 | 组织机构插件 |
| 性别#Sex | — | 男、女、未说明的性别、未知的性别 | 组织机构插件 |
| 人员类型#PersonType | — | 管理人员(系统)、作业人员(系统)、网格人员、协作人员 | 组织机构插件 |
| 学历#Degree | — | — | 组织机构插件 |
| 专业#Major | — | — | 组织机构插件 |
| 审批状态#ApprovalStatus | 是 | — | 审批状态插件 |
| 角色类型#RoleType | 是 | 内置 | 数据字典插件 |
| 合同类型#ContractType | 是 | — | 数据字典插件 |
| 伙伴类型#PartnerType | 是 | — | 数据字典插件 |
| 角色名称 | 角色标识 | 类别 | 说明 | 系统管理 | 数据权限 | 路由 | AI员工 | 业务权限 | 功能权限 | 人员范围 |
|---|---|---|---|---|---|---|---|---|---|---|
| Root | root | 角色 | 系统内置超级管理,主要用于系统初始化,部署用 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 管理人员 | member | 角色 | 默认角色,查看本机构及下级机构或公开信息,添加,编辑/删除个人数据 | 本级机构及下级 | ||||||
| 作业人员 | worker | 角色 | 自己的数据 | |||||||
| 系统管理员 | admin | 角色 | 用户后台管理、权限分配,不可查看业务数据 | 允许配置插件(与系统搭建相关的关闭权限)允许清除缓存,重启应用 | ||||||
| 技术支持 | supporter | 角色 | 技术支持用,由admin按需开通 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 董事长/书记 | chairman | 岗位 | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| 总经理/项目经理 | GM | 岗位 | ✓ | ✓ | ✓ | ✓ | ✓ |
四、插件所包含的系统表
Section titled “四、插件所包含的系统表”| 插件 | 数据表 | 主键 |
|---|---|---|
| 数据字典 | dictTypes | typeCode |
| 数据字典 | dictItems | id |
| 组织机构 | organizations | id |
| 组织机构 | identities | id |
| 组织机构 | employees | id |
分表字段清单
Section titled “分表字段清单”数据字典 → dictTypes
Section titled “数据字典 → dictTypes”主键
typeCode· 唯一约束 typeName
| # | 字段 | 类型 | 可空 |
|---|---|---|---|
| 1 | typeCode | varchar | NOT NULL |
| 2 | typeName | varchar | NOT NULL |
| 3 | category | varchar | NULL |
| 4 | enabled | boolean | NOT NULL |
| 5 | builtIn | boolean | NULL |
| 6 | remark | text | NULL |
| 7 | order | bigint | NULL |
| 8 | sort | bigint | NULL |
| 9 | createdById | bigint | NULL |
| 10 | updatedById | bigint | NULL |
| 11 | createdAt | timestamptz | NULL |
| 12 | updatedAt | timestamptz | NULL |
数据字典 → dictItems
Section titled “数据字典 → dictItems”主键
id· 唯一约束 —
| # | 字段 | 类型 | 可空 |
|---|---|---|---|
| 1 | id | bigint | NOT NULL |
| 2 | code | varchar | NOT NULL |
| 3 | name | varchar | NOT NULL |
| 4 | enabled | boolean | NOT NULL |
| 5 | builtIn | boolean | NULL |
| 6 | color | varchar | NOT NULL |
| 7 | remark | varchar | NULL |
| 8 | parentId | bigint | NULL |
| 9 | fTypeCode | varchar | NULL |
| 10 | order | bigint | NULL |
| 11 | sort | bigint | NULL |
| 12 | icon | varchar | NULL |
| 13 | createdById | bigint | NULL |
| 14 | updatedById | bigint | NULL |
| 15 | createdAt | timestamptz | NULL |
| 16 | updatedAt | timestamptz | NULL |
组织机构 → organizations
Section titled “组织机构 → organizations”主键
id· 唯一约束 —
| # | 字段 | 类型 | 可空 |
|---|---|---|---|
| 1 | id | bigint | NOT NULL |
| 2 | name | varchar | NOT NULL |
| 3 | code | varchar | NOT NULL |
| 4 | fullCode | varchar | NULL |
| 5 | order | bigint | NULL |
| 6 | enabled | boolean | NOT NULL |
| 7 | parentId | bigint | NULL |
| 8 | organizationType | varchar | NULL |
| 9 | ownerId | bigint | NULL |
| 10 | organizationId | bigint | NULL |
| 11 | level | bigint | NULL |
| 12 | description | varchar | NULL |
| 13 | sort | bigint | NULL |
| 14 | createdOrgId | bigint | NULL |
| 15 | createdDeptId | bigint | NULL |
| 16 | createdById | bigint | NULL |
| 17 | updatedById | bigint | NULL |
| 18 | createdAt | timestamptz | NULL |
| 19 | updatedAt | timestamptz | NULL |
组织机构 → identities
Section titled “组织机构 → identities”主键
id· 唯一约束 departmentId + employeeId
| # | 字段 | 类型 | 可空 |
|---|---|---|---|
| 1 | id | bigint | NOT NULL |
| 2 | departmentId | bigint | NOT NULL |
| 3 | organizationId | bigint | NOT NULL |
| 4 | employeeId | bigint | NOT NULL |
| 5 | userId | bigint | NULL |
| 6 | roleName | varchar | NULL |
| 7 | isMain | boolean | NOT NULL |
| 8 | isOwner | boolean | NOT NULL |
| 9 | enabled | boolean | NOT NULL |
| 10 | isCurrent | boolean | NOT NULL |
| 11 | sort | bigint | NULL |
| 12 | directSupervisorId | bigint | NULL |
| 13 | createdOrgId | bigint | NULL |
| 14 | createdDeptId | bigint | NULL |
| 15 | createdById | bigint | NULL |
| 16 | updatedById | bigint | NULL |
| 17 | createdAt | timestamptz | NULL |
| 18 | updatedAt | timestamptz | NULL |
组织机构 → employees
Section titled “组织机构 → employees”主键
id· 唯一约束 idCard
| # | 字段 | 类型 | 可空 |
|---|---|---|---|
| 1 | id | bigint | NOT NULL |
| 2 | name | varchar | NULL |
| 3 | number | varchar | NULL |
| 4 | userId | bigint | NULL |
| 5 | phone | varchar | NULL |
| 6 | idCard | varchar | NULL |
| 7 | age | varchar | NULL |
| 8 | sex | varchar | NULL |
| 9 | birthday | date | NULL |
| 10 | personType | varchar | NULL |
| 11 | emergencyContact | varchar | NULL |
| 12 | emergencyPhone | varchar | NULL |
| 13 | school | varchar | NULL |
| 14 | firstDegree | varchar | NULL |
| 15 | highestDegree | varchar | NULL |
| 16 | eduMajor | varchar | NULL |
| 17 | graduationTime | date | NULL |
| 18 | sort | bigint | NULL |
| 19 | email | varchar | NULL |
| 20 | isValid | boolean | NULL |
| 21 | order | bigint | NULL |
| 22 | createdById | bigint | NULL |
| 23 | updatedById | bigint | NULL |
| 24 | createdAt | timestamptz | NULL |
| 25 | updatedAt | timestamptz | NULL |
五、UI功能菜单
Section titled “五、UI功能菜单”- 人员基础
- 管理人员
- 组织机构
- 员工信息
- 员工花名册
- 基础设置
- 职称
- 专业
- 管理人员
- 系统设置
- 数字员工
- 岗位维护
- 角色维护
六、初始化基础数据
Section titled “六、初始化基础数据”内置角色/岗位
Section titled “内置角色/岗位”| 角色名称 | 角色标识 | 类别 |
|---|---|---|
| Root | root | 角色 |
| 管理人员 | member | 角色 |
| 作业人员 | worker | 角色 |
| 系统管理员 | admin | 角色 |
| 技术支持 | supporter | 角色 |
| 董事长/书记 | chairman | 岗位 |
| 总经理/项目经理 | GM | 岗位 |
| 用户名 | 所属角色 | 类别 |
|---|---|---|
| admin | root | 角色 |
| youchao | supporter | 角色 |
- 消息模版
七、个性化配置
Section titled “七、个性化配置”-
租户开通开启(租户)
- 运营系统租户管理员为系统的管理员
- 系统语言(enabledLanguages)
- 角色模式(允许角色并集)(roleMode)
- 默认主题(default)、颜色(default/compact):themeConfig
- 角色模式(允许角色并集)(roleMode)
-
系统基础信息(内部)
- 系统名称(title)
- 系统语言(enabledLanguages)
- 角色模式(允许角色并集)(roleMode)
- 默认主题(default)、颜色(default/compact):themeConfig
- 技术支持/品牌/关于/网站图标(applicationPlugins->custom-brand->options)