Browse Source

补充闪送平台管理前端规格

明确价格配置、订单管理、详情介入、权限控制和四语言国际化要求。同步更新闪送设计记录与规格检查清单。
qmj 17 hours ago
parent
commit
2600142021

+ 3 - 0
specs/024-flash-delivery/checklists/requirements.md

@@ -25,6 +25,8 @@
 - [x] 地址簿共用与所有权校验规则已明确
 - [x] 地址簿共用与所有权校验规则已明确
 - [x] 待抢订单隐私字段展示边界已明确
 - [x] 待抢订单隐私字段展示边界已明确
 - [x] 平台配置、订单查询和介入能力已明确
 - [x] 平台配置、订单查询和介入能力已明确
+- [x] 平台管理前端菜单、价格配置、订单列表、详情和介入交互已明确
+- [x] 平台前端权限、四语言国际化和失败态刷新规则已明确
 - [x] 支付、物品信息和自动派单等非目标已明确
 - [x] 支付、物品信息和自动派单等非目标已明确
 
 
 ## 可测试性
 ## 可测试性
@@ -42,6 +44,7 @@
 - [x] Controller token、DTO 和参数注解规则已记录
 - [x] Controller token、DTO 和参数注解规则已记录
 - [x] 数据库迁移只写入 `updatesql/sql.md`
 - [x] 数据库迁移只写入 `updatesql/sql.md`
 - [x] 国际化错误消息和敏感信息保护要求已记录
 - [x] 国际化错误消息和敏感信息保护要求已记录
+- [x] 平台前端沿用 Vue 2、Element UI、动态菜单和若依权限体系
 
 
 ## 结论
 ## 结论
 
 

+ 13 - 1
specs/024-flash-delivery/design.md

@@ -69,6 +69,15 @@ ruoyi-system
 - `POST /system/flashDelivery/admin/orders/{id}/cancel`
 - `POST /system/flashDelivery/admin/orders/{id}/cancel`
 - `POST /system/flashDelivery/admin/orders/{id}/complete`
 - `POST /system/flashDelivery/admin/orders/{id}/complete`
 
 
+平台管理前端沿用 `foodie-admin-vue` 的 Vue 2、Element UI、动态菜单和权限指令,不额外引入 UI 或状态管理依赖:
+
+- “闪送管理”作为父菜单,“价格配置”和“闪送订单”作为两个子页面。
+- `src/api/flashDelivery/index.js` 集中封装六个平台接口,页面不直接拼接请求。
+- 价格配置页以三种服务配置表为主体,编辑弹窗承载数值校验;保存后以服务端响应刷新当前行。
+- 订单页以服务端分页表格为主体,详情弹窗分区展示概况、地址、费用、凭证和日志;取消原因使用独立输入弹窗,完成操作使用二次确认。
+- 操作按钮同时使用状态条件和 `v-hasPermi` 控制可见性,后端权限与状态机仍是最终安全边界。
+- 所有新增文本集中在四个前端语言文件的 `flashDelivery` 对象中,key 集合保持一致。
+
 ### 3.4 共享地址簿
 ### 3.4 共享地址簿
 
 
 - `GET /system/address/getaddress`
 - `GET /system/address/getaddress`
@@ -160,7 +169,10 @@ COMPLETED
 - 24 小时自动完成与并发幂等测试。
 - 24 小时自动完成与并发幂等测试。
 - 平台权限和配置校验测试。
 - 平台权限和配置校验测试。
 - MyBatis XML 字段、条件更新与索引契约测试。
 - MyBatis XML 字段、条件更新与索引契约测试。
+- 平台前端 API 路径、方法、参数和权限字符串契约测试。
+- 平台前端价格校验、状态操作可见性和四语言 key 一致性测试。
+- 平台前端 ESLint、生产构建和常用后台宽度的页面检查。
 
 
 ## 9. 明确延期内容
 ## 9. 明确延期内容
 
 
-支付、退款、分账、骑手收入、代购、垫付、商品金额、精确重量、件数、自动派单、动态附近骑手数和预计接单时间均不在本期范围。
+支付、退款、分账、骑手收入、代购、垫付、商品金额、精确重量、件数、自动派单、动态附近骑手数、预计接单时间以及用户端、骑手端和商家端页面均不在本期范围。

+ 35 - 1
specs/024-flash-delivery/spec.md

