Files
qipai/docs/devlogs/2026-06-25-M08-B-保洁端.md
T
2026-07-07 14:48:19 +08:00

594 lines
58 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.
# M08-B 保洁端
## 本次工程增量
- 新增 `2026062525_m08b_cleaner_tasks` 迁移,建立 `qipai_cleaning_tasks``qipai_cleaning_task_events`,覆盖 WAITING、CLAIMED、STARTED、SUBMITTED、COMPLETED、REJECTED、EXEMPT、SETTLED、CANCELLED 状态和事件追踪。
- 权限补齐 `cleaning.task.write``cleaning.statistics.read``CLEANER`、门店管理员、租户管理员和平台管理员可获得保洁任务读写与统计能力。
- 新增 `CleaningTaskRepository``/app-api/cleaning/*` 路由:任务大厅、我的任务、接单、开始、提交验收和个人统计均要求登录态与保洁权限。
- 生产 `server.ts` 注入真实保洁仓储,迁移 runner 纳入 M08-B 数据库迁移。
- 小程序新增 `pages/cleaner/tasks`,调用真实 app-api 展示任务大厅、我的任务、待结算统计,并支持接单、开始和提交照片 URL 验收。
- `scripts/check-miniapp-m08-a.mjs` 扩展为同时检查 M08-A 顾客端与 M08-B 保洁端页面注册和真实接口调用。
## 2026-06-26 增量
- `/app-api/cleaning/tasks/:taskId/photos` 接入受控图片上传:保洁员必须登录且拥有当前任务,任务状态必须为 `STARTED``REJECTED`,上传后复用 `MediaStorage` 压缩为 WebP 并返回固定 `https://api.txyundm.cn/uploads/...` URL。
- `/app-api/cleaning/tasks/:taskId/submit` 改为必须提交至少一张照片;`REJECTED` 任务允许再次提交,提交后清空驳回原因并记录事件。
- 新增 `/app-api/cleaning/tasks/:taskId/rework`,保洁员可将本人 `REJECTED` 任务重新转为 `STARTED`,清空旧照片和驳回原因,进入补做流程。
- `OrderStateRepository` 在订单状态进入 `FINISHED` 时通过同一事务调用 `CleaningTaskRepository.createForFinishedOrder`,按 `order_id` 唯一键幂等创建 `WAITING` 保洁任务并写入 `AUTO_CREATE` 事件。
- 小程序保洁端将手工照片 URL 文本框改为相机/相册选择图片,上传成功后再提交验收;驳回任务显示原因并提供“重做”入口。
- 修复 `marketing-benefit-service.test.mjs` 中固定订单时间导致 2026-06-26 后自然过期的问题,改为相对未来时间,避免测试随日期漂移失效。
## 2026-06-26 继续增量
- 新增管理侧保洁任务查询 `/admin-api/cleaning/tasks`,按管理员门店范围和状态筛选任务。
- 新增管理侧指派 `/admin-api/cleaning/tasks/:taskId/assign`,指派前校验被指派用户为有效 `CLEANER` 且拥有任务门店范围。
- 新增管理侧验收 `/admin-api/cleaning/tasks/:taskId/complete`,将 `SUBMITTED` 任务转为 `COMPLETED` 并记录事件。
- 新增管理侧驳回 `/admin-api/cleaning/tasks/:taskId/reject`,写入驳回原因并允许保洁端进入补做链路。
- 新增 `/admin-api/cleaning/settlement-candidates`,返回 `COMPLETED` 且未结算的任务,作为后续结算单生成前置。
## 2026-06-26 结算增量
- 新增 `2026062626_m08b_cleaning_settlements` 迁移,建立保洁结算单主表和明细表,任务明细唯一进入一个结算单。
- 新增 `cleaning.settlement.read``cleaning.settlement.write` 权限,保洁员可读本人结算相关能力,门店/租户/平台管理员可生成和确认结算。
- 新增 `GET /admin-api/cleaning/settlements``POST /admin-api/cleaning/settlements``POST /admin-api/cleaning/settlements/:id/confirm`,支持从已完成未结算任务生成 `DRAFT` 结算单并确认到 `CONFIRMED`
- 结算生成会锁定当前候选任务,写入结算明细,固化任务奖励金额,并把任务转为 `SETTLED`,避免同一任务重复结算。
- 新增 `POST /admin-api/cleaning/reclaim-timeouts`,可按分钟阈值和数量限制回收超时停留在 `CLAIMED`/`STARTED` 的任务,恢复到任务大厅。
## 2026-06-26 多人协作增量
- 新增 `2026062627_m08b_cleaning_collaboration` 迁移,建立 `qipai_cleaning_task_members`,支持 `LEAD` 负责人和 `ASSIST` 协作者、成员分账金额、移除和成员维度结算时间。
- 调整 `qipai_cleaning_settlement_items`,新增 `cleaner_user_id`,唯一键从“任务唯一”升级为“任务 + 保洁员唯一”,允许同一协作任务按成员分别进入不同保洁员结算单。
- `CleaningTaskRepository` 在接单、指派和验收时自动维护负责人成员;重新指派会撤掉旧未结算负责人,避免同一任务出现多个有效 `LEAD`
- 新增管理侧成员接口:查看成员、添加/更新协作者、移除未结算协作者。协作者必须拥有 `CLEANER` 角色和任务门店范围,协作者分账总额不能超过任务奖励。
- `GET /app-api/cleaning/tasks/mine``GET /app-api/cleaning/stats` 扩展为负责人/协作者视角;待结算金额按成员分账金额统计。
- 结算生成改为按成员 `reward_cents` 生成明细,单个成员结算后只标记该成员 `settled_at`;所有有效成员均结清后任务才整体转为 `SETTLED`
## 2026-06-27 发放闭环增量
- 新增 `2026062728_m08b_cleaning_payouts` 迁移,为 `qipai_cleaning_settlements` 增加 `paid_by``payout_channel``payout_reference``payout_error`,记录保洁结算发放操作人、渠道、外部流水号和失败原因。
- 新增 `POST /admin-api/cleaning/settlements/:settlementId/paid`,仅允许管理员将 `CONFIRMED` 结算单标记为 `PAID`,写入发放渠道、流水号、发放人和 `paid_at`,并清空旧失败原因。
- 新增 `POST /admin-api/cleaning/settlements/:settlementId/payout-failure`,仅允许对 `CONFIRMED` 结算单记录发放失败原因,保留 `CONFIRMED` 状态,支持修复外部付款后重试。
- 结算单查询返回新增发放字段,管理端后续可以直接展示发放状态、渠道流水和失败原因。
## 2026-06-27 微信转账适配增量
- `WechatPayClient` 新增微信支付商家转账请求能力,按商户转账单号、转账场景、openid、金额、备注、通知地址和场景报备信息发起 `POST /v3/fund-app/mch-transfer/transfer-bills`,并解析微信转账单号、状态、失败原因和 `package_info`
- 新增 `CleaningPayoutService`,从结算单解析租户、门店、保洁员、金额和状态,复用门店/全局微信收款账户与环境凭据,校验商户号一致、收款账户已授权、保洁员存在微信 openid,再执行真实微信转账或测试 Mock。
- 新增 `QIPAI_CLEANING_PAYOUT_MOCK_ENABLED`,仅非生产环境允许 Mock 发放;生产环境不会因为误配打开 Mock。
- 新增 `2026062729_m08b_cleaning_transfer_state` 迁移,为保洁结算单增加 `payout_state``payout_package_info`,记录 `SUCCESS``FAIL``WAIT_USER_CONFIRM``PROCESSING` 等微信转账中间态。
- 新增 `POST /admin-api/cleaning/settlements/:settlementId/wechat-transfer`,管理员可对 `CONFIRMED` 结算单发起微信转账;成功直接落 `PAID`,失败记录失败原因,待用户确认/处理中则保留 `CONFIRMED` 并写入中间态和微信 package 信息,便于后续查询或回调闭环。
## 2026-06-29 微信转账回调与轮询增量
- `WechatPayClient` 新增商户单号查询微信商家转账接口,按 `out_bill_no` 调用微信查询 API 并解析商户号、微信转账单号、状态、失败原因和转账金额。
- `CleaningPayoutService.syncWechatTransfer` 新增主动轮询闭环:管理员可对已发起微信转账的 `CONFIRMED` 结算单同步微信状态;`SUCCESS` 自动标记 `PAID``FAIL` 记录失败原因,其它中间态继续保留 `CONFIRMED` 并更新 `payout_state`
- `CleaningPayoutService.processWechatTransferNotification` 新增微信转账通知处理:按微信平台证书序列号选择凭据、验签解密原始通知、校验商户号,再通过商户单号或微信转账单号定位结算单并写回成功、失败或中间态。
- 新增 `POST /admin-api/cleaning/settlements/:settlementId/wechat-transfer/sync`,用于后台手动同步或后续定时轮询调用。
- 新增 `POST /app-api/cleaning/wechat-transfer/notify`,免登录接收微信转账回调,使用流式 `preParsing` 捕获原始 body,避免验签因 JSON 重序列化失效。
## 2026-06-29 保洁管理后台增量
- `admin/` 从空目录升级为 Vue3 + Vite + TypeScript + Element Plus 后台工程,构建基址固定为 `/admin/`,生产后台 API 固定为 `https://api.txyundm.cn/admin-api`
- 新增保洁运营首屏,支持后台访问令牌本地保存、任务/结算双标签、待验收/完成/待发放/本页金额概览,并适配桌面、平板和手机浏览器。
- 新增保洁任务管理面板:按状态筛选任务,查看门店/房间/保洁员/成员/奖励/照片数量,支持指派、验收、驳回和超时回收。
- 新增保洁结算管理面板:按状态筛选结算单,支持生成结算单、确认结算、发起微信转账、同步微信转账状态和记录发放失败。
- 新增 `scripts/check-admin-m08-b.mjs` 并接入 Windows `test-all.ps1`,静态检查后台依赖、固定域名、构建基址、M08-B API 封装和关键控件。
## 2026-06-29 微信转账预检增量
- `CleaningPayoutService` 新增 `preflightWechatTransfer`,不触发真实转账,仅读取结算单、收款账户、微信支付凭据元数据和保洁员 openid,返回脱敏商户号、凭据引用、场景 ID、报备项数量、通知地址、平台证书数量和逐项 PASS/WARN/FAIL。
- 新增 `GET /admin-api/cleaning/settlements/:settlementId/wechat-transfer/preflight`,管理员可在真实商户转账前检查结算单状态、金额、收款账户授权、商户号匹配、场景报备配置、通知证书和保洁员 openid。
- 后台结算面板新增“预检”操作和结果弹窗,展示真实转账前置条件是否满足,帮助现场联调前明确缺失项。
- `scripts/check-admin-m08-b.mjs` 扩展检查微信转账预检 API 封装和后台控件。
## 2026-06-30 后台协作与结算详情增量
- 新增 `GET /admin-api/cleaning/settlements/:settlementId`,按租户和门店数据范围返回结算单主信息与固化结算明细,包含任务号、订单号、门店、房间、保洁员、成员分账金额和完成时间。
- 后台任务面板新增“成员”入口,可查看负责人/协作者、分账金额和结算状态,并支持添加/更新协作者与移除未结算协作者。
- 后台结算面板新增“详情”入口,可查看结算单任务明细、转账状态、外部流水、失败原因和备注,避免管理员只能从列表猜测结算口径。
- `scripts/check-admin-m08-b.mjs` 扩展检查协作者管理、结算详情和对应 API 封装。
## 2026-06-30 统计明细增量
- 新增 `GET /admin-api/cleaning/statistics`,支持按开始日期、结束日期和门店 ID 筛选,按登录管理员的租户与门店数据范围裁剪统计。
- 管理侧统计返回任务状态分布、门店任务明细、结算状态金额和成员分账排行,明确待验收、待结算、待发放、已发放和成员分账口径。
- 后台新增“统计”标签页,展示任务状态、结算口径、门店明细和成员分账;首屏四个指标改为使用管理侧统计接口,不再依赖当前分页粗略汇总。
- `scripts/check-admin-m08-b.mjs` 扩展检查统计标签页、统计 API 封装和关键统计展示控件。
## 2026-06-30 保洁员资料管理增量
- `/admin-api/users` 新增 `role` 查询参数,支持后台按 `CLEANER``STAFF``STORE_ADMIN``TENANT_ADMIN` 筛选员工,继续复用员工管理权限和门店数据范围。
- 后台统计页新增“今日/近7天/本月”快捷周期,自动生成闭区间起始日和次日/次月结束日并刷新管理统计。
- 后台新增“保洁员”标签页,支持按状态和关键词筛选保洁员,查看门店范围、备注、最近登录和脱敏 IP。
- 后台保洁员资料管理接入已有员工 API,支持创建 `CLEANER`、编辑姓名/门店范围/备注、启用/停用和重置会话。
## 2026-06-30 统计趋势增量
- 管理侧 `GET /admin-api/cleaning/statistics` 在原有状态分布、门店明细、结算口径和成员分账排行基础上追加 `trend`,按任务创建日期聚合每日任务总数、待验收、完成、驳回、奖励和已发放金额。
- 后台统计页新增“每日趋势”区块,使用响应式条形行展示每日任务量,并并列呈现待验、完成、驳回、奖励和发放金额,方便运营按周期筛选后查看波动。
- `scripts/check-admin-m08-b.mjs` 扩展检查每日趋势控件和发放金额字段,避免后续后台改动丢失趋势展示。
## 2026-06-30 保洁员资料细节增量
- `/admin-api/users` 列表返回新增 `avatarUrl``wechatMiniappBound`,后台可判断保洁员是否已绑定微信小程序 openid,为真实微信转账资料预检提供更直观的人员资料状态。
- 后台“保洁员”列表新增资料标签,展示“已绑微信/未绑微信”和“资料完整/待补资料”,资料完整度按微信绑定、门店范围和姓名综合判断。
- 后台保洁员编辑弹窗补手机号维护,提交时透传 `phone` 到既有员工更新接口,继续保留 `CLEANER` 角色和门店范围约束。
- `scripts/check-admin-m08-b.mjs` 扩展检查微信绑定、资料完整度和保洁员资料标签,`backend/tests/user-management.test.mjs` 覆盖手机号更新透传。
## 2026-06-30 保洁员选择器增量
- 后台任务指派弹窗从手填“保洁员用户 ID”升级为可搜索保洁员选择器,选项展示姓名、用户 ID、脱敏手机号、门店范围和微信绑定状态,降低现场运营输错 ID 的风险。
- 后台任务协作者管理同样接入保洁员选择器,添加/更新协作者前先拦截空选择,并继续保留成员分账金额和备注录入。
- 后台生成保洁结算单接入保洁员选择器,管理员从已加载的 `CLEANER` 列表选择人员后生成结算单,门店 ID 仍作为可选过滤条件。
- `scripts/check-admin-m08-b.mjs` 扩展检查任务、结算组件中的 `el-select``cleanerLabel` 以及选择器样式,避免后续回退到纯 ID 输入。
## 2026-06-30 任务结算筛选增量
- 管理侧 `GET /admin-api/cleaning/tasks` 新增 `storeId``cleanerUserId` 查询参数;保洁员筛选同时匹配负责人和未移除协作者,继续受管理员门店数据范围裁剪。
- 管理侧 `GET /admin-api/cleaning/settlements` 新增 `storeId``cleanerUserId` 查询参数,便于财务按门店、保洁员和结算状态定位待确认、待发放或异常结算单。
- 后台任务列表和结算列表新增门店 ID 输入、保洁员下拉和筛选按钮,筛选条件会随分页、状态切换和刷新进入真实 admin-api 请求。
- `backend/tests/cleaning-route.test.mjs` 覆盖任务/结算筛选参数透传;`scripts/check-admin-m08-b.mjs` 扩展检查筛选控件、API 参数和样式。
## 2026-06-30 任务详情照片预览增量
- 后台任务列表新增“详情”入口,管理员可在弹窗中查看任务号、状态、奖励、保洁员、门店房间、订单、保洁要求和驳回原因。
- 任务详情弹窗新增领取、开始、提交和完成时间线,减少验收/驳回时在列表列之间来回查找。
- 任务详情弹窗支持保洁照片缩略图与大图预览;无照片时显示空状态,便于待验收任务快速确认现场材料。
- `scripts/check-admin-m08-b.mjs` 扩展检查任务详情弹窗、照片预览和时间线控件。
## 验收结果
- `npm run build``backend/`):PASS。
- `node scripts/check-miniapp-m08-a.mjs`PASS。
- `node tests/cleaning-route.test.mjs`PASS。
- `node tests/migration-contract.test.mjs`PASS。
- `node tests/migration-runner.test.mjs`PASS。
- `npm test``backend/`):PASS。
- 2026-06-26 追加验证:
- `node tests/cleaning-route.test.mjs`PASS,覆盖 `rework` 和照片上传路由。
- `npm test -- --runInBand``backend/`):PASS。
- `node scripts/check-miniapp-m08-a.mjs`PASS。
- 继续增量后 `npm test -- --runInBand``backend/`):PASS,覆盖管理侧指派、验收、驳回和待结算候选路由。
- 结算增量后 `npm test -- --runInBand``backend/`):PASS,覆盖结算迁移、结算单路由和超时回收路由。
- 结算增量后 `node scripts/check-miniapp-m08-a.mjs`PASS。
- 多人协作增量后 `npm run build``backend/`):PASS。
- 多人协作增量后 `node tests/migration-contract.test.mjs`PASS。
- 多人协作增量后 `node tests/migration-runner.test.mjs`PASS。
- 多人协作增量后 `node tests/cleaning-route.test.mjs`:PASS,覆盖成员查看、添加和移除路由。
- 发放闭环增量后 `npm run build``backend/`):PASS。
- 发放闭环增量后 `node tests/migration-contract.test.mjs`PASS。
- 发放闭环增量后 `node tests/migration-runner.test.mjs`PASS。
- 发放闭环增量后 `node tests/cleaning-route.test.mjs`:PASS,覆盖结算发放成功和发放失败记录路由。
- 微信转账适配增量后 `npm run build``backend/`):PASS。
- 微信转账适配增量后 `node tests/wechat-pay.test.mjs`:PASS,覆盖商家转账请求签名与载荷。
- 微信转账适配增量后 `node tests/cleaning-payout-service.test.mjs`:PASS,覆盖真实 API 成功、失败、待确认和 Mock 门禁。
- 微信转账适配增量后 `node tests/cleaning-route.test.mjs`PASS,覆盖微信转账路由。
- 微信转账适配增量后 `node tests/migration-contract.test.mjs`PASS。
- 微信转账适配增量后 `node tests/migration-runner.test.mjs`PASS。
- 微信转账适配增量后 `node scripts/check-miniapp-m08-a.mjs`PASS。
- 微信转账适配增量后 `npm test``backend/`):PASS。
- 微信转账回调与轮询增量后 `npm run build``backend/`):PASS。
- 微信转账回调与轮询增量后 `node tests/wechat-pay.test.mjs`:PASS,覆盖商户单号查询转账单请求。
- 微信转账回调与轮询增量后 `node tests/cleaning-payout-service.test.mjs`:PASS,覆盖主动同步成功/失败/处理中和微信通知成功落库。
- 微信转账回调与轮询增量后 `node tests/cleaning-route.test.mjs`:PASS,覆盖后台同步路由和免登录微信通知路由。
- 微信转账回调与轮询增量后 `npm test``backend/`):PASS。
- 保洁管理后台增量后 `npm run build``admin/`):PASS。
- 保洁管理后台增量后 `npm audit --omit=dev``admin/`):PASS0 vulnerabilities。
- 保洁管理后台增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 微信转账预检增量后 `npm run build``backend/`):PASS。
- 微信转账预检增量后 `node tests/cleaning-payout-service.test.mjs`:PASS,覆盖配置齐全、缺场景报备和缺 openid 的预检结果。
- 微信转账预检增量后 `node tests/cleaning-route.test.mjs`PASS,覆盖后台预检路由。
- 微信转账预检增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 微信转账预检增量后 `npm run build``admin/`):PASS。
- 后台协作与结算详情增量后 `npm run build``backend/`):PASS。
- 后台协作与结算详情增量后 `npm run build``admin/`):PASS。
- 后台协作与结算详情增量后 `node tests/cleaning-route.test.mjs`PASS,覆盖结算单详情路由。
- 后台协作与结算详情增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 后台协作与结算详情增量后 `npm test``backend/`):PASS。
- 统计明细增量后 `npm run build``backend/`):PASS。
- 统计明细增量后 `npm run build``admin/`):PASS。
- 统计明细增量后 `node tests/cleaning-route.test.mjs`PASS,覆盖管理侧统计路由。
- 统计明细增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 统计明细增量后 `npm test``backend/`):PASS。
- 保洁员资料管理增量后 `npm run build``backend/`):PASS。
- 保洁员资料管理增量后 `npm run build``admin/`):PASS。
- 保洁员资料管理增量后 `node tests/user-management.test.mjs`PASS,覆盖 `role=CLEANER` 员工筛选。
- 保洁员资料管理增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 统计趋势增量后 `npm run build``backend/`):PASS。
- 统计趋势增量后 `npm run build``admin/`):PASS。
- 统计趋势增量后 `node tests/cleaning-route.test.mjs`:PASS,覆盖管理统计趋势字段透传。
- 统计趋势增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 保洁员资料细节增量后 `npm run build``backend/`):PASS。
- 保洁员资料细节增量后 `npm run build``admin/`):PASS。
- 保洁员资料细节增量后 `node tests/user-management.test.mjs`PASS,覆盖手机号更新透传。
- 保洁员资料细节增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 保洁员选择器增量后 `npm run build``admin/`):PASS。
- 保洁员选择器增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 任务结算筛选增量后 `npm run build``backend/`):PASS。
- 任务结算筛选增量后 `npm run build``admin/`):PASS。
- 任务结算筛选增量后 `node tests/cleaning-route.test.mjs`:PASS,覆盖任务/结算筛选参数透传。
- 任务结算筛选增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 任务详情照片预览增量后 `npm run build``admin/`):PASS。
- 任务详情照片预览增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 统计按保洁员筛选增量后 `npm run build``backend/`):PASS。
- 统计按保洁员筛选增量后 `npm run build``admin/`):PASS。
- 统计按保洁员筛选增量后 `node backend/tests/cleaning-route.test.mjs`PASS,覆盖管理统计 `cleanerUserId` 参数透传。
- 统计按保洁员筛选增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 待结算候选预览增量后 `npm run build``backend/`):PASS。
- 待结算候选预览增量后 `npm run build``admin/`):PASS。
- 待结算候选预览增量后 `node backend/tests/cleaning-route.test.mjs`:PASS,覆盖候选接口门店/保洁员筛选参数透传。
- 待结算候选预览增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 结算候选导出增量后 `npm run build``admin/`):PASS。
- 结算候选导出增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 任务事件流水增量后 `npm run build``backend/`):PASS。
- 任务事件流水增量后 `npm run build``admin/`):PASS。
- 任务事件流水增量后 `node backend/tests/cleaning-route.test.mjs`PASS,覆盖任务事件流水路由。
- 任务事件流水增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 运营待处理入口增量后 `npm run build``admin/`):PASS。
- 运营待处理入口增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 转账状态筛选增量后 `npm run build``backend/`):PASS。
- 转账状态筛选增量后 `node backend/tests/cleaning-route.test.mjs`PASS,覆盖 `payoutState` 参数透传。
- 转账状态筛选增量后 `npm run build``admin/`):PASS。
- 转账状态筛选增量后 `node scripts/check-admin-m08-b.mjs`PASS。
- 微信确认参数展示增量后 `npm run build``admin/`):PASS。
- 微信确认参数展示增量后 `node scripts/check-admin-m08-b.mjs`PASS。
## 2026-06-30 统计按保洁员筛选增量
- 后端 `GET /admin-api/cleaning/statistics` 新增 `cleanerUserId` 查询参数,任务统计按负责人或有效协作者过滤,结算统计和每日已发放金额按结算单保洁员过滤。
- 后台统计页新增可搜索保洁员选择器,与任务列表和结算列表的筛选口径保持一致,支持按单个保洁员定位待验收、待结算、已发放和每日趋势。
- `backend/tests/cleaning-route.test.mjs` 补充管理统计筛选参数透传断言,`scripts/check-admin-m08-b.mjs` 补充统计页保洁员筛选控件检查。
## 2026-06-30 待结算候选预览增量
- 后端 `GET /admin-api/cleaning/settlement-candidates` 新增 `storeId``cleanerUserId` 查询参数,候选任务继续限定为 `COMPLETED` 且未结算,保洁员筛选覆盖负责人和未移除、未结算协作者。
- 后台结算页新增“候选”入口,可按当前门店/保洁员筛选预览待结算任务、当前页金额、房间、负责人和完成时间,并可将当前筛选带入生成结算单弹窗。
- `backend/tests/cleaning-route.test.mjs` 补充候选接口筛选参数透传断言,`scripts/check-admin-m08-b.mjs` 补充后台候选预览控件检查。
## 2026-06-30 结算候选导出增量
- 后台结算页新增当前结算列表 CSV 导出,包含结算单号、状态、保洁员、门店、任务数、金额、转账状态、外部流水、失败原因和创建时间。
- 待结算候选弹窗新增当前页候选任务 CSV 导出,包含任务号、订单号、门店、房间、保洁员 ID、金额和完成时间,便于财务或线下核对。
- 导出实现使用浏览器 Blob 和 UTF-8 BOM,未新增第三方依赖;`scripts/check-admin-m08-b.mjs` 补充导出入口检查。
## 2026-06-30 任务事件流水增量
- 后端新增 `GET /admin-api/cleaning/tasks/:taskId/events`,按租户和管理员门店范围返回任务最近 50 条事件流水,覆盖动作、from/to 状态、操作人、traceId、备注和创建时间。
- 后台任务详情弹窗新增“操作流水”表格,验收、驳回、回收、协作者变更、结算成员等操作可从任务详情直接追溯。
- `backend/tests/cleaning-route.test.mjs` 补充任务事件流水路由断言,`scripts/check-admin-m08-b.mjs` 补充后台任务详情流水检查。
## 2026-07-02 批量验收驳回增量
- 后台任务列表新增多选列,仅允许选择 `SUBMITTED` 待验收任务,避免把进行中、已完成或已结算任务误纳入批量处理。
- 后台任务工具栏新增“批量验收”和“批量驳回”;批量验收复用现有单任务验收 API 顺序执行,批量驳回要求管理员输入统一驳回原因后再提交。
- 父级工作台新增 `handleCompleteMany``handleRejectMany`,批量处理完成后同步刷新任务列表和统计概览,保持待验收、完成、待结算金额实时更新。
- `scripts/check-admin-m08-b.mjs` 扩展检查批量验收、批量驳回、已选择待验收任务过滤和父子组件事件,避免后续后台改动丢失批量运营能力。
## 2026-07-02 任务详情协作分账增量
- 后台任务详情弹窗新增“协作分账”区块,直接展示负责人和协作者、成员角色、分账金额与结算状态。
- 打开任务详情时并行加载任务事件流水和成员列表,管理员验收或驳回前可以在同一弹窗核对照片、操作历史和成员分账口径。
- 该增量复用既有 `GET /admin-api/cleaning/tasks/:taskId/members`,未新增数据库表或后端路由。
- `scripts/check-admin-m08-b.mjs` 扩展检查协作分账展示、成员列表加载和 loading 状态,避免详情页回退为只看流水与照片。
## 2026-07-02 结算批量同步增量
- 后台结算列表新增多选列,仅允许选择 `CONFIRMED` 待发放结算单,避免误同步草稿、已发放或已取消单据。
- 结算工具栏新增“批量同步”,对已选择结算单顺序调用既有微信转账同步 API,批量完成后刷新结算列表和统计概览。
- 父级工作台新增 `handleSyncTransferMany`,复用单笔同步流程和错误处理,不新增后端路由或数据库字段。
- `scripts/check-admin-m08-b.mjs` 扩展检查批量同步按钮、可同步结算单过滤和父子组件事件,防止后续结算面板回退到只能逐行同步。
## 2026-07-05 运营待处理入口增量
- 后台保洁运营首屏新增“运营待处理”快捷入口,复用管理侧统计结果展示待验收任务、驳回补做、待确认结算和待发放金额。
- 快捷入口可直接切换到任务或结算标签页,并自动应用 `SUBMITTED``REJECTED``DRAFT``CONFIRMED` 状态筛选,减少管理员在多个标签和分段控件之间重复定位。
- 新增 `.action-board``.action-tile` 响应式样式,桌面四列、平板两列、手机单列,保持保洁工作台在桌面、平板和手机浏览器下可扫描。
- `scripts/check-admin-m08-b.mjs` 扩展检查运营待处理入口、跳转函数、待确认结算统计和响应式样式,防止后续后台改动丢失快捷处置能力。
## 2026-07-05 转账状态筛选增量
- 后端 `GET /admin-api/cleaning/settlements` 新增 `payoutState` 查询参数,支持 `NONE``PROCESSING``WAIT_USER_CONFIRM``SUCCESS``FAIL`,用于真实商户联调时定位未发起、处理中、待用户确认、成功和失败结算单。
- 结算仓储新增转账状态 SQL 条件,其中 `NONE` 映射为空 `payout_state`,其它状态使用精确匹配,继续叠加租户、门店范围、结算状态、门店和保洁员筛选。
- 后台结算列表新增“转账状态”下拉筛选,请求封装会把筛选条件传入 admin-api;首屏快捷跳转待确认/待发放结算时自动清空旧转账状态筛选,避免误叠加。
- `backend/tests/cleaning-route.test.mjs` 覆盖 `payoutState=FAIL` 透传,`scripts/check-admin-m08-b.mjs` 覆盖后台筛选控件和 API 参数。
## 2026-07-05 微信确认参数展示增量
- 后台结算单详情新增“微信确认参数”字段,直接展示已落库的 `payoutPackageInfo`,方便管理员处理 `WAIT_USER_CONFIRM` 场景时核对微信侧确认参数。
- 结算列表 CSV 导出新增“微信确认参数”列,导出时同步带出 `payoutPackageInfo`,便于财务或现场联调人员离线排查待确认转账。
- 本增量复用既有结算详情和列表返回字段,未新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `payoutPackageInfo` 和“微信确认参数”展示,避免后续结算详情或导出回退。
## 2026-07-05 微信预检资料展示增量
- 后台微信转账预检弹窗新增真实商户资料摘要,展示凭据引用、授权状态、账户范围、AppID、商户证书序列号、场景报备、通知 URL、平台证书数量和保洁员 OpenID 状态。
- 新增 `configuredText` 将凭据类布尔字段转成运营可读的“已配置/缺失”,减少现场联调时从检查项表格里反复推断配置缺口。
- 本增量复用既有 `preflightWechatTransfer` 返回结构,未新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查预检资料字段和格式化函数,避免后续结算面板回退为只展示检查项。
## 2026-07-05 微信预检导出增量
- 后台微信转账预检弹窗新增“导出预检”按钮,可将当前结算单的 ready 状态、结算摘要、脱敏商户/凭据、授权状态、场景、通知 URL、平台证书、保洁员 OpenID 和全部检查项导出为 CSV。
- 导出文件使用 `cleaning-transfer-preflight-{settlementNo}-{timestamp}.csv` 命名,复用既有 UTF-8 BOM CSV 下载工具,便于真实商户现场联调时留存和转交排查证据。
- 本增量未新增后端路由、数据库字段或第三方依赖,继续复用既有 `preflightWechatTransfer` 结果。
- `scripts/check-admin-m08-b.mjs` 扩展检查“导出预检”、`exportPreflight` 和导出文件名前缀,避免后续结算面板丢失现场联调证据导出能力。
## 2026-07-05 微信转账预检拦截增量
- 后台点击“微信转账”时会自动调用 `preflightWechatTransfer`,在转账弹窗内展示当前真实转账前置条件检查结果。
- API 模式下预检未完成或存在 `FAIL` 阻断项时禁用“发起”按钮;Mock 模式仍可用于非生产演练,避免真实商户现场误触发不可满足条件的转账请求。
- 新增 `transferCanSubmit``transferPreflightTitle``transfer-preflight-alert`,将阻断项数量直接展示在转账弹窗里,减少管理员在预检弹窗和转账弹窗之间来回切换。
- `scripts/check-admin-m08-b.mjs` 扩展检查转账前预检标题、禁用条件、loading 状态和弹窗样式,避免后续回退为无前置拦截的直接发起。
## 2026-07-05 任务列表导出增量
- 后台任务列表新增当前筛选页 CSV 导出入口,管理员可导出任务号、状态、门店、房间、订单号、保洁员 ID、协作人数、奖励金额、照片数、提交/完成时间和驳回原因。
- 导出使用浏览器 Blob 和 UTF-8 BOM,不新增第三方依赖;文件名使用 `cleaning-tasks-{timestamp}.csv`,便于运营按当前筛选结果留存待验收、驳回补做或异常任务证据。
- `scripts/check-admin-m08-b.mjs` 扩展检查任务导出按钮、`exportTasks`、CSV 文件名前缀和照片数量字段,避免后续后台改动丢失任务导出能力。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-05 任务详情导出增量
- 后台任务详情弹窗新增“导出详情”,可将单个任务摘要、协作成员分账、最近操作流水和保洁照片链接导出为 CSV。
- 导出文件名使用 `cleaning-task-detail-{taskNo}-{timestamp}.csv`,便于管理员在验收、驳回、协作分账争议或现场复盘时留存单任务证据。
- 本增量复用任务详情已加载的成员、流水和照片数据,未新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查任务详情导出入口、`exportTaskDetail` 和详情导出文件名前缀。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-05 现场联调清单增量
- 后台新增“联调”标签页,提供真实商户、微信合法域名、保洁转账和硬件开门/控电的现场联调检查项,覆盖 M08-B 当前真实商户和现场硬件阻塞项。
- 联调面板支持按商户、微信、转账、硬件分类筛选,记录每项状态、负责人和结果备注,并在浏览器本地保存,不把未完成的现场结果写入生产状态。
- 联调清单可导出为 `cleaning-field-handoff-{timestamp}.csv`,包含检查项、期望、状态、负责人、结果记录和证据要求,便于现场联调留痕和转交排查。
- `scripts/check-admin-m08-b.mjs` 扩展检查联调标签页、本地状态键、关键检查项和导出入口。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-05 联调状态筛选增量
- 后台联调面板新增状态筛选,支持按全部、待处理、通过、阻断和不适用过滤现场检查项。
- 现场联调人员可在商户/微信/转账/硬件分类之外快速聚焦阻断项或待处理项,减少真实商户和硬件现场排查时的人工翻找。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `statusFilter`、全部状态选项和 `.handoff-status-select` 样式。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-05 联调批量标记增量
- 后台联调面板新增“批量标记”,可对当前分类和状态筛选出的检查项统一设置待处理、通过、阻断或不适用。
- 批量标记支持填写负责人和结果记录;留空时不覆盖原负责人或原备注,便于现场把一组阻断项统一分派,或把一批已验项统一标记通过。
- 本增量继续使用浏览器本地存储,不把未完成现场结果写入生产状态,也不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查批量标记入口、`bulkForm``applyBulkMark` 和批量表单样式。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-05 联调阻断摘要增量
- 后台联调面板新增“阻断摘要”,当现场检查项被标记为 `BLOCKED` 时自动汇总类别、检查项、负责人和阻断备注。
- 新增“复制摘要”按钮,使用浏览器剪贴板把阻断项整理成多行文本,便于发送给微信商户、硬件厂商或现场负责人;浏览器禁用剪贴板时提示改用 CSV 导出。
- 本增量继续使用本地联调记录,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查阻断摘要、`blockedItems``copyBlockedSummary` 和剪贴板调用。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-05 联调场次信息增量
- 后台联调面板新增联调批次、现场/门店、现场负责人和执行时间字段,记录一次真实商户或硬件现场执行的基本场次信息。
- 场次信息使用浏览器本地存储独立保存,并随联调 CSV 一起导出;复制阻断摘要时也会带上批次、现场、负责人和执行时间,便于跨团队转交排查。
- 本增量不新增后端路由、数据库字段或第三方依赖,仍避免把未完成现场结果写入生产状态。
- `scripts/check-admin-m08-b.mjs` 扩展检查场次本地存储键、`sessionMeta``persistSessionMeta` 和场次表单样式。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-05 联调快照增量
- 后台联调面板新增 JSON 快照导出,包含联调场次信息和全部检查项状态、负责人、结果记录,文件名使用 `cleaning-field-handoff-snapshot-{timestamp}.json`
- 新增 JSON 快照导入,校验固定 schema `qipai.cleaning.field-handoff.snapshot.v1` 后恢复本地联调场次和检查项记录;未知检查项会被忽略,避免旧快照污染新清单。
- 本增量继续仅使用浏览器本地状态,不新增后端路由、数据库字段或第三方依赖,便于现场换电脑、复盘和转交联调记录。
- `scripts/check-admin-m08-b.mjs` 扩展检查快照导出、导入、schema 和隐藏文件输入样式。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 联调分类进度增量
- 后台联调面板新增分类进度视图,按商户、微信、转账和硬件分别展示通过数、总数、阻断、待处理、不适用以及通过率进度条。
- 分类中存在阻断项时进度条显示异常状态,全部通过时显示成功状态,便于现场负责人快速判断是哪一类外部条件仍未满足。
- 本增量复用既有本地联调记录,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `categoryProgress``passPercent` 和分类进度样式。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 联调验收结论增量
- 后台联调面板新增自动验收结论:当所有检查项均为通过或不适用时显示“可进入现场验收收口”,否则显示仍有多少待处理和阻断项。
- 新增“复制结论”按钮,将联调批次、现场、负责人、执行时间、结论和统计复制为文本,便于现场验收前后快速同步。
- 本增量继续复用本地联调记录,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `handoffReady``copyVerdict`、结论提示和样式。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 联调更新时间增量
- 后台联调面板新增“最后更新”展示,场次信息变更、单项状态/负责人/备注编辑、批量标记、重置和快照导入都会刷新更新时间。
- CSV 导出、阻断摘要、验收结论和 JSON 快照均带出最后更新时间,便于现场判断当前记录是否来自最新一轮联调。
- 本增量继续复用浏览器本地状态,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `updatedAt`、最后更新字段和本地时间格式化函数。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 联调证据记录增量
- 后台联调面板为每个真实商户、微信、转账和硬件检查项新增“证据记录”输入,可单独登记截图编号、流水号、设备回包或文件链接,不再只能混入结果备注。
- 顶部进度新增证据记录数,验收结论复制、阻断摘要复制、CSV 导出和 JSON 快照均带出实际证据记录,便于现场复盘和交接。
- 快照导入和本地草稿读取兼容旧数据,缺少 `evidenceRef` 时自动补空,不影响既有联调记录恢复。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `evidenceRef`、证据记录字段、证据计数和草稿归一化函数。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 联调待补证据增量
- 后台联调面板新增“待补证据”统计和清单,自动汇总除“不适用”外尚未填写证据记录的现场检查项。
- 新增“复制证据清单”按钮,将联调批次、现场、负责人、执行时间、最后更新和每个缺证据项的应留证据复制为文本,便于现场负责人集中追补。
- 验收结论复制和 CSV 导出同步带出待补证据数,避免状态已处理但证据未归档时误判为可交接。
- 本增量继续复用本地联调记录,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `evidenceMissingItems``evidenceMissingCount``copyEvidenceSummary` 和复制成功提示。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 联调交接报告增量
- 后台联调面板新增“复制报告”和“报告”导出按钮,生成保洁现场联调交接报告文本。
- 报告汇总联调场次、负责人、执行时间、最后更新、验收结论、总进度、分类进度、阻断项、待补证据和全部检查项明细。
- 报告明细会同时带出状态、负责人、结果记录、应留证据和证据记录,方便真实商户/硬件现场收口后直接归档。
- 本增量继续复用本地联调记录,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `copyHandoffReport``exportHandoffReport``buildHandoffReport``formatReportItem``statusText` 和导出文件名前缀。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 联调收口签署增量
- 后台联调场次信息新增验收人、收口结论和下一步字段,用于记录真实商户或硬件现场执行后的确认人与后续动作。
- 阻断摘要、待补证据清单、验收结论、CSV 导出、JSON 快照和交接报告均带出新增签署字段,便于现场交接后追责和复盘。
- 快照导入和本地场次读取兼容旧数据,缺少新增签署字段时自动补空。
- 本增量继续复用本地联调记录,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `acceptor``closeoutVerdict``nextAction``createEmptySessionMeta`
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 联调收口门禁增量
- 后台联调面板新增收口归档门禁,基于检查项状态、待补证据、验收人和收口结论自动判断“可归档”或“待补齐”。
- 新增“复制门禁”按钮,单独复制联调批次、现场、归档门禁、缺口、验收人、收口结论、下一步和最后更新时间,便于现场收口前同步。
- 验收结论、CSV 导出和交接报告同步带出归档门禁,避免检查项已处理但证据或签署信息未补齐时误归档。
- 本增量继续复用本地联调记录,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `closeoutReady``missingCloseoutFields``copyCloseoutGate`、门禁提示和复制成功提示。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 保洁员列表导出增量
- 后台保洁员管理面板新增“导出”按钮,可将当前已加载筛选页导出为 `cleaning-cleaners-{timestamp}.csv`
- 导出字段包含保洁员 ID、姓名、状态、微信绑定、资料完整度、门店范围、脱敏手机号、最近登录、最近 IP、注册时间和备注,便于运营核对人员资料与门店授权。
- CSV 导出复用前端本地数据和 BOM 编码,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `exportCleaners`、导出文件名前缀、`downloadCsv``csvCell`
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 保洁统计导出增量
- 后台统计页新增“导出”按钮,可将当前筛选条件下的统计结果导出为 `cleaning-statistics-{timestamp}.csv`
- 导出内容按筛选条件、汇总、任务状态、结算口径、每日趋势、门店明细和成员分账分区,便于运营离线复核统计口径。
- CSV 导出复用前端统计接口返回的数据和 BOM 编码,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `exportStatistics`、导出文件名前缀、`downloadCsv``csvCell`
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 任务流水导出增量
- 后台任务详情的操作流水区块新增“导出流水”按钮,可将当前任务最近操作流水导出为 `cleaning-task-events-{taskNo}-{timestamp}.csv`
- 导出字段包含任务号、动作、原状态、新状态、操作人、TraceId、备注和时间,便于运营单独复盘验收、驳回、回收和协作变更记录。
- 本增量复用任务详情已加载的事件流水数据,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `exportTaskEvents` 和任务流水导出文件名前缀。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 任务成员导出增量
- 后台任务“协作者管理”弹窗新增“导出成员”按钮,可将当前任务已加载成员分账导出为 `cleaning-task-members-{taskNo}-{timestamp}.csv`
- 导出字段包含任务号、成员 ID、昵称、角色、分账金额和结算时间,便于运营在协作分账调整、结算争议和现场复盘时单独留存成员口径。
- 本增量复用协作者管理弹窗已加载的成员数据,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `exportTaskMembers`、任务成员导出文件名前缀和“导出成员”入口。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 结算详情导出增量
- 后台结算单详情弹窗新增“导出详情”按钮,可将单张结算单导出为 `cleaning-settlement-detail-{settlementNo}-{timestamp}.csv`
- 导出内容包含结算单摘要、状态、保洁员、门店、任务数、金额、转账状态、外部流水、微信确认参数、失败原因、备注、创建时间和任务明细。
- 本增量复用结算详情接口已加载的数据,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `exportSettlementDetail` 和结算详情导出文件名前缀。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-06 运营待处理导出增量
- 后台保洁运营首屏“运营待处理”区新增“导出待处理”入口,可将当前已加载的待处理队列摘要导出为 `cleaning-operational-queue-{timestamp}.csv`
- 导出字段包含队列、数量、金额和对应入口,覆盖待验收任务、驳回补做、待确认结算、待发放金额、待结算金额和已完成任务。
- 本增量复用统计接口已加载的首屏数据,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `operationalQueueTotal``exportOperationalQueue`、导出文件名前缀和“导出待处理”入口。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-07 保洁员待补资料导出增量
- 后台保洁员管理页新增“导出待补”按钮,可将当前已加载筛选页中资料不完整的保洁员导出为 `cleaning-cleaner-profile-issues-{timestamp}.csv`
- 导出字段包含保洁员 ID、姓名、状态、待补项目、微信绑定、门店范围、脱敏手机号、最近登录和备注,便于真实微信转账前集中补齐人员资料。
- 待补项目按未绑定微信、未配置门店范围和缺姓名判定,复用前端已加载员工列表数据,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `profileIssues``exportCleanerProfileIssues`、导出文件名前缀和“导出待补”入口。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-07 联调风险清单导出增量
- 后台现场联调面板新增“风险”按钮,可将当前本地联调草稿中的阻断、待处理和缺证据检查项导出为 `cleaning-field-risk-register-{timestamp}.csv`
- 导出字段包含联调批次、现场/门店、负责人、执行时间、最后更新时间、检查项、状态、风险/缺口、应留证据、证据记录和下一步,便于真实商户、微信转账、硬件厂商和现场负责人拆分收口。
- 风险清单复用浏览器本地联调草稿和既有 UTF-8 BOM CSV 下载工具,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `riskItems``exportRiskRegister`、导出文件名前缀和缺证据标记,避免后续联调面板改动丢失风险导出能力。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-07 联调归档包导出增量
- 后台现场联调面板新增“归档包”按钮,只有收口门禁满足时才允许导出 `cleaning-field-closeout-archive-{timestamp}.json`
- 归档包包含 schema、导出时间、场次信息、收口门禁、统计摘要、分类进度、风险项、待补证据项、全量检查项和交接报告文本,便于真实商户、微信转账和硬件现场收口后一次性归档。
- 本增量复用本地联调草稿、风险清单、证据清单和交接报告构建逻辑,不新增后端路由、数据库字段或第三方依赖。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `exportCloseoutArchive``buildCloseoutArchive``serializeHandoffItem`、归档包 schema 和文件名前缀。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-07 联调负责人筛选增量
- 后台现场联调面板新增负责人筛选,支持查看全部负责人、未分派检查项或指定负责人名下检查项。
- 筛选项从当前本地联调草稿中的负责人记录自动聚合,并与分类、状态筛选组合生效,便于真实商户、微信转账和硬件现场执行时按责任人拆分处理。
- 重置联调草稿时负责人筛选同步回到“全部负责人”,避免重置后停留在空结果筛选状态。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `ownerFilter``ownerOptions`、负责人筛选控件和未分派选项。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-07 联调期限记录增量
- 后台现场联调面板为每个检查项新增“期限”字段,可记录负责人处理阻断、补证据或完成验收的目标日期。
- 批量标记弹窗支持批量写入期限;留空时不覆盖已有期限,便于现场负责人按筛选结果统一分派和排期。
- 阻断摘要、待补证据清单、交接报告、清单 CSV、风险清单、JSON 快照导入导出和归档包均同步带出期限字段。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `deadline`、期限列、批量标记期限和日期占位。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-07 联调逾期清单增量
- 后台现场联调面板新增逾期统计和“逾期检查项”清单,自动汇总已过期限且状态仍未通过/不适用的检查项。
- 新增“复制逾期清单”按钮,可带出批次、现场、负责人、最后更新、状态、负责人、期限和结果记录,便于现场负责人追踪超时缺口。
- 收口门禁会把逾期检查项纳入待补字段;交接报告、清单 CSV 和归档包同步带出逾期数量与逾期明细。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `overdueItems``isOverdueDraft``parseDeadline``copyOverdueSummary` 和逾期复制提示。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-07 联调负责人看板增量
- 后台现场联调面板新增“负责人看板”,按负责人自动聚合总项、通过、待处理、阻断、缺证据和逾期数量。
- 负责人卡片可直接切换负责人筛选,便于现场负责人从全局看板快速聚焦自己名下或未分派的检查项。
- 新增“复制负责人摘要”按钮;交接报告和归档包同步带出负责人维度汇总,便于真实商户、微信转账和硬件现场复盘。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `ownerProgress``copyOwnerSummary`、负责人看板文案和样式类。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-07 联调执行阶段看板增量
- 后台现场联调面板新增“执行阶段看板”,按商户、微信、转账和硬件阶段聚合通过数、证据数、阻断、缺证据、逾期和下一关注项。
- 阶段卡片可直接切换分类筛选,便于现场负责人从阶段视图快速进入商户资料、微信域名、真实转账或硬件联动缺口。
- 新增“复制阶段摘要”按钮;交接报告和归档包同步带出阶段维度汇总,便于真实商户、微信转账和硬件现场按阶段收口。
- `scripts/check-admin-m08-b.mjs` 扩展检查 `stageProgress``copyStageSummary`、阶段看板文案和样式类。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 2026-07-07 保洁员绩效排行增量
- 管理侧保洁统计接口的成员维度新增 `completedTaskCount``rejectedTaskCount`,真实返回每个保洁员的完成任务数和驳回任务数。
- 后台统计页新增“保洁员绩效排行”,按任务数、完成数、驳回数和结算金额排序展示前 8 名,并可点击保洁员卡片进入该保洁员统计筛选。
- 新增“导出排行”按钮,生成 `cleaning-cleaner-performance-{timestamp}.csv`;统计总导出同步带出成员完成、驳回和绩效排行区段。
- `scripts/check-admin-m08-b.mjs` 扩展检查绩效排行 UI、导出文件名前缀、完成/驳回字段和后端统计 SQL 聚合。
- 验证:`npm run build``admin/`PASS`node scripts/check-admin-m08-b.mjs` PASS`npm test -- --runInBand backend/tests/cleaning-route.test.mjs``backend/`,实际执行后端全量测试链)PASS。
## 2026-07-07 保洁员端统计看板增量
- 保洁员端 `GET /app-api/cleaning/stats` 新增任务总数、完成数、驳回数、完成率和已结算金额,继续按负责人/协作者口径统计当前保洁员可见任务。
- 小程序保洁任务页新增统计看板,展示任务总数、完成率、驳回、待结算和已结算金额,便于保洁员本人核对任务处理和结算口径。
- `scripts/check-miniapp-m08-a.mjs` 扩展检查 `settledRewardText``completionRate``stats-board` 和统计看板文案,避免后续小程序保洁统计能力回退。
- 验证:`npm test -- --runInBand backend/tests/cleaning-route.test.mjs``backend/`,实际执行后端全量测试链)PASS`node scripts/check-miniapp-m08-a.mjs` PASS`node scripts/check-admin-m08-b.mjs` PASS。
## 状态
M08-B 保持 `PARTIAL`。当前已完成保洁端任务大厅、我的任务、接单、开始、照片上传、提交验收、驳回补做、订单结束自动建保洁任务、统计、管理员任务查询、指派、验收、驳回、批量验收、批量驳回、超时回收、任务事件流水、任务流水导出、多人协作分账、任务成员导出、任务详情协作分账展示、任务详情导出、待结算候选与后台预览/导出、正式结算单生成、确认、结算详情导出、结算列表导出、任务列表导出、结算批量同步微信状态、结算转账状态筛选、微信确认参数展示与导出、微信转账预检资料展示与导出、真实微信转账前自动预检拦截、发放成功标记、发放失败记录、微信商家转账 API 适配、转账中间态落库、主动轮询同步、微信转账通知回调、微信转账预检、非生产 Mock 门禁、后台任务成员协作管理、任务详情照片预览、操作流水、结算单详情、统计明细、统计导出、保洁员绩效排行、保洁员端统计看板、保洁员资料管理界面、保洁员列表导出、保洁员待补资料导出、手机号维护、微信绑定状态、每日统计趋势、任务/结算/统计/候选门店和保洁员筛选、任务/协作者/结算/统计保洁员选择器、运营待处理快捷入口、运营待处理导出以及真实商户/微信/转账/硬件现场联调清单、联调状态筛选、联调负责人筛选、联调负责人看板、联调执行阶段看板、联调期限记录、联调逾期清单、联调批量标记、联调阻断摘要复制、联调场次信息记录、联调 JSON 快照导入导出、联调分类进度、联调验收结论复制、联调更新时间、联调证据记录、待补证据清单、联调交接报告、联调风险清单导出、联调归档包导出、联调收口签署字段和联调收口门禁;真实商户现场执行和更完整的后台/小程序管理界面仍待继续。M08-A 的真机合法域名、真实微信支付和实物开门验证按外部条件阻塞保留,不阻断 M08-B 工程推进。
## 提交
- 最近工程提交:`M08-B保洁员端统计看板增量`
- 上次远端校验:待本轮工程提交后回填。