news 2026/10/15 3:55:26

上门预约系统:预约状态和进度通知接口怎么拆

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
上门预约系统:预约状态和进度通知接口怎么拆

上门预约系统若把 push 发送写在状态事务里,通道超时会导致状态回滚或半成功。宜事务内只改 appointment 行,通知走 outbox 异步。

结论

状态真相在 appointments 表;notifier 读 event 推送,失败可重试。

func(s*Service)Dispatch(ctx context.Context,idstring,workerIDstring)error{returns.db.Tx(ctx,func(tx*sql.Tx)error{iferr:=tx.SetStatus(id,"dispatched",workerID);err!=nil{returnerr}returntx.InsertOutbox("AppointmentDispatched",id)})}

Tx 内改 status + outbox;notifier 失败可重试。

实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。

一、用户端轮询与 etag

GET /appointments/{id} 返回 status + updated_at,客户端 If-None-Match 减流量。关键节点 push 仅作提醒。

GET appointment etag 减流量。

实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。

二、时间窗 slot 模型

slot 表 (worker_id, start, end, status)。改约释放旧 slot、锁定新 slot 同一事务。

UPDATEslotsSETstatus='free'WHEREid=?;UPDATEslotsSETstatus='booked'WHEREid=?;

slot booked/free 同事务。

实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。

三、迟到计算

compare now() with window_end,写 delay_minutes 字段供客服与 export。

delay_minutes 写库。

实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。

四、验收附件

complete API 接受 media_ids,异步 virus scan 后挂 appointment。

media 异步 scan 后挂载。

实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。

五、测试单

is_test flag,报表默认排除。

is_test 过滤。

实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。

六、光合同城边界

国内综合版含预约状态机基础;复杂 SLA 引擎单列。

复杂 SLA 单列。

实施时建议固定 golden 样本单号,在预发与生产各留用户端、后台、导出三处截图;列名或状态枚举变更走书面版本号,避免财务周结时才发现对不上历史单。

七、slot 库存与并发

高并发改约场景下 slot 行宜乐观锁或 select for update,避免同一时段被两人同时预约。压测宜模拟改约高峰,而不只测下单峰值。预约窗口跨越 DST 变更时,存储 UTC 时间,展示按用户时区。师傅拒单后 slot 释放与 outbox 发取消通知同一事务,用户端看到「已取消」而非永久「待服务」。

延迟字段 delay_minutes 供 BI 与客服报表。export 含 worker_id、window_start、window_end、completed_at,财务按完成时间周结。is_test 预约默认不进营收报表,但宜在 QA 环境保留查询入口。

八、小结

拆通知与状态,用 outbox 保一致。试跑 dispatched→in_service→completed,用户端每步可见。拒单回退 booked 并释放 slot,outbox 发取消通知。导出宜含 worker_id、window、completed_at 供结算核对。上线后每月用同一 appointment_id 回归,确认用户端进度仍随师傅节点更新;列名变更 bump 版本并留财务 sample,避免周结对不上历史单。QA 环境保留 is_test 查询入口,便于复现进度不同步类缺陷而不污染正式报表。改约高峰前宜做 slot 并发压测,避免双 booking 与超卖时段,并留审计日志备查。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 3:55:25

叮当小宝CS管理篇:客服休假怎么交接?三张表让接手人零追问

交接做得好不好,不看文档写得多长,看接手人问了你几个问题。休假三天,如果同事追着你的微信问东问西,说明交接漏了关键信息;买家在一个问题上被反复求证,好感也磨没了。把事情压进三张表,别人接…

作者头像 李华
网站建设 2026/10/15 3:54:13

从评估模型到评估系统:Agent Harness 前沿评测技术全景

一个被忽视的10倍差距 两个Agent,使用完全相同的GPT-4模型,在同一个基准测试上跑出了截然不同的成绩:一套Harness的解题率只有2.7%,另一套则达到28.3%——相差超过10倍。这不是模型能力的差距,而是Harness设计带来的系…

作者头像 李华
网站建设 2026/10/15 3:53:57

GEO技术原理拆解:AI搜索如何重构企业内容的采信逻辑

一、GEO生成式引擎优化与传的四个常见问题传统SEO围绕关键词密度与外链数量构建排名逻辑,而GEO生成式引擎优化面对的是大模型的语义理解与信源筛选机制,二者在底层原理上已分道扬镳。许多企业发现,原先在搜索引擎中排名靠前的内容&#xff0c…

作者头像 李华
网站建设 2026/10/15 3:53:52

CCS与MATLAB联合仿真:音频算法定点化落地与避坑指南

简介:这份资源面向嵌入式音频开发初学者与算法移植实践者,聚焦CCS与MATLAB联合仿真在音效处理中的应用,重点解决音频倒放算法从MATLAB验证到DSP硬件部署的完整链路问题。包内共12个文件,涵盖C源码、MATLAB脚本、工程配置与调试日志…

作者头像 李华
网站建设 2026/10/15 3:53:24

Unity棋牌项目架构解析:MVC框架如何驱动麻将游戏开发

简介:由Unity引擎开发并遵循MVC架构的单人斗地主与麻将游戏完整工程,面向Unity学习者和游戏开发爱好者,也适合想深入理解棋牌游戏架构与AI实现的技术人员。资源包共1136个文件,约89.94MB,主要包含201个C#脚本、161张图…

作者头像 李华