Files
qipai/docs/api-changelog/2026-06-25-M08-B-cleaning.md
T
2026-06-30 10:24:39 +08:00

174 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-06-25 M08-B 保洁端 API
## App API
- `GET /app-api/cleaning/tasks/hall`
- 登录:必需。
- 权限:`cleaning.task.read``tenant.manage``PLATFORM_ADMIN`
- 查询:`page``pageSize``status`;默认查询 `WAITING`
- 说明:按保洁员门店范围返回任务大厅。
- `GET /app-api/cleaning/tasks/mine`
- 登录:必需。
- 权限:`cleaning.task.read``tenant.manage``PLATFORM_ADMIN`
- 查询:`page``pageSize``status`
- 说明:返回当前保洁员已领取任务。
- `POST /app-api/cleaning/tasks/:taskId/claim`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- 说明:仅 `WAITING` 且未被领取的任务可接单。
- `POST /app-api/cleaning/tasks/:taskId/start`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- 说明:当前保洁员已领取的 `CLAIMED` 任务可开始。
- `POST /app-api/cleaning/tasks/:taskId/photos`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- Content-Type`application/octet-stream`
- Headers`x-file-name``x-image-content-type`
- 说明:当前保洁员本人 `STARTED``REJECTED` 任务可上传验收照片;服务端压缩存储后返回 `publicUrl`
- `POST /app-api/cleaning/tasks/:taskId/submit`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- Body`photoUrls: string[]``note?: string`
- 说明:当前保洁员本人 `STARTED``REJECTED` 任务可提交验收;`photoUrls` 至少 1 张,最多 9 张。
- `POST /app-api/cleaning/tasks/:taskId/rework`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- 说明:当前保洁员本人 `REJECTED` 任务可重新进入 `STARTED` 补做状态。
- `GET /app-api/cleaning/stats`
- 登录:必需。
- 权限:`cleaning.task.read``tenant.manage``PLATFORM_ADMIN`
- 说明:返回当前保洁员任务状态计数和待结算金额。
## Admin API
- `GET /admin-api/cleaning/tasks`
- 登录:必需。
- 权限:`cleaning.task.read``tenant.manage``PLATFORM_ADMIN`
- 查询:`page``pageSize``status`
- 说明:按管理员门店范围查询保洁任务。
- `POST /admin-api/cleaning/tasks/:taskId/assign`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- Body`cleanerUserId: string``note?: string`
- 说明:仅可将任务指派给具备 `CLEANER` 角色且拥有该门店范围的有效用户。
- `POST /admin-api/cleaning/tasks/:taskId/complete`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- Body`note?: string`
- 说明:将 `SUBMITTED` 任务验收为 `COMPLETED`,并进入待结算候选。
- `POST /admin-api/cleaning/tasks/:taskId/reject`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- Body`reason: string`
- 说明:将 `SUBMITTED` 任务驳回为 `REJECTED`,保洁端可查看原因并补做。
- `GET /admin-api/cleaning/settlement-candidates`
- 登录:必需。
- 权限:`cleaning.task.read``tenant.manage``PLATFORM_ADMIN`
- 查询:`page``pageSize`
- 说明:返回 `COMPLETED``settled_at IS NULL` 的待结算保洁任务。
- `POST /admin-api/cleaning/reclaim-timeouts`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- Body`olderThanMinutes?: number``limit?: number`
- 说明:将超时停留在 `CLAIMED``STARTED` 的任务回收到 `WAITING`,并清空保洁员领取状态。
- `GET /admin-api/cleaning/settlements`
- 登录:必需。
- 权限:`cleaning.task.read``tenant.manage``PLATFORM_ADMIN`
- 查询:`page``pageSize``status`
- 说明:查询保洁结算单,状态支持 `DRAFT``CONFIRMED``PAID``CANCELLED`
- `POST /admin-api/cleaning/settlements`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- Body`cleanerUserId: string``storeId?: string``note?: string`
- 说明:将指定保洁员已完成未结算任务生成 `DRAFT` 结算单,任务同步转为 `SETTLED` 并写入结算明细。
- `POST /admin-api/cleaning/settlements/:settlementId/confirm`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- Body`note?: string`
- 说明:将 `DRAFT` 结算单确认成 `CONFIRMED`,进入发放待处理状态。
- `POST /admin-api/cleaning/settlements/:settlementId/paid`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- Body`payoutChannel: string``payoutReference: string``note?: string`
- 说明:将 `CONFIRMED` 结算单标记为 `PAID`,记录发放人、发放时间、渠道和外部流水号,清空旧失败原因。
- `POST /admin-api/cleaning/settlements/:settlementId/payout-failure`
- 登录:必需。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- Body`error: string``payoutChannel?: string``payoutReference?: string``note?: string`
- 说明:记录 `CONFIRMED` 结算单发放失败原因,保留可重试状态。
## 2026-06-26 多保洁员协作增量
- `GET /admin-api/cleaning/tasks/:taskId/members`
- 登录:必须。
- 权限:`cleaning.task.read``tenant.manage``PLATFORM_ADMIN`
- 说明:返回任务有效保洁成员,包含 `LEAD` 负责人和 `ASSIST` 协作者、成员分账金额与结算时间。
- `POST /admin-api/cleaning/tasks/:taskId/members`
- 登录:必须。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- Body`cleanerUserId: string``rewardCents: number``note?: string`
- 说明:添加或更新协作者分账金额;协作者必须为有效 `CLEANER` 且拥有任务门店范围;协作者金额总和不能超过任务奖励。
- `POST /admin-api/cleaning/tasks/:taskId/members/:cleanerUserId/remove`
- 登录:必须。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`
- Body`note?: string`
- 说明:移除未结算协作者并把剩余奖励回算到负责人;负责人不可通过该接口移除。
- `POST /admin-api/cleaning/settlements`
- 追加说明:多人协作任务按 `qipai_cleaning_task_members.reward_cents` 分别为每个保洁员生成结算明细;所有有效成员均完成结算后任务才整体转为 `SETTLED`
## 2026-06-27 微信转账适配增量
- `POST /admin-api/cleaning/settlements/:settlementId/wechat-transfer`
- 登录:必须。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`;服务层继续校验 `cleaning.settlement.write`
- Body`mode?: "API" | "MOCK"``note?: string`
- 说明:对 `CONFIRMED` 保洁结算单发起微信商家转账。`API` 模式会校验门店/全局微信收款账户、商户凭据、保洁员微信 openid 和转账场景配置;`MOCK` 仅非生产环境可用。
- 返回:成功转账直接返回 `PAID` 结算单;微信返回 `FAIL` 时记录失败原因;微信返回待确认或处理中状态时保留 `CONFIRMED`,并返回 `payoutState``payoutReference``payoutPackageInfo`
## 2026-06-29 微信转账回调与轮询增量
- `POST /admin-api/cleaning/settlements/:settlementId/wechat-transfer/sync`
- 登录:必须。
- 权限:`cleaning.task.write``tenant.manage``PLATFORM_ADMIN`;服务层继续校验 `cleaning.settlement.write`
- Body`note?: string`
- 说明:按结算单商户转账单号主动查询微信商家转账状态;`SUCCESS` 自动标记 `PAID``FAIL` 记录失败原因,其它中间态保留 `CONFIRMED` 并更新 `payout_state`
- `POST /app-api/cleaning/wechat-transfer/notify`
- 登录:不需要,依赖微信支付通知签名验证。
- Headers`wechatpay-timestamp``wechatpay-nonce``wechatpay-serial``wechatpay-signature`
- Body:微信支付 v3 加密通知原文。
- 说明:服务端用原始 body 验签解密,校验商户号后按 `out_bill_no``transfer_bill_no` 定位保洁结算单,并写回成功、失败或中间态。
## 2026-06-30 后台协作与结算详情增量
- `GET /admin-api/cleaning/settlements/:settlementId`
- 登录:必须。
- 权限:`cleaning.settlement.read``tenant.manage``PLATFORM_ADMIN`
- 说明:按租户和门店数据范围读取结算单详情,返回结算单主信息与固化结算明细。
- 返回:`settlement``items`;明细包含任务号、订单号、门店、房间、保洁员、成员分账金额和完成时间。
## 2026-06-30 统计明细增量
- `GET /admin-api/cleaning/statistics`
- 登录:必须。
- 权限:`cleaning.task.read``cleaning.settlement.read`,或 `tenant.manage` / `PLATFORM_ADMIN`
- Query`from?: string``to?: string``storeId?: string`
- 说明:按登录管理员租户与门店范围统计保洁运营状态,支持日期和门店筛选。
- 返回:`summary``byStatus``byStore``settlements``members`,覆盖任务状态、门店明细、结算口径和成员分账待结算金额。