@@ -104,6 +104,25 @@
 4. **假如** 订单已取件但发生异常,**当** 有权限的管理员取消订单,**那么** 系统允许取消并记录管理员、原因和时间。
 4. **假如** 订单已取件但发生异常,**当** 有权限的管理员取消订单,**那么** 系统允许取消并记录管理员、原因和时间。
 5. **假如** 订单已送达但用户无法确认,**当** 有权限的管理员确认完成,**那么** 系统完成订单并记录平台操作日志。
 5. **假如** 订单已送达但用户无法确认,**当** 有权限的管理员确认完成,**那么** 系统完成订单并记录平台操作日志。
 
 
+---
+
+### 用户故事 6:平台在管理后台配置价格并处理闪送订单(优先级:P2)
+
+平台管理员从“闪送管理”菜单进入价格配置或订单管理页面,无需直接调用接口即可维护三种服务价格、筛选订单、查看完整履约资料并执行受权限控制的平台介入。
+
+**优先级原因**:后端接口已具备,但缺少平台可操作入口会导致计价只能通过接口工具维护,异常订单也无法进入日常运营流程。
+
+**独立测试**:以拥有完整闪送权限的管理员登录后台,分别完成三种服务价格读取与修改、订单组合筛选、详情查看、异常取消和已送达订单完成;再以缺少对应权限的账号验证菜单与操作按钮不可用。
+
+**验收场景**:
+
+1. **假如** 管理员进入价格配置页面,**当** 页面加载,**那么** 系统展示帮送、帮取和加急送的当前价格、启用状态及配置版本。
+2. **假如** 管理员提交合法价格,**当** 保存成功,**那么** 页面显示服务端返回的新配置和版本;非法值或并发冲突必须保留编辑内容并展示错误。
+3. **假如** 管理员进入订单页面,**当** 按状态、服务类型、订单号、用户 ID 或骑手 ID 查询,**那么** 表格按服务端分页结果展示并可重置条件。
+4. **假如** 管理员查看订单详情,**当** 详情加载,**那么** 页面分区展示订单概况、取送地址、费用明细、预约与 PIN、骑手、图片凭证和状态日志。
+5. **假如** 订单处于非终态,**当** 具有取消权限的管理员填写原因并二次确认,**那么** 页面调用平台取消接口并刷新列表与详情。
+6. **假如** 订单处于已送达状态,**当** 具有完成权限的管理员二次确认,**那么** 页面调用平台完成接口并刷新订单状态。
+
 ## 边界情况
 ## 边界情况
 
 
 - 取件地址和收件地址相同或坐标相同,不允许创建订单。
 - 取件地址和收件地址相同或坐标相同,不允许创建订单。
@@ -117,6 +136,9 @@
 - 骑手第一版不能自行放弃已抢订单,需要平台介入处理。
 - 骑手第一版不能自行放弃已抢订单,需要平台介入处理。
 - 已完成和已取消为终态,不允许再次变更。
 - 已完成和已取消为终态,不允许再次变更。
 - 自动完成任务与用户确认、平台完成并发时,只允许一个状态变更成功且不得重复写入完成副作用。
 - 自动完成任务与用户确认、平台完成并发时,只允许一个状态变更成功且不得重复写入完成副作用。
+- 价格接口暂时无数据时,价格页面必须显示空状态,不得使用前端默认价格冒充服务端配置。
+- 订单详情加载失败时不得保留上一笔订单资料;取消或完成失败时不得提前修改本地状态。
+- 图片凭证为空时显示明确空状态;图片加载失败不得阻塞其他订单资料展示。
 
 
 ## 需求
 ## 需求
 
 
@@ -170,6 +192,15 @@
 - **FR-046**:用户和骑手详情必须使用角色专用响应视图,不得直接序列化订单实体、客户端幂等号、内部用户 ID 或计价审计字段。
 - **FR-046**:用户和骑手详情必须使用角色专用响应视图,不得直接序列化订单实体、客户端幂等号、内部用户 ID 或计价审计字段。
 - **FR-047**:骑手接单后,用户可读取骑手昵称、头像和评分等公开摘要;实时位置只在配送进行状态向订单用户返回。
 - **FR-047**:骑手接单后,用户可读取骑手昵称、头像和评分等公开摘要;实时位置只在配送进行状态向订单用户返回。
 - **FR-048**:路线距离不得超过 40 公里;超过限制时报价和创建均拒绝。
 - **FR-048**:路线距离不得超过 40 公里;超过限制时报价和创建均拒绝。
