发布与核销解耦原子修复验证 改变分支/字段: - apps/backend/src/services/worker-platform/admin-work-order-management-service.ts:发布先完成,随后尽力核销;核销失败仅记录 publish_voucher_consume_failed,不改变已发布状态。 - apps/backend/src/repositories/worker-platform/work-order-management-repo.ts:新增 publishUnassignedWorkOrder,使用 status='unassigned' AND assigned_worker_id IS NULL 的原子条件迁移,并在同一事务写 published 事件。 - apps/frontend/src/pages/admin/panels/WorkOrdersPanel.tsx:发布后核销提示。 - apps/frontend/src/components/WorkOrderEventTimeline.tsx:核销失败文案改为“订单已发布,但电子凭证核销未完成”。 四个工件: - MODIFIED_FILE: /Users/yml/codes/order_site/publish-atomic-artifacts/MODIFIED_FILE - DIFF_FILE: /Users/yml/codes/order_site/publish-atomic-artifacts/DIFF_FILE.patch - VERIFICATION.txt: /Users/yml/codes/order_site/publish-atomic-artifacts/VERIFICATION.txt - ROLLBACK.sh: /Users/yml/codes/order_site/publish-atomic-artifacts/ROLLBACK.sh 原始文件哈希: - git HEAD work-order-management-repo.ts blob: 40937f3a95998868a217a5c3da78389f6c799224 - 修改副本 sha256: a7e256197ff04b4682a4b2817da30e7344ac0cda66818ecc9fe5711042957a85 BASELINE: - 命令:cd /Users/yml/codes/order_site/apps/backend && npm test - 输入:HEAD 基线工作树 - 字面结果:tests 379;pass 377;fail 0;cancelled 0;skipped 2;exit 0 - 状态:通过 MODIFIED: - 命令:cd /Users/yml/codes/order_site/apps/backend && npm test - 输入:当前修改工作树 - 字面结果:tests 379;pass 377;fail 0;cancelled 0;skipped 2;exit 0 - 状态:通过 ROLLBACK: - 命令:cp /Users/yml/codes/order_site/publish-atomic-artifacts/MODIFIED_FILE /tmp/publish-atomic-rollback-test.ts && /Users/yml/codes/order_site/publish-atomic-artifacts/ROLLBACK.sh /tmp/publish-atomic-rollback-test.ts && cmp /tmp/publish-atomic-rollback-test.ts <(git -C /Users/yml/codes/order_site show HEAD:apps/backend/src/repositories/worker-platform/work-order-management-repo.ts) - 输入:修改副本 /tmp/publish-atomic-rollback-test.ts - 字面结果:rollback restored HEAD content;cmp exit 0;ROLLBACK.sh exit 0 - 恢复状态:另一份副本恢复为 HEAD 内容,MODIFIED_FILE 保持修改内容。