部门与员工

维护部门与员工主数据。部门仅在企微维护,本系统只做入站同步与只读展示;员工可在系统维护编制、状态、权限等。

产品即核算/权限单元(见产品 SKU:products.project_name),不另建项目组表。员工可加入某个产品,并标记负责人。

阶段:P0。企微部门回写属 P2。

部门

表:organizations

企业通讯录部门树,与产品无关。后台不提供创建 / 编辑 / 删除,改动请在企微通讯录完成后再同步。后台「员工」页左侧展示部门树(只读),右侧为该部门及子部门员工。

字段

字段 说明 来源
id 系统主键 系统
name 部门名称 企微
wecom_dept_id 企微部门 id 企微
parent_id 上级部门(可选,树形) 企微
sort 排序(值大靠前) 企微
status 启用 / 停用 企微 / 同步
created_at / updated_at 时间戳 系统

同步关联键:wecom_dept_id

员工

表:users

一经创建不允许删除;可改状态(在职 / 停用)。企微 UserId(wecom_userid)由同步写入,不可编辑。

编制 说明
正式工 正式全职员工
外编 常年外编人员

字段

字段 说明 来源
id 系统主键 系统
name 姓名 企微 / 系统
mobile 手机 企微 / 系统
email 邮箱 企微 / 系统
wecom_userid 企微 userid(登录与同步关联键,不可编辑) 企微
avatar 头像 URL 企微
position 职务 企微 / 系统
gender 性别 企微
organization_id 所属部门(可空) 企微 / 系统
employment_type fulltime 正式工 / external 外编 系统
status 在职 / 离职(停用) 企微 / 系统
created_at / updated_at 时间戳 系统

员工可挂在某个部门下(通讯录),与是否加入某产品无关。

企微授权回写:H5 / 后台企微 OAuth 成功后,按 userid 匹配或创建员工,并更新 mobileavatar(以及姓名等通讯录可见字段,以授权接口返回为准)。编制、角色不同步。

产品成员

表:product_user

一个产品可有多名成员;其中至多一名负责人。产品主数据见 03-产品SKU.md

字段 说明 来源
product_id 产品 系统
user_id 成员 系统
is_leader 是否负责人(同一产品至多一名为 true) 系统

角色与权限

功能权限用 spatie/laravel-permission + Filament Shield。角色、权限只在本系统维护,不同步企微。

包表:rolespermissionsmodel_has_rolesmodel_has_permissionsrole_has_permissions。模型 App\Models\Roleconfig/permission.php models.role)。

标识与中文名称

英文 name 给代码和 Shield 用,界面用 label不要把 name 改成中文,也不要改 Shield 配置里的 super_admin / panel_user key。

字段 界面 说明
name 标识 权限 key,创建后少改
label 名称 中文显示名;空则回退 name
guard_name 默认 web

预置:super_admin(超级管理员)。业务角色(采购、销售、财务等)在后台「角色」里自建,把权限勾上即可。

后台「部门与员工 → 角色」维护角色与权限;员工表单多选角色、列表徽章都展示 label

进后台与鉴权

  • User 使用 HasRoles
  • 能否进后台users.status === active,不强制 panel_user(企微同步进来的在职员工仍可登录)。
  • 能进哪些菜单/资源/页面看角色权限(Shield 生成 Policy;页面如环境配置用 HasPageShield)。
  • 自定义权限:data.view-all(查看全量数据)。

数据范围不靠包:按员工加入的产品(product_user)过滤;持 data.view-all 可看全量。

编制 employment_type 仍是员工字段,与角色配合使用,不是 permission 包概念。

维护方式

  1. 上线批量:调企微通讯录接口拉部门与成员,写入部门、员工(含手机 mobile、头像 avatar);再在系统维护产品成员与负责人,并补 employment_type、角色权限。
  2. 日常系统维护:后台维护员工(编制、状态、权限)、产品成员;不维护部门树。不可删除员工;不可改 wecom_userid
  3. 日常企微同步:通讯录增量同步部门与员工(部门变更只认企微)。
  4. 企微授权登录:OAuth 回调时 upsert 员工,并刷新 mobileavatar(以本次授权/用户信息接口为准)。

同步关联键:部门用 wecom_dept_id,员工用 wecom_userid。冲突以最后成功写入为准,失败写同步日志。

验收标准

  • [ ] 部门树只读;上线 / 日常靠企微同步,后台无创建改删部门。
  • [ ] 能维护员工(含手机、头像),上线可用企微批量同步。
  • [ ] 企微 OAuth 登录后更新该员工手机号与头像。
  • [ ] 员工一经创建不可删除;可改状态;wecom_userid 只读。
  • [ ] 不另建项目组表;产品成员挂 products,至多一名负责人;product_user 唯一 (product_id, user_id)
  • [ ] 角色与权限用 laravel-permission + Filament Shield;界面展示 labelname 保持英文 key。
  • [ ] 数据范围按加入的产品隔离;持有全量权限的角色可看全量。

V1 / 延后

V1(P0) 延后(P2)
入站同步 + OAuth upsert 部门/员工回写企微