+- **FR-049**:平台管理前端必须提供“闪送管理”父菜单,并提供“价格配置”和“闪送订单”两个子页面。
+- **FR-050**:平台前端必须通过现有六个 `flash:*` 权限分别控制页面访问、价格修改、订单查看、取消和完成操作,不得仅依赖按钮隐藏代替后端鉴权。
+- **FR-051**:价格配置页面必须展示并可编辑 `startPrice`、`minimumPrice`、`startDistanceMeters`、`perKmPrice`、`perMinutePrice`、`peakMultiplier` 和 `enabled`,并展示只读配置版本与更新时间。
+- **FR-052**:价格表单必须在提交前校验起步价、最低价、起步距离和公里价为正数,每分钟价格非负,尖峰倍率不小于 1;保存成功后必须使用服务端响应覆盖本地数据。
+- **FR-053**:订单页面必须按服务端分页,并支持状态、服务类型、订单号、用户 ID 和骑手 ID 组合筛选及一键重置。
+- **FR-054**:平台订单详情必须展示订单概况、取送地址、路线与费用、预约与 PIN、骑手 ID 与履约时间、三类图片凭证及状态日志;不得要求管理员从列表字段拼接详情。
+- **FR-055**:平台取消必须要求非空原因和二次确认;平台完成必须二次确认。操作成功后刷新服务端数据,操作失败时保留当前页面并显示后端错误。
+- **FR-056**:平台前端新增的全部用户可见文本必须通过 Vue i18n 提供简体中文、繁体中文、英文和越南文,不得硬编码单一语言文本。
+- **FR-057**:平台前端必须沿用现有 Vue 2、Element UI、若依请求封装、动态菜单和 `v-hasPermi` 体系,不新增重复的状态管理或 UI 框架。
 
 
 ### 关键实体
 ### 关键实体
 
 
@@ -190,6 +221,9 @@
 - **SC-007**:送达超过 24 小时的订单能够自动完成,且并发确认不会产生重复状态日志或重复副作用。
 - **SC-007**:送达超过 24 小时的订单能够自动完成,且并发确认不会产生重复状态日志或重复副作用。
 - **SC-008**:修改计价配置后,新订单使用新版本,历史订单保存的价格与配置快照保持不变。
 - **SC-008**:修改计价配置后,新订单使用新版本,历史订单保存的价格与配置快照保持不变。
 - **SC-009**:所有新增用户可见业务错误均能通过项目支持的语言资源解析,不出现硬编码单一语言结果。
 - **SC-009**:所有新增用户可见业务错误均能通过项目支持的语言资源解析,不出现硬编码单一语言结果。
+- **SC-010**:拥有对应权限的管理员能够只通过平台页面完成三种服务价格维护和订单查询、详情、取消及完成操作,核心流程无需 Postman 或数据库操作。
+- **SC-011**:价格和订单页面的接口路径、请求方法、查询参数及权限字符串契约测试全部通过,四个前端语言文件的 `flashDelivery` key 集合完全一致。
+- **SC-012**:平台前端生产构建通过,新增页面在 1280px 及以上后台常用宽度无横向页面溢出,表格窄屏时仅在表格区域滚动。
 
 
 ## 假设
 ## 假设
 
 
@@ -206,4 +240,4 @@
 - 不实现代购、垫付款、商品金额、精确重量、件数或禁寄品电子确认;禁运品、货值和尺寸限制由前端展示规则说明,后端只校验本期明确的重量档和最大路线距离。
 - 不实现代购、垫付款、商品金额、精确重量、件数或禁寄品电子确认;禁运品、货值和尺寸限制由前端展示规则说明,后端只校验本期明确的重量档和最大路线距离。
 - 不实现自动派单、抢单推送筛选、骑手在线状态计算或接单时间预测。
 - 不实现自动派单、抢单推送筛选、骑手在线状态计算或接单时间预测。
 - 不修改餐饮订单 `pos_order` 或打车订单 `taxi_order` 的业务语义。
 - 不修改餐饮订单 `pos_order` 或打车订单 `taxi_order` 的业务语义。
-- 不在本功能中实现前端页面;本轮交付后端 API、数据库 SQL、自动化测试和 spec-kit 文档
+- 不在本功能中实现用户端、骑手端或商家端页面;本轮前端增量仅实现平台管理端