立项原因: 在 SaaS 企业管理场景中,管理员经常需要为成百上千的用户批量分配或回收产品席位(Entitlement)。传统后台仅支持单个手动分配,或提供简单的批量上传但缺乏完整的校验和预览机制,导致以下问题:批量导入失败率高、错误无法提前发现、导入后席位超售风险、新用户/外部用户处理流程复杂、无操作审计记录、结果无法导出归档。
行业场景与业务背景: 本项目面向 B2B SaaS 平台的客户成功团队和组织管理员,服务于企业级软件订阅管理场景。典型业务场景包括:企业新员工入职批量开通产品权限、季度/年度席位续费后的批量分配、员工离职/转岗的权益回收、跨组织协作时的外部用户授权等。 工具需要兼容两类角色:组织管理员(可创建账号并邀请新用户加入组织)和权益管理员(仅能在已有组织成员内分配权益),不同角色的权限边界直接影响哪些导入行可以执行。
项目包含以下核心功能模块:
身份认证与组织选择:对接独立身份服务,支持登录后选择目标管理组织,自动加载该组织下可用的产品和权益列表,并实时展示已购席位、已分配席位、剩余席位等配额信息。
CSV 上传与本地预校验:支持拖拽或点击上传 CSV 文件,在本地完成解析后立即执行快速校验:邮箱格式验证、必填字段检查、重复邮箱检测、同一邮箱冲突操作(同时 assign 和 revoke)、无法识别的 action 类型等,问题行即时标红并给出具体原因。
服务端深度校验与问题修复:创建后端导入任务后,系统自动轮询校验进度,服务端检查业务规则:用户是否已注册账号、是否为当前组织成员、权益状态是否激活、revoke 操作是否存在有效分配、导入后是否超出席位数量限制等。校验完成后,用户可在表格中直接编辑邮箱/姓名/部门/操作类型,删除问题行或跳过警告,修改后自动重新触发校验。
席位影响可视化预览:提交前可打开独立图表窗口,通过仪表盘直观展示:行就绪状态分布(可导入/需确认/已跳过/已阻断)、席位占用变化趋势(当前占用→计划分配/回收→预计占用)、问题原因分类统计。图表数据支持本地实时估算和后端校验后精确计算两种模式。
导入执行与进度追踪:确认提交后自动轮询任务状态,实时展示处理进度;完成后生成结果包(ZIP),包含 XLSX 汇总报告、成功明细 CSV、失败明细 CSV,支持一键下载本地存档。
历史记录与设置:支持查看历史导入任务列表及详情,支持中英文语言切换,可配置后端服务地址。
我负责的任务:独立完成整个桌面客户端的架构设计与开发,包括 Electron 主进程与多窗口管理、Vue 3 渲染层、Pinia 状态管理、REST/GraphQL API 封装、本地 CSV 解析与校验引擎、轮询任务状态机、AntV G2 图表可视化、IPC 跨窗口通信、结果包导出、国际化、Vitest 单元测试、electron-builder 跨平台打包配置。
技术栈:Electron、Vue 3、TypeScript、Vite + electron-vite、Pinia、Vue Router、vue-i18n、AntV G2、Vitest、pnpm workspace monorepo、electron-builder。
架构亮点与难点:
pnpm monorepo 三层拆分:将项目拆分为 web(渲染层)、electron(主进程+preload)、charts(共享图表组件)三个独立包,图表组件可被主窗口和独立预览窗口复用,构建职责清晰。
IPC 多窗口数据同步:影响预览在独立 BrowserWindow 打开,通过 IPC 传初始数据;窗口加载完成后主动请求最新数据,避免刷新或重新打开时状态不一致。
智能退避轮询:轮询间隔读取后端返回的 nextPollAfterMs 字段,在 250ms~5000ms 区间收敛,既减少无效请求,又保证状态及时更新。
双层校验状态合并:本地校验与服务端校验结果智能合并——用户编辑行后本地问题重新计算,服务端标记(如用户不存在、权限不足)予以保留,直到重新提交服务端校验,避免信息丢失误导用户。
权限驱动状态机:根据角色(组织管理员/权益管理员)决定阻断规则,Pinia getters 精确计算 canReview/canCommit 等状态,按钮可用性完全由状态驱动,杜绝手动判断遗漏。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论