preg_match('/\[REF-(\d+)\]/', $subject, $m);
if ($existing = find_by_ref($m[1])) { append_reply($existing); }
同一个用户的问题在后台出现两条,一条来自表单,一条来自邮件解析,内容和时间几乎一样,客服回复了两遍。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,表单提交后会抄送一封邮件给工单系统,邮件解析又把同一封邮件建成工单。两边没有共享唯一标识,ref 号在邮件主题里被去掉了。
「反馈工单重复」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
处理上按这个顺序:表单提交时生成 ref 号,写进邮件主题;邮件解析先按 ref 号查重,存在就追加内容不新建;用同一份内容走两条通道测一次。
改完只确认一件事:一份反馈只生成一条工单,邮件回复追加在原记录下,不再出现重复条目。
