Add per-store test_query for automated store testing
Each store can now have its own test_query (e.g., "logitech" for electronics stores). The "Test All" button uses each store's configured query instead of prompting — just click and watch. - Add test_query column (migration 003) - Add field to YAML sync, store forms, and route schema - Set test_query in HG Spot and Links.hr configs - Test All runs immediately using per-store queries - Hover test result to see which query was used Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@ export interface StoreFileConfig {
|
||||
search_url: string;
|
||||
enabled?: boolean;
|
||||
render_js?: boolean;
|
||||
test_query?: string;
|
||||
category?: string;
|
||||
currency?: string;
|
||||
selectors: {
|
||||
@@ -99,7 +100,7 @@ export function syncFromFiles(storesDir: string): { created: number; updated: nu
|
||||
if (existing) {
|
||||
db.run(`
|
||||
UPDATE stores SET
|
||||
name = ?, base_url = ?, search_url = ?, enabled = ?, render_js = ?,
|
||||
name = ?, base_url = ?, search_url = ?, enabled = ?, render_js = ?, test_query = ?,
|
||||
sel_container = ?, sel_name = ?, sel_price = ?, sel_link = ?, sel_image = ?,
|
||||
rate_limit = ?, rate_window = ?, proxy_url = ?, user_agent = ?, headers_json = ?,
|
||||
currency = ?, category_id = ?, updated_at = datetime('now')
|
||||
@@ -107,7 +108,7 @@ export function syncFromFiles(storesDir: string): { created: number; updated: nu
|
||||
`, [
|
||||
config.name, config.base_url, config.search_url,
|
||||
config.enabled === false ? 0 : 1,
|
||||
config.render_js ? 1 : 0,
|
||||
config.render_js ? 1 : 0, config.test_query || 'test',
|
||||
config.selectors.container, config.selectors.name,
|
||||
config.selectors.price, config.selectors.link,
|
||||
config.selectors.image || null,
|
||||
@@ -119,15 +120,15 @@ export function syncFromFiles(storesDir: string): { created: number; updated: nu
|
||||
updated++;
|
||||
} else {
|
||||
db.run(`
|
||||
INSERT INTO stores (name, slug, base_url, search_url, enabled, render_js,
|
||||
INSERT INTO stores (name, slug, base_url, search_url, enabled, render_js, test_query,
|
||||
sel_container, sel_name, sel_price, sel_link, sel_image,
|
||||
rate_limit, rate_window, proxy_url, user_agent, headers_json,
|
||||
currency, category_id)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
`, [
|
||||
config.name, slug, config.base_url, config.search_url,
|
||||
config.enabled === false ? 0 : 1,
|
||||
config.render_js ? 1 : 0,
|
||||
config.render_js ? 1 : 0, config.test_query || 'test',
|
||||
config.selectors.container, config.selectors.name,
|
||||
config.selectors.price, config.selectors.link,
|
||||
config.selectors.image || null,
|
||||
@@ -165,6 +166,7 @@ function storeToConfig(store: any, categoryName?: string): StoreFileConfig {
|
||||
if (store.sel_image) config.selectors.image = store.sel_image;
|
||||
if (store.enabled === 0) config.enabled = false;
|
||||
if (store.render_js) config.render_js = true;
|
||||
if (store.test_query && store.test_query !== 'test') config.test_query = store.test_query;
|
||||
if (categoryName) config.category = categoryName;
|
||||
if (store.currency && store.currency !== 'EUR') config.currency = store.currency;
|
||||
if (store.rate_limit && store.rate_limit !== 2) config.rate_limit = store.rate_limit;
|
||||
|
||||
Reference in New Issue
Block a user