# 功能规格:骑手配送类型与派单过滤 **功能标识**:`025-rider-delivery-type` **创建日期**:2026-09-02 **状态**:已确认 **输入**:骑手端审核资料原型新增"配送类型"多选项(美食外送、闪送,可同时选择);派单要求按骑手选择的配送类型分配订单。 ## 用户故事 ### 用户故事 1:骑手在审核资料中选择配送类型(P1) 骑手在提交审核资料时选择自己承接的配送类型:美食外送、闪送,可同时勾选两项。 **验收场景**: 1. **假如** 骑手提交资料时勾选一项或两项配送类型,**当** 资料保存,**那么** 系统保存骑手选择的配送类型,平台审核页可见。 2. **假如** 骑手提交了 `FOOD`、`FLASH` 之外的配送类型值,**当** 资料保存,**那么** 系统拒绝并返回国际化业务错误。 3. **假如** 骑手未选择配送类型(历史数据或未提交),**当** 其查询或抢单,**那么** 系统视为同时兼容美食外送与闪送,行为与现有骑手一致。 ### 用户故事 2:派单按配送类型分配订单(P1) 骑手查询外卖或闪送的新任务列表、抢单时,系统按骑手选择的配送类型过滤。 **验收场景**: 1. **假如** 骑手仅选择美食外送,**当** 其查询闪送新任务或抢单,**那么** 系统拒绝并返回国际化业务错误;查询外卖新任务与接单不受影响。 2. **假如** 骑手仅选择闪送,**当** 其查询外卖新任务或接单,**那么** 系统拒绝并返回国际化业务错误;闪送列表与抢单不受影响。 3. **假如** 骑手同时选择两项,**当** 其分别查询外卖与闪送新任务,**那么** 两类任务均可见、均可抢。 4. **假如** 骑手的配送类型后续被调整,**当** 其查询自己已接订单的页签(待取件、配送中等),**那么** 本人历史订单仍可见,不受新配置影响。 ## 需求 - **FR-001**:`info_user` 新增 `delivery_type VARCHAR(64) NULL`,取值为 `FOOD`(美食外送)、`FLASH`(闪送)以逗号分隔的组合;`NULL` 或空串视为同时兼容两类。 - **FR-002**:App 资料提交接口 `/infouser/user/setuser` 接收并保存 `deliveryType`;值非空时必须能解析为至少一个合法类型,否则返回国际化错误。 - **FR-003**:平台新增/修改用户接口 `POST/PUT /infouser/user` 对 `deliveryType` 执行相同校验。 - **FR-004**:`getuserinfo` 等现有用户信息接口随实体返回 `deliveryType`。 - **FR-005**:外卖骑手新任务列表 `newTask` 页签与接单接口要求骑手兼容 `FOOD`;闪送新任务列表、待抢详情与抢单接口要求骑手兼容 `FLASH`;不满足时返回国际化业务错误。 - **FR-006**:骑手本人已接订单的列表页签与履约操作不做配送类型限制。 - **FR-007**:数据库变更只记录在 `updatesql/sql.md`;存量骑手回填为 `FOOD,FLASH`,保持现有行为不变。 ## 非目标 - 不修改骑手 App 前端(表单由 App 团队按原型实现)。 - 不实现自动派单、按城市派单或骑手在线状态过滤。 - 不限制已完成历史订单的查询。