Context. This continues the design started in Casey's Slice 1 gist. Slice 1 (backend payment capture + completion gate) shipped as PR #90 on
feat/service-payment-capture. This document specifies the two remaining slices: the staff-facing 完成療程 dialog (Slice 2) and the redesigned/reportsledger page (Slice 3).
Payment.appointmentIdFK + index;Appointment.paymentsback-relationPAYMENT_METHODconstants:CASH·FPS·VISA·MASTERCARD·AE·ALIPAY·PAYME(plus legacySTRIPE·OTHER)