8.7 KiB
8.7 KiB
主管任务管理功能 - 设计文档
1. 功能描述
本功能模块是系统管理(NEPM)端的核心,赋予主管监控所有待处理反馈,并通过手动或智能两种模式,将勘查任务高效、合理地分配给一线网格员的能力。智能分配是本模块的亮点,旨在优化资源配置,提升响应效率。
2. 涉及角色
- 主要使用者:
业务主管 (SUPERVISOR) - 被分配者:
网格员 (GRID_WORKER)
3. 业务规则
3.1 任务池规则
- 所有通过AI审核,状态为
PENDING_ASSIGNMENT的反馈,都会进入任务分配池,展示在主管的工作台。 - 任务池中的任务应支持多维度筛选(如
区域、污染类型、严重等级)和排序。
3.2 手动分配规则
- 主管可以勾选一个或多个任务。
- 然后,主管可以从其管辖范围内的网格员列表中,选择一个或多个来执行任务。
- 分配后,系统会为每一个"任务-网格员"配对创建一条
assignment_record记录。
3.3 智能分配规则
- 触发: 主管选择一个任务,点击"智能分配"按钮。
- 地图模型: 分配算法基于简化的二维网格地图。
- 第一步:候选集生成:
- 系统获取任务所在的网格坐标 (Tx, Ty)。
- 以 (Tx, Ty) 为中心,搜索半径10个网格单位内的所有网格。
- 从中筛选出状态为
ACTIVE且有对应skills的网格员,形成候选集。
- 第二步:最优人选计算:
- 对候选集中的每个网格员 (Gx, Gy),使用A*算法计算其到目标网格的最短路径距离 (D),算法需能识别并绕开
is_obstacle为true的障碍网格。 - ETR (预计任务响应时间) 公式:
ETR = D + (该网格员当前待处理的任务量)。 - ETR值最小的网格员即为最优人选。
- 对候选集中的每个网格员 (Gx, Gy),使用A*算法计算其到目标网格的最短路径距离 (D),算法需能识别并绕开
- 第三步:推荐与确认:
- 系统在界面上高亮推荐最优人选。
- 主管可以接受推荐,一键分配;也可以忽略推荐,手动选择其他候选人。
- 算法细节记录: 每次智能分配成功后,应将计算出的ETR、候选人列表等关键信息,以JSON格式快照存入
assignment_record表的algorithmDetails字段,便于审计和追溯。
3.4 任务创建与审核规则
- 创建任务: 主管可不依赖公众反馈,直接在系统中创建新任务,指派给特定网格员。创建的任务直接进入
ASSIGNED状态。 - 审核任务: 主管负责审核网格员提交的状态为
SUBMITTED的任务。- 批准: 任务状态变为
COMPLETED。 - 拒绝: 任务状态退回
ASSIGNED,并附上拒绝理由,网格员需重新处理。
- 批准: 任务状态变为
3.5 ETR算法优化
为了使智能分配更精准,ETR(预计任务响应时间)的计算公式将引入更多权重因子。
- 基础公式:
ETR = (A*路径距离) + (当前任务数) - 优化后公式:
Score = (Wd * D) + (Wn * N) - (Ws * S) + (Wp * P)D: A*算法计算出的路径距离。N: 网格员当前待办任务数量。S: 技能匹配度。如果网格员的skills与任务的pollutionType匹配,则S=1,否则S=0。P: 任务优先级。高优先级任务P=10,中=5,低=0。用于打破僵局。Wd, Wn, Ws, Wp: 分别是距离、任务数、技能、优先级的权重系数,可在系统配置中调整。- 最终选择Score最小的网格员。
3.6 边界情况处理
- 无可用网格员: 在指定的搜索半径内,若没有符合条件的
ACTIVE状态的网格员,系统应提示主管"当前区域无可用网格员,请扩大搜索范围或手动从全局列表选择"。 - 智能分配失败: 若因地图数据不完整等原因导致A*算法无法找到路径,系统应提示"路径计算失败,请手动分配"。
4. 功能实现流程
4.1 任务分配流程
graph TD
A[登录NEPM端] --> B[进入任务分配页面];
B --> C[查看"待处理"反馈列表];
C --> D{选择一个反馈};
D --> E{选择分配模式};
E -- 手动分配 --> F[手动勾选网格员];
E -- 智能分配 --> G[系统执行A*算法<br>计算ETR并推荐人选];
G --> H{主管是否<br>接受推荐?};
H -- 是 --> I[确认分配给<br>推荐人选];
H -- 否 --> F;
F --> J[确认分配];
I --> J;
J --> K[创建AssignmentRecord];
K --> L[更新Feedback状态<br>为ASSIGNED];
L --> M[通过NEPG端<br>通知网格员];
style G fill:#E3F2FD
style L fill:#C8E6C9
4.2 任务审核流程
graph TD
A[主管进入"待审核"任务列表] --> B{选择一个任务};
B --> C[查看网格员提交的报告和图片];
C --> D{审核是否通过?};
D -- 是 --> E[更新任务状态为 COMPLETED];
D -- 否 --> F[填写拒绝理由];
F --> G[更新任务状态为 ASSIGNED];
G --> H[通知网格员重新处理];
style E fill:#C8E6C9;
style G fill:#FFCDD2;
5. API 接口设计
5.1 查询待处理反馈列表
- URL:
GET /api/management/tasks/pending - 权限:
SUPERVISOR - 查询参数:
region,pollutionType,severity,page,size - 成功响应 (
200 OK): 返回分页的反馈列表。
5.2 查询可用网格员列表
- URL:
GET /api/management/grid-workers/available - 权限:
SUPERVISOR - 查询参数:
region - 成功响应 (
200 OK): 返回指定区域内所有状态为ACTIVE的网格员列表,包含其当前位置和任务负载。
5.3 手动分配任务
- URL:
POST /api/management/tasks/assign/manual - 权限:
SUPERVISOR - 请求体:
{ "feedbackId": 123, "gridWorkerIds": [10, 15], "remarks": "请尽快处理" } - 成功响应 (
200 OK):{ "message": "任务分配成功" }
5.4 智能分配任务
- URL:
POST /api/management/tasks/assign/intelligent - 权限:
SUPERVISOR - 请求体:
{"feedbackId": 123} - 成功响应 (
200 OK): 返回包含最优人选和候选集信息的JSON,供前端渲染。{ "recommended": { "userId": 10, "name": "王伟", "score": 15.8, ... }, "candidates": [ ... ] }
5.5 审核任务
- URL:
POST /api/management/tasks/{taskId}/review - 权限:
SUPERVISOR - 请求体:
{ "approved": false, "comments": "图片不清晰,请重新拍摄现场照片。" } - 成功响应 (
200 OK):{ "message": "审核操作已完成" }
6. 界面设计要求
6.1 任务分配主页面
- 布局: 采用左右分栏布局。
- 左侧: 待处理反馈列表。以紧凑的列表或表格形式展示,包含
标题、区域、严重等级。提供筛选和搜索功能。 - 右侧: 网格员地图视图。实时展示所选反馈位置,以及管辖区域内所有网格员的分布。每个网格员的图标应能通过大小或颜色深浅,直观反映其当前的负载(待处理任务数)。
- 左侧: 待处理反馈列表。以紧凑的列表或表格形式展示,包含
- 交互:
- 点击左侧列表中的一个反馈项,右侧地图应立即定位到该反馈所在的网格,并高亮显示。
- 同时,地图上应以不同颜色或图标区分网格员的实时状态(如
空闲-绿色,繁忙-橙色,休假-灰色)。
6.2 分配操作界面
- 触发: 主管在左侧列表中选中一个反馈后,列表项下方出现"手动分配"和"智能分配"两个按钮。
- 手动分配:
- 点击后,弹出一个包含所有可选网格员列表的对话框。
- 列表支持搜索和多选。
- 主管勾选后点击确认即可分配。
- 智能分配:
- 点击后,右侧地图视图进入"推荐模式"。
- 系统计算后,在地图上用醒目的高亮效果(如闪烁的星星或光圈)标记出最优人选。
- 同时,在地图下方或侧边栏显示一个信息卡片,包含推荐人选的姓名、当前任务量、技能匹配度、距离和最终的推荐分数,并提供一个"一键分配"按钮。
- 其他候选人以普通方式显示,主管仍可点击查看其分数详情并选择。
6.3 任务创建页面
- 提供一个独立的表单页面,允许主管填写
标题、描述、污染类型、严重等级、地理位置等所有任务相关信息。 - 表单下方直接集成一个网格员选择器,方便主管创建后立即指派。
6.4 任务审核页面
- 这是一个任务详情页面,顶部清晰展示任务基础信息。
- 页面核心区域展示网格员提交的报告,包括文字说明和图片(图片支持点击放大预览)。
- 页面底部提供"批准"和"拒绝"两个操作按钮。点击"拒绝"时,必须弹出一个对话框,要求主管填写拒绝理由。