📋 初始分布
随机生成 150 台设备,分布在上海市区范围内。系统自动按容量上限建区,依次从师傅队列中派出: 初级(Lv.1)× 4 人(上限 20 台),中级(Lv.2)× 3 人(上限 25 台),高级(Lv.3)× 3 人(上限 30 台),共 10 人在岗;备用池中还有 4 名初级师傅待命。
🗺️ 区域划分规则
每块区域以师傅负责的设备质心为中心,用 Voronoi 平分线裁剪保证区域不重叠。 区域边界还使用余弦扩散法平滑,消除锯齿尖角。 默认服务半径 10 km,可在配置面板对每个行政区单独设置。
➕ 新增设备时的分配流程
① 找最近师傅(Voronoi 区主):以各师傅服务质心为基准,距离最近的即为区主。
② 区主未满 → 直接分配给区主,区域形状随质心重新计算自动调整。
③ 区主已满 → 边界换岗:新设备仍留给地理最近的区主;从区主设备里找离邻区中心最近的一台旧设备挪给邻区,腾出名额接收新设备。被挪走的旧设备标记为橙色跨区托管。
④ 无邻区可接 → 从备用池派新师傅:从满员区主的设备里找距其质心最远的一台旧设备,将该设备划给新派师傅,区主腾出名额后接收新来的设备。
🔴 满员与缩区
师傅满员后,其区域不立刻缩小。边界换岗后双方质心重新计算,区域自然调整。 区域内所有设备始终被多边形包住(硬约束,不受 Voronoi 裁剪影响)。
🟠 跨区托管
被换岗到邻区的旧设备,在地图上显示为橙色气泡,其逻辑归属师傅的区域多边形仍会延伸覆盖该设备;右侧状态栏注明跨区台数。
🔔 分配提示
每次新增设备后,页面底部弹出 Toast 通知,说明分配类型(直接 / 边界换岗 / 新派师傅)及台数变化。