Added 16 new PLA Matte refill-only colors and 3 PLA Wood spool-only colors. Updated admin panel to automatically handle Matte prefix and Wood finish. Fixed sale banner not displaying due to expired sale dates. Updated all active sales to expire in 7 days (November 7, 2025).
78 lines
2.4 KiB
JavaScript
78 lines
2.4 KiB
JavaScript
// Verification script to check consistency between frontend colors and migration
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
console.log('Verifying color consistency between frontend and backend...\n');
|
|
|
|
// Read frontend color definitions
|
|
const frontendFile = fs.readFileSync(
|
|
path.join(__dirname, '../src/data/bambuLabColors.ts'),
|
|
'utf8'
|
|
);
|
|
|
|
// Read migration file
|
|
const migrationFile = fs.readFileSync(
|
|
path.join(__dirname, '../database/migrations/019_add_new_bambu_colors_2025.sql'),
|
|
'utf8'
|
|
);
|
|
|
|
// Extract colors from frontend (looking for pattern: 'ColorName': { hex: '#HEXCODE' })
|
|
const frontendColorRegex = /'([^']+)':\s*\{\s*hex:\s*'(#[A-F0-9]{6})'/gi;
|
|
const frontendColors = {};
|
|
let match;
|
|
while ((match = frontendColorRegex.exec(frontendFile)) !== null) {
|
|
frontendColors[match[1]] = match[2];
|
|
}
|
|
|
|
// Extract new Matte colors from migration
|
|
const migrationColorRegex = /\('([^']+)',\s*'(#[A-F0-9]{6})'\)/gi;
|
|
const migrationColors = {};
|
|
while ((match = migrationColorRegex.exec(migrationFile)) !== null) {
|
|
migrationColors[match[1]] = match[2];
|
|
}
|
|
|
|
console.log('New colors added in migration 019:');
|
|
console.log('='.repeat(60));
|
|
|
|
let hasErrors = false;
|
|
|
|
// Check each migration color exists in frontend with same hex code
|
|
Object.keys(migrationColors).forEach(colorName => {
|
|
const migrationHex = migrationColors[colorName];
|
|
const frontendHex = frontendColors[colorName];
|
|
|
|
if (!frontendHex) {
|
|
console.log(`❌ ERROR: '${colorName}' missing in frontend`);
|
|
hasErrors = true;
|
|
} else if (frontendHex !== migrationHex) {
|
|
console.log(`❌ ERROR: '${colorName}' hex mismatch:`);
|
|
console.log(` Frontend: ${frontendHex}`);
|
|
console.log(` Migration: ${migrationHex}`);
|
|
hasErrors = true;
|
|
} else {
|
|
console.log(`✓ ${colorName}: ${frontendHex}`);
|
|
}
|
|
});
|
|
|
|
// Check if PLA Wood colors exist in frontend
|
|
console.log('\nPLA Wood colors (should already exist in frontend):');
|
|
console.log('='.repeat(60));
|
|
const woodColors = ['Ochre Yellow', 'White Oak', 'Clay Brown'];
|
|
woodColors.forEach(colorName => {
|
|
if (frontendColors[colorName]) {
|
|
console.log(`✓ ${colorName}: ${frontendColors[colorName]}`);
|
|
} else {
|
|
console.log(`❌ ERROR: '${colorName}' missing in frontend`);
|
|
hasErrors = true;
|
|
}
|
|
});
|
|
|
|
console.log('\n' + '='.repeat(60));
|
|
if (hasErrors) {
|
|
console.log('❌ VERIFICATION FAILED: Inconsistencies detected');
|
|
process.exit(1);
|
|
} else {
|
|
console.log('✓ VERIFICATION PASSED: All colors are consistent');
|
|
process.exit(0);
|
|
}
|