2.5 KiB
2.5 KiB
开发日志:2026-06-18 M01-C 轻量异步任务基础
完成内容
- 新增
qipai_outbox_events与qipai_async_tasks独立迁移、回滚和验证 SQL。 - outbox 与任务均使用租户级幂等键;重复写入返回既有记录,不产生重复副作用入口。
- 任务支持优先级、可执行时间、
FOR UPDATE SKIP LOCKED并发领取、worker 租约、过期租约恢复、指数退避和最大重试次数。 - 达到最大重试次数后进入
COMPENSATION_REQUIRED,保留最后错误供人工补偿。 - 新增通知、订单推进、设备命令、退款查询、统计汇总和 outbox 发布六类任务类型。
- 新增独立 worker 入口和
qipai-workerPM2 进程;具体业务 handler 由后续模块注册,不创建空业务实现。
数据库/API/部署影响
- 数据库:新增迁移版本
2026061802_m01c_async_tasks;down 先删除任务/outbox 表,再由历史迁移回滚核心表。 - API:无公开接口变化。
- 部署:PM2 增加
qipai-worker,与 API 共用后端构建产物和 MySQL 配置。
验证结果
npm test(backend/):退出码 0。powershell -ExecutionPolicy Bypass -File scripts/dev/windows/check-backend.ps1:退出码 0;编译、契约测试、迁移计划和 HTTP 健康检查通过。powershell -ExecutionPolicy Bypass -File scripts/dev/windows/check-secrets.ps1:退出码 0。- WSL 原生临时副本 + MySQL
8.4.9:up → verify → down → up → verify退出码 0;up 14 条、verify 6 条、down 13 条。 - 真实 MySQL 验证重复任务只保留一条;销毁第一个 Repository 后由新 Repository 领取并完成,证明 worker 重启不丢任务。
- 迁移摘要:up
5b381518ca8875e6bc5398e35d8627e56effa11618983412d5f41ca92c96ca9b;verify9b36eb26c7e4b2b884dca609fba172a2a0fbbfc828ec1376a8504afa798c6564;down20f8f37a0662c3f5a20ba207a4314c5c7df47bcfc64a60604696b2d9ee44dc2d。
边界与下一步
- 未连接生产数据库,未启动生产 PM2。
- 通知、订单、设备、退款和统计真实 handler 属于后续业务模块;M01-C 只提供可运行基础设施。
- 工作区已有未跟踪
miniapp/模板继续按ISSUE-007隔离,本提交不修改、不暂存。 - 下一阶段:M02-A 多小程序、多租户边界与微信登录身份基础。
Git
- commit:
2b90d1f feat(M01-C): 建立MySQL异步任务基础 - 远端:
origin/main - push/远端校验:成功,工程提交推送后
HEAD == origin/main。