FP-1: P0 root cause — submit() uses URL redirect (GET) but Buy::Index()
expects POST for BuyDataStorage; URL goods_params never read.
FP-2: spec_base_id_map is a performance cache, not a necessity;
seatKey→spec_base_id can be queried at order time.
FP-3: Cart has zero value for single-event tickets; current implementation
already uses Buy chain (not Cart), only submit() delivery is broken.
FP-4: True P0 is onOrderPaid double-sale prevention; real-time sold-seat
display is P1 optimization; GetGoodsViewData() only returns first session.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>