fix(loyalty): normalize card id field, fix terminal redeem bug
Some checks failed
Some checks failed
The terminal redeem failed with "card not found: unknown" because CardLookupResponse used card_id while CardDetailResponse (from refreshCard) used id. After refresh, selectedCard.card_id was undefined. Fix: standardize on 'id' everywhere (the universal convention): - CardLookupResponse: card_id → id - _build_card_lookup_response: card_id= → id= - loyalty-terminal.js: selectedCard.card_id → selectedCard.id (5 refs) - Removed the card_id/model_validator approach as unnecessary Also fixes Chart.js recursion error on analytics page (inline CDN script instead of optional-libs.html include which caused infinite template recursion in test context). 342 tests pass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -284,7 +284,7 @@ function storeLoyaltyTerminal() {
|
||||
loyaltyTerminalLog.info('Adding stamp...');
|
||||
|
||||
await apiClient.post('/store/loyalty/stamp', {
|
||||
card_id: this.selectedCard.card_id,
|
||||
card_id: this.selectedCard.id,
|
||||
staff_pin: this.pinDigits
|
||||
});
|
||||
|
||||
@@ -296,7 +296,7 @@ function storeLoyaltyTerminal() {
|
||||
loyaltyTerminalLog.info('Redeeming stamps...');
|
||||
|
||||
await apiClient.post('/store/loyalty/stamp/redeem', {
|
||||
card_id: this.selectedCard.card_id,
|
||||
card_id: this.selectedCard.id,
|
||||
staff_pin: this.pinDigits
|
||||
});
|
||||
|
||||
@@ -308,7 +308,7 @@ function storeLoyaltyTerminal() {
|
||||
loyaltyTerminalLog.info('Earning points...', { amount: this.earnAmount });
|
||||
|
||||
const response = await apiClient.post('/store/loyalty/points/earn', {
|
||||
card_id: this.selectedCard.card_id,
|
||||
card_id: this.selectedCard.id,
|
||||
purchase_amount_cents: Math.round(this.earnAmount * 100),
|
||||
staff_pin: this.pinDigits
|
||||
});
|
||||
@@ -327,7 +327,7 @@ function storeLoyaltyTerminal() {
|
||||
loyaltyTerminalLog.info('Redeeming reward...', { reward: reward.name });
|
||||
|
||||
await apiClient.post('/store/loyalty/points/redeem', {
|
||||
card_id: this.selectedCard.card_id,
|
||||
card_id: this.selectedCard.id,
|
||||
reward_id: this.selectedReward,
|
||||
staff_pin: this.pinDigits
|
||||
});
|
||||
@@ -340,7 +340,7 @@ function storeLoyaltyTerminal() {
|
||||
// Refresh card data
|
||||
async refreshCard() {
|
||||
try {
|
||||
const response = await apiClient.get(`/store/loyalty/cards/${this.selectedCard.card_id}`);
|
||||
const response = await apiClient.get(`/store/loyalty/cards/${this.selectedCard.id}`);
|
||||
if (response) {
|
||||
this.selectedCard = response;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user