问题现象:访客加了商品,登录后购物车变空或只保留旧客户购物车。先保存登录前后的quote_id,不要只看前端mini cart数量。

阶段实际操作
复现在测试账号中记录登录前Cookie、masked cart ID、quote_id、is_active和customer_id;登录后再次读取当前Quote。确认是否生成了第三个Quote。
取证使用标准Customer Account登录时,Checkout Session会执行客户Quote加载和merge。自定义SSO、手机号登录或GraphQL登录若只设置客户Session,可能完全跳过这一步。
修复修复流程应调用官方Quote合并服务,让访客Quote合并进客户活动Quote,再保存并停用旧Quote。不要用SQL直接改customer_id。
回归若同SKU没有合并数量,检查custom_options、buyRequest和扩展属性是否导致两个item不等价;这是合并规则,不是Quote丢失。

可直接执行的检查

SELECT entity_id,is_active,customer_id,items_count,items_qty,updated_at FROM quote WHERE entity_id IN (:guest_quote,:customer_quote);
SELECT quote_id,sku,qty,product_type FROM quote_item WHERE quote_id IN (:guest_quote,:customer_quote);

通过标准:测试客户原购物车为空和非空两种情况,同SKU与带自定义选项商品都覆盖;登录、退出再登录后只保留一个活动Quote且金额正确。

PWA/GraphQL还要确认客户端在登录后改用customerCart返回的新cart_id。