45 lines
2.2 KiB
Markdown
45 lines
2.2 KiB
Markdown
# 送货工单 MCP 工具设计
|
||
|
||
## 范围
|
||
|
||
基于旧系统 `DeliveryOrderController` 的 `/delivery/deliveryListByPage` 与 `/delivery/deliveryScan`,
|
||
提供两个只读 MCP 工具:
|
||
|
||
- `delivery.order.list.query`
|
||
- `delivery.order.detail.query`
|
||
|
||
不包含送货签收、取消、导出等写操作。
|
||
|
||
## 数据关系
|
||
|
||
| 数据 | 数据库/表 | 关联键 |
|
||
|---|---|---|
|
||
| 主单 | m2 `delivery_order` | `delivery_order_no` |
|
||
| 配发物品 | m2 `install_distribute_details` | `delivery_order_no` |
|
||
| 流程 | m2 `delivery_order_process` | `delivery_order_no` |
|
||
| 签收附件 | m2 `warehouse_in_out_pic` | `aggregate_id=process.id`, `file_type=3`, `in_out_allocation_type=11` |
|
||
| 关联单据 | m2 `install_to_out_warehouse` | `delivery_order_no` |
|
||
| 物流 | m1 `mall_order_logistics` | `order_no=delivery_order_no` |
|
||
| 发货图片 | m1 `mall_logistics_pic` | `order_no=delivery_order_no` |
|
||
|
||
跨库数据分开查询,不使用跨库 JOIN。详情先在带行权限的主单查询中确定可见记录,再读取关联信息。
|
||
|
||
## 权限
|
||
|
||
列表和详情统一调用 `PermissionService.applyDeliveryOrderRowFilter`:
|
||
|
||
1. 总部身份不增加过滤。
|
||
2. 销售非负责人按自己创建及代管代理名下的物业范围过滤(与老系统 getWorkOrderAuth(type=1)
|
||
的 saleFlag 分支一致,不再额外保留本人流程参与记录)。
|
||
3. 其他代理身份可见申请代理或所属代理在自己和授权代管范围内的工单(**不含直属下级代理**,
|
||
与其他 4 组工单工具及老系统一致);另包含代管物业、本人参与 `delivery_order_process` 的工单。
|
||
4. 详情不存在与无权查看统一返回 `NOT_FOUND_OR_FORBIDDEN`。
|
||
|
||
## 查询与输出约束
|
||
|
||
- 日期严格使用 `yyyy-MM-dd`,结束日期通过次日零点的排他上界实现“含当天”。
|
||
- 列表分页默认 1/20,rows 最大 100,固定 `id DESC`。
|
||
- 详情同时传入 ID 和单号时按 AND 匹配,避免参数指向不同工单。
|
||
- 流程只返回 `schedule_state=2` 的已处理记录,兼容历史 `operation_type=0/5/6`。
|
||
- 附件不返回拼接的 OSS HTTP 地址,只返回 bucket 和 objectKey,由有权限的上层服务决定访问方式。
|