--- name: 医院物业SaaS管理后台-概要设计 overview: 设计面向医院物业公司的SaaS模式管理员后台系统概要设计,涵盖在线报修、巡检、保洁、服务评价等核心模块,以及医废管理、陪检管理、合同管理、分段招标管理等扩展模块接口预留。 design: architecture: framework: react component: tdesign styleKeywords: - 企业级SaaS - 专业高效 - 数据驱动 - 清爽蓝白 - 卡片式布局 fontSystem: fontFamily: PingFang SC heading: size: 24px weight: 600 subheading: size: 16px weight: 500 body: size: 14px weight: 400 colorSystem: primary: - "#0052D9" - "#266FE8" - "#4787F0" background: - "#F3F4F6" - "#FFFFFF" - "#F9FAFB" text: - "#1F2937" - "#4B5563" - "#9CA3AF" functional: - "#00A870" - "#E34D59" - "#ED7B2F" - "#0052D9" todos: - id: design-overview content: 编写概要设计文档,涵盖系统架构、模块划分、数据模型、接口规范与扩展机制 status: completed - id: data-model content: 设计核心数据模型(租户、班组、工单、巡检计划、保洁任务、评价、蓝牙设备) status: completed dependencies: - design-overview - id: api-spec content: 设计各模块RESTful API接口规范,含请求/响应结构与权限要求 status: completed dependencies: - design-overview - id: extension-interface content: 设计IModulePlugin扩展接口规范,定义模块注册、菜单注入、权限声明机制 status: completed dependencies: - design-overview - id: tapd-import content: 使用[skill:TAPD]将需求拆解录入TAPD,创建Epic与Story树 status: completed dependencies: - design-overview - data-model - api-spec --- ## 产品概述 面向医院物业公司的SaaS模式管理员后台系统,提供报修、巡检、保洁及服务评价四大核心功能模块,支持多租户隔离与自定义班组人员分配,并预留医废管理、陪检管理、合同管理、分段招标管理等扩展模块接口。 ## 核心功能 ### 在线报修模块 - 微信扫码注册:扫描二维码进入小程序/公众号,自动注册并绑定身份信息 - 上传照片:报修时支持拍摄/上传故障照片,最多9张,含水印时间定位 - 工单生成与流转:自动生成工单编号,按预设规则流转(待分配→处理中→待验收→已完成/已关闭),支持催单、退单、转单 - 延期及协助维修:维修人员可申请延期,需主管审批;可请求其他班组协助,生成协助子工单 ### 巡检管理模块 - 主管制定计划:按区域/设备/频次创建巡检计划,自动生成巡检任务排期 - 蓝牙卡定位打卡:通过蓝牙Beacon定位确认巡检人员到达指定位置,防止代签 - 异常记录:巡检发现异常可拍照上传、标记严重等级、自动触发报修工单 ### 保洁管理模块 - 多级管理:项目→区域→楼栋→楼层→区域责任人五级保洁管理架构 - 蓝牙卡定位确认完成:保洁人员到达指定区域蓝牙打卡确认完成,主管可抽查 - 保洁任务看板:日/周/月任务视图,超时未完成自动预警 ### 服务评价模块 - 五分制评分:对报修/巡检/保洁服务进行1-5分打分 - 留言评价:支持文字留言及图片上传 - 评价看板:汇总统计各班组/人员评分,生成绩效报表 ### 系统管理 - 自定义班组:创建/编辑班组,设置班组长,支持多班组协作 - 人员分配逻辑:按区域/技能/排班等维度分配人员到班组,支持一人多班组 - 多租户隔离:SaaS模式下各物业公司数据完全隔离 - 角色权限:超管→租户管理员→项目经理→主管→员工五级角色体系 ### 扩展模块预留 - 医废管理:医废收集、称重、转运、销毁全流程追踪 - 陪检管理:陪检任务分配、签到确认、耗时统计 - 合同管理:合同台账、到期预警、续签审批 - 分段招标管理:招标计划、供应商管理、评标定标 ## 技术栈 - 前端:React 18 + TypeScript + Ant Design Pro + Tailwind CSS - 后端:Node.js + NestJS(TypeScript) - 数据库:PostgreSQL(多租户共享数据库隔离schema方案)+ Redis(缓存/会话) - 消息队列:RabbitMQ(工单流转、异步通知) - 对象存储:腾讯云COS(图片/附件) - 微信集成:微信小程序API + 微信公众号API ## 实现方案 ### 架构策略 采用领域驱动设计(DDD)分层架构,按业务领域拆分微服务模块(NestJS Module级别),预留标准扩展接口。SaaS多租户采用共享数据库、Schema隔离方案,通过TenantContext中间件自动切换。 ### 核心技术决策 1. **多租户方案**:共享数据库+行级隔离(tenant_id字段),兼顾成本与隔离性,通过NestJS Guard统一注入租户上下文 2. **工单流转引擎**:基于状态机模式实现,状态转移规则可配置,支持自定义流转路径 3. **蓝牙定位**:前端小程序对接蓝牙Beacon协议,后端校验打卡位置合法性 4. **扩展模块接口**:定义IModulePlugin接口,新模块通过实现标准接口注册到系统,自动获得菜单、权限、路由注入能力 ### 数据流 ``` 微信扫码/小程序 → API网关(NestJS) → 租户识别中间件 → 业务模块 → PostgreSQL/Redis → 消息队列(异步通知/工单流转) → 腾讯云COS(图片存储) ``` ## 架构设计 ```mermaid graph TB subgraph 前端层 A[管理员后台 React] B[微信小程序] end subgraph API网关层 C[NestJS API Gateway] C1[租户识别中间件] C2[JWT认证守卫] C3[权限守卫] end subgraph 业务模块层 D1[报修模块 RepairModule] D2[巡检模块 InspectionModule] D3[保洁模块 CleaningModule] D4[评价模块 EvaluationModule] D5[组织架构模块 OrgModule] D6[系统管理模块 SystemModule] D7[扩展模块接口 IModulePlugin] end subgraph 基础设施层 E1[PostgreSQL] E2[Redis] E3[RabbitMQ] E4[腾讯云COS] E5[微信API] end A --> C B --> C C --> C1 --> C2 --> C3 C3 --> D1 & D2 & D3 & D4 & D5 & D6 & D7 D1 & D2 & D3 & D4 & D5 & D6 & D7 --> E1 & E2 & E3 & E4 D1 & D2 & D3 --> E5 ``` ### 模块插件化扩展设计 ```mermaid graph LR subgraph 核心框架 M[ModuleRegistry 注册中心] R[路由自动注入] P[权限自动注册] N[菜单自动生成] end subgraph 扩展模块 E1[医废管理 MedicalWasteModule] E2[陪检管理 EscortModule] E3[合同管理 ContractModule] E4[分段招标 BiddingModule] end E1 & E2 & E3 & E4 -->|实现IModulePlugin| M M --> R & P & N ``` ## 目录结构 ``` hospital-facility-management/ ├── packages/ │ ├── server/ # 后端服务 │ │ ├── src/ │ │ │ ├── main.ts # 入口文件,NestJS bootstrap │ │ │ ├── app.module.ts # 根模块,注册所有业务模块 │ │ │ ├── common/ # 公共层 │ │ │ │ ├── guards/ # 租户守卫、JWT守卫、权限守卫 │ │ │ │ ├── interceptors/ # 响应格式化、日志拦截器 │ │ │ │ ├── filters/ # 异常过滤器 │ │ │ │ ├── decorators/ # 自定义装饰器(@Tenant, @Permissions) │ │ │ │ ├── pipes/ # 验证管道 │ │ │ │ └── interfaces/ # IModulePlugin, ITenantContext等公共接口 │ │ │ ├── config/ # 配置管理(数据库、Redis、COS、微信等) │ │ │ ├── modules/ │ │ │ │ ├── auth/ # 认证模块(微信登录、JWT、角色管理) │ │ │ │ ├── tenant/ # 租户管理模块 │ │ │ │ ├── org/ # 组织架构模块(班组、人员分配) │ │ │ │ ├── repair/ # 报修模块 │ │ │ │ │ ├── repair.module.ts │ │ │ │ │ ├── controllers/ │ │ │ │ │ ├── services/ │ │ │ │ │ ├── entities/ │ │ │ │ │ ├── dto/ │ │ │ │ │ └── workflow/ # 工单状态机引擎 │ │ │ │ ├── inspection/ # 巡检模块 │ │ │ │ ├── cleaning/ # 保洁模块 │ │ │ │ ├── evaluation/ # 评价模块 │ │ │ │ └── _plugins/ # 扩展模块目录 │ │ │ │ ├── medical-waste/ # 医废管理(预留) │ │ │ │ ├── escort/ # 陪检管理(预留) │ │ │ │ ├── contract/ # 合同管理(预留) │ │ │ │ └── bidding/ # 分段招标(预留) │ │ │ └── shared/ # 共享服务(通知、文件上传、蓝牙校验) │ │ └── test/ │ └── admin-web/ # 管理员后台前端 │ ├── src/ │ │ ├── layouts/ # 布局组件(SiderMenu + Header + Content) │ │ ├── pages/ │ │ │ ├── dashboard/ # 仪表盘首页 │ │ │ ├── repair/ # 报修管理页面 │ │ │ ├── inspection/ # 巡检管理页面 │ │ │ ├── cleaning/ # 保洁管理页面 │ │ │ ├── evaluation/ # 评价管理页面 │ │ │ ├── org/ # 组织架构管理页面 │ │ │ └── system/ # 系统设置页面 │ │ ├── components/ # 公共组件 │ │ ├── services/ # API调用层 │ │ ├── stores/ # 状态管理(Zustand) │ │ ├── hooks/ # 自定义Hooks │ │ └── utils/ # 工具函数 │ └── public/ └── package.json # Monorepo 根配置 ``` ## 实现要点 - **工单流转引擎**:采用有限状态机(XState理念),状态转移规则存储于数据库,支持租户自定义流转路径 - **蓝牙定位校验**:小程序端扫描Beacon信号强度(RSSI)换算距离,后端校验打卡坐标与任务区域匹配度 - **多租户隔离**:所有业务表携带tenant_id,TypeORM通过全局scope自动注入查询条件,防止越权 - **扩展模块注册**:IModulePlugin接口定义register()、getMenus()、getPermissions()方法,新模块实现后自动注入 - **消息通知**:工单状态变更、巡检超时、保洁预警等事件通过RabbitMQ发布,消费端推送微信模板消息 ## 设计风格 采用现代企业级SaaS管理后台风格,以TDesign组件库为基础,搭配Tailwind CSS自定义样式。整体视觉追求专业、高效、清晰,符合医院物业管理行业特征。 ## 页面规划 ### 1. 仪表盘首页(Dashboard) - **顶部统计卡片区**:今日报修数/进行中工单/待巡检数/保洁完成率,大字号数字+环比趋势箭头 - **工单状态分布图**:环形图展示各状态工单占比 - **最新工单列表**:展示最近10条工单,含状态标签、紧急程度、处理人 - **班组工作量排行**:横向柱状图展示各班组本周完成量 - **评分趋势图**:折线图展示近30天平均评分走势 ### 2. 报修管理页 - **工单列表区**:表格展示,支持状态/日期/区域/班组多维度筛选,含快捷操作按钮 - **工单详情抽屉**:右侧抽屉展示工单完整信息、流转记录时间轴、照片附件、评价信息 - **工单创建弹窗**:表单录入报修信息,支持图片上传预览 ### 3. 巡检管理页 - **巡检计划看板**:日历视图+列表视图切换,按颜色区分正常/异常/未执行 - **巡检记录详情**:展示打卡时间、定位信息、异常记录及关联工单 - **计划创建表单**:区域选择、频次设置、人员分配、蓝牙点位绑定 ### 4. 保洁管理页 - **保洁任务看板**:看板视图(待执行/执行中/已完成),支持拖拽调整 - **区域管理树**:左侧树形结构展示五级保洁区域架构 - **人员排班表**:周视图展示排班情况,支持点击编辑 ### 5. 评价管理页 - **评价汇总统计**:各模块平均评分卡片+星级分布图 - **评价列表**:支持按模块/评分/日期筛选,展示评分星级、评语、关联工单 - **绩效报表**:班组/人员评分排名表,支持导出 ### 6. 组织架构管理页 - **班组管理**:卡片式展示各班组,含人员数量、负责区域、班组长信息 - **人员分配**:左右穿梭框选择人员分配到班组,支持批量操作 - **排班日历**:月视图排班管理 ### 7. 系统设置页 - **租户信息**:公司基本信息、Logo上传 - **角色权限**:角色列表+权限树勾选 - **蓝牙设备管理**:Beacon设备列表、位置绑定、状态监控 - **微信配置**:小程序/公众号参数配置 ## 全局布局 - 左侧固定侧边栏:可折叠,含模块图标+文字,底部展开/收起按钮 - 顶部导航栏:面包屑导航 + 全局搜索 + 通知铃铛 + 用户头像下拉菜单 - 内容区:带内边距的白色背景卡片式内容区 ## Agent Extensions ### Skill - **TAPD** - Purpose: 将概要设计中的各模块需求拆解为TAPD需求和任务,录入项目管理平台 - Expected outcome: 在TAPD中创建完整的需求树(Epic→Story→Task),覆盖报修、巡检、保洁、评价、组织架构、系统管理六大模块,含优先级、描述、关联关系