4.5 KiB
4.5 KiB
Context
导出任务能力已经具备统一 API、通用列表页面、详情页面和创建弹窗。现有列表页面通过 scene 搜索项区分设备、IOT 卡和订单任务,但新的产品方案要求用三个固定场景页面替代该筛选方式,并让三个页面按钮权限相互独立。
Goals / Non-Goals
- Goals: 在导出管理下提供“导出设备”“导出IOT卡”“导出订单”三个页面。
- Goals: 三个页面固定传入各自
scene,去掉页面中的“导出场景”筛选。 - Goals: 三个页面及其按钮/操作使用场景级独立权限编码。
- Goals: 尽量复用现有导出任务列表和详情实现,避免复制三份完整页面逻辑。
- Non-Goals: 不新增导出任务后端 API。
- Non-Goals: 不改变创建导出任务的
scene值和query快照语义。 - Non-Goals: 不调整导出任务状态流转、文件生成或下载地址生成逻辑。
Decisions
-
Decision: 使用一个可复用导出任务列表实现,通过路由配置或组件 props 注入固定场景、页面标题和权限映射。
-
Rationale: 三个页面除固定
scene和权限外,分页、状态筛选、时间筛选、下载、取消逻辑一致,复用可以减少重复代码和后续维护成本。 -
Decision: 页面查询参数由页面固定注入
scene,不从搜索表单读取“导出场景”。 -
Rationale: 页面已经按场景拆分,继续暴露场景筛选会造成入口语义冲突,也可能让用户在“导出设备”页面查到 IOT 卡或订单任务。
-
Decision: 权限编码按场景和操作拆分,默认建议如下。
-
Rationale: 用户明确要求三个界面的按钮权限编码不同;列表访问、详情、下载、取消均需要避免跨场景复用。
| 场景 | 页面访问 | 详情 | 下载 | 取消 |
|---|---|---|---|---|
| 导出设备 | export_task:device:list |
export_task:device:detail |
export_task:device:download |
export_task:device:cancel |
| 导出IOT卡 | export_task:iot_card:list |
export_task:iot_card:detail |
export_task:iot_card:download |
export_task:iot_card:cancel |
| 导出订单 | export_task:order:list |
export_task:order:detail |
export_task:order:download |
export_task:order:cancel |
- Decision: 业务列表创建导出任务按钮继续使用来源业务权限,默认建议如下。
- Rationale: 创建导出任务属于来源业务列表能力,不应因为拥有某个导出任务管理页面权限就获得业务列表导出入口。
| 入口 | 创建导出任务权限 | scene |
|---|---|---|
| 设备管理 | devices:export |
device |
| IOT 卡管理 | iot_card:export |
iot_card |
| 订单列表 | orders:export |
order |
- Decision: 详情页可继续复用同一组件,但必须根据任务场景或来源页面使用对应场景的详情、下载、取消权限。
- Rationale: 详情页面本身也包含下载和取消按钮,若继续使用通用权限会绕过三个列表页面的按钮隔离要求。
Risks / Trade-offs
-
Risk: 后端或权限配置已经发放了通用
export_task:*权限,切换为场景级权限后用户可能暂时看不到页面或按钮。 -
Mitigation: 实施时同步更新权限种子/菜单配置,并在上线前完成角色权限迁移或重新授权。
-
Risk: 订单导出场景提案正在独立推进,可能继续给旧“导出列表”增加订单筛选。
-
Mitigation: 实施本变更前先合并范围,保留
scene=order和订单创建入口,移除旧列表中的订单场景筛选实现。 -
Risk: 详情页直接通过 URL 打开时缺少来源页面上下文。
-
Mitigation: 详情页读取任务详情后按返回的
scene计算对应权限,缺少该场景详情权限时展示无权限提示并阻止后续按钮操作。
Migration Plan
- 增加三条导出任务列表路由和菜单项,删除或隐藏旧通用“导出列表”入口。
- 将导出任务列表改造成固定场景列表,移除“导出场景”搜索项和冗余场景列。
- 为三页分别注入固定
scene、标题和场景级权限映射。 - 调整导出任务详情页和行操作的权限判断,改用任务场景对应权限。
- 同步订单导出入口,确保订单导出任务进入“导出订单”页面查看。
- 更新后端/菜单权限配置并完成角色授权迁移。
Open Questions
- 最终权限编码是否采用本设计建议,还是需要对齐后端已有权限命名规范。
- 旧通用导出列表路由是否直接移除,还是短期隐藏并重定向到用户有权限的第一个场景页面。