本文档详细描述市场调研小程序的核心业务规则、状态流转逻辑、电子围栏算法和任务分配策略。
涵盖用户角色与权限、任务状态流转、电子围栏逻辑、派单分配策略、表单逻辑、审核逻辑、OCR 识别与数据导出等。
| 角色 | 标识 | 说明 | 主要权限 |
|---|---|---|---|
| 调研员 | researcher | 执行调研任务的一线人员 | 接单、打卡、拍照、填表、提交 |
| 审核员 | reviewer | 审核调研数据的人员 | 查看提交、审核通过/驳回 |
| 派单员 | dispatcher | 创建和分配任务的人员 | 创建任务、管理围栏、派单 |
| 超级管理员 | admin | 系统管理员 | 全部权限 |
| 功能 | 调研员 | 审核员 | 派单员 | 管理员 |
|---|---|---|---|---|
| 查看任务列表 | ✅ 自己的 | ❌ | ✅ 全部 | ✅ 全部 |
| 执行任务 | ✅ | ❌ | ❌ | ❌ |
| 创建任务 | ❌ | ❌ | ✅ | ✅ |
| 审核数据 | ❌ | ✅ | ❌ | ✅ |
| 管理围栏 | ❌ | ❌ | ✅ | ✅ |
| 管理表单 | ❌ | ❌ | ✅ | ✅ |
| 管理用户 | ❌ | ❌ | ❌ | ✅ |
| 数据导出 | ❌ | ✅ 部分 | ✅ | ✅ |
| 状态 | 标识 | 说明 |
|---|---|---|
| 草稿 | draft | 任务创建后未发布 |
| 已发布 | published | 任务已发布,等待分配 |
| 进行中 | in_progress | 有调研员正在执行 |
| 已完成 | completed | 所有分配已完成审核 |
| 已取消 | cancelled | 任务被取消 |
draft ──发布──> published ──分配──> in_progress ──完成──> completed
│ │ │
└───取消───> cancelled <───取消────┘
流转条件:
draft → published:填写完必填信息后可发布published → in_progress:至少有一个调研员接受任务in_progress → completed:所有分配的任务都已审核通过| 状态 | 标识 | 说明 |
|---|---|---|
| 待执行 | pending | 已分配但未开始 |
| 进行中 | in_progress | 调研员已开始执行 |
| 已提交 | submitted | 调研员已提交,待审核 |
| 已通过 | approved | 审核通过 |
| 已驳回 | rejected | 审核驳回,需重新提交 |
pending ──开始──> in_progress ──提交──> submitted ──审核──> approved
│ │ │
└──────暂存──────────┘ │
rejected <─驳回─┘
│
└──修改──> submitted
圆形围栏:center_lat、center_lng、radius(米)。
多边形围栏:polygon 顶点数组 [经度, 纬度]。
使用 Turf.js 进行地理计算:判断点是否在圆内(距离 ≤ 半径)、是否在多边形内(booleanPointInPolygon)、计算点到中心距离。
可配置调研员每日最大任务数;超出上限不再推送新任务;抢单时检查是否超出上限。
| 类型 | 标识 | 说明 |
|---|---|---|
| 单行文本 | text | 普通文本输入 |
| 多行文本 | textarea | 多行文本区域 |
| 数字 | number | 数字输入,支持小数 |
| 单选 | radio | 单选按钮组 |
| 多选 | checkbox | 多选复选框组 |
| 下拉选择 | select | 下拉选择框 |
| 日期/时间 | date / time | 日期/时间选择器 |
| 图片上传 | image | 图片上传组件 |
| 评分 | rating | 星级评分 |
| 矩阵题 | matrix | 矩阵选择题 |
| 级联选择 | cascader | 级联选择器 |
支持 showWhen 配置(field、operator、value),运算符:eq、neq、contains、gt、lt、empty、notEmpty。字段可配置 required、validation(regex、range 等)。
单级审核:提交 → 审核员审核 → 通过/驳回。多级审核可配置。驳回须填写原因;调研员可修改后重新提交。审核驳回原因:photo_quality、photo_missing、data_incomplete、data_invalid、location_mismatch、other。
识别类型映射:价格标签/发票用票据识别,商品包装用商品识别,货架标签用通用识别。识别结果可映射到表单字段自动填充。导出支持 Excel/CSV;审核员仅导出已通过数据,派单员导出自己任务,管理员导出全部。