Commit Graph

4 Commits (e4703b6fb4da0108bbdf73a55fdb6038679181d6)

Author SHA1 Message Date
Council d7d7b33c96 council(review): BackendArchitect - Fix 2 bugs in P0-A/B/P1 implementations
1. SeatSkuService: Fix regex in getExistingSpecBaseIds()
   (\d+)排(\d+)座 → (\d+)排(\d)座
   The original regex incorrectly captures 2 digit groups in "A排10座",
   causing seatId parse failure for column >= 10.

2. ticket_detail.html: Fix specBaseIdMap access in submit()
   (obj||{}).spec_base_id → direct numeric value
   PHP returns integers (not objects), so drop the .spec_base_id accessor.

关联:Issue #9

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 20:05:08 +08:00
Council 93b70d4d50 council(execute): FrontendDev - Issue #9 P1 submit() refactor (seat-level goods_params)
- renderSeatMap(): add data-row-label + data-col-num attrs for specBaseIdMap key format
- toggleSeat(): change seatKey from "0_0" (numeric) to "A_1" (label_colNum) to match specBaseIdMap
- removeSeat(): use [data-row-label][data-col-num] selector
- submit(): refactor from 1 goods_params (zone-level) to N entries (seat-level, stock=1)
- Plan B fallback: if specBaseIdMap[key] missing, use sessionSpecId

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 19:56:25 +08:00
Council 098bcfe780 fix(P0): P0-1 idempotent ticket issuance, P0-3 XSS, P0-4 QR secret exception
P0-1: issueTicket() now checks for existing tickets by (order_id, spec_base_id)
      before inserting. Prevents duplicate tickets on HTTP retry/multi-instance.
P0-3: Removed |raw from simple_desc and content in ticket_detail.html.
      Prevents stored XSS via malicious admin content injection.
P0-4: getQrSecret() now throws exception if VR_TICKET_QR_SECRET is unset,
      instead of falling back to insecure default key.
2026-04-15 16:59:22 +08:00
Council 1afd547444 feat: import ShopXO v6.8.0 sourcecode (vendor/runtime excluded)
- ShopXO core + plugins/vr_ticket
- Goods.php item_type=ticket routing (Phase 1)
- vr_ticket plugin skeleton (Phase 0/1)
- Admin auth Base controller (Phase 2)
- All Phase 0/1/2 code included

Closes: tracks all ShopXO core modifications in monorepo
2026-04-15 13:09:44 +08:00