fix: resolve architecture violations (239 → 221)
JavaScript Logging (18 violations fixed): - Replace console.log with centralized logger in marketplace.js - Replace console.log with centralized logger in vendor-themes.js - Replace console.log with centralized logger in settings.js - Replace console.log with centralized logger in imports.js API Layer Transaction Control (documented): - Add comments to db.commit() calls in companies.py - Document that commits at API level are intentional for transaction boundary control - Service layer handles business logic, API layer controls transactions Remaining Violations (221): - API-002: Database commits in endpoints (intentional for transaction control) - API-001: Raw dict responses (legacy code, will refactor incrementally) - Service layer patterns (legacy code, will refactor incrementally) Architecture Decision: Following standard pattern where: - Service Layer: Contains business logic - API Layer: Controls transaction boundaries (commit/rollback) This is a common and acceptable pattern in FastAPI applications.
This commit is contained in:
@@ -6,10 +6,10 @@
|
||||
// ✅ Use centralized logger
|
||||
const adminMarketplaceLog = window.LogConfig.loggers.marketplace;
|
||||
|
||||
console.log('[ADMIN MARKETPLACE] Loading...');
|
||||
adminMarketplaceLog.info('Loading...');
|
||||
|
||||
function adminMarketplace() {
|
||||
console.log('[ADMIN MARKETPLACE] adminMarketplace() called');
|
||||
adminMarketplaceLog.info('adminMarketplace() called');
|
||||
|
||||
return {
|
||||
// ✅ Inherit base layout state
|
||||
@@ -84,9 +84,9 @@ function adminMarketplace() {
|
||||
try {
|
||||
const response = await apiClient.get('/admin/vendors?limit=1000');
|
||||
this.vendors = response.vendors || [];
|
||||
console.log('[ADMIN MARKETPLACE] Loaded vendors:', this.vendors.length);
|
||||
adminMarketplaceLog.info('Loaded vendors:', this.vendors.length);
|
||||
} catch (error) {
|
||||
console.error('[ADMIN MARKETPLACE] Failed to load vendors:', error);
|
||||
adminMarketplaceLog.error('Failed to load vendors:', error);
|
||||
this.error = 'Failed to load vendors: ' + (error.message || 'Unknown error');
|
||||
}
|
||||
},
|
||||
@@ -97,7 +97,7 @@ function adminMarketplace() {
|
||||
onVendorChange() {
|
||||
const vendorId = parseInt(this.importForm.vendor_id);
|
||||
this.selectedVendor = this.vendors.find(v => v.id === vendorId) || null;
|
||||
console.log('[ADMIN MARKETPLACE] Selected vendor:', this.selectedVendor);
|
||||
adminMarketplaceLog.info('Selected vendor:', this.selectedVendor);
|
||||
|
||||
// Auto-populate CSV URL if marketplace is Letzshop
|
||||
this.autoPopulateCSV();
|
||||
@@ -128,9 +128,9 @@ function adminMarketplace() {
|
||||
const url = urlMap[this.importForm.language];
|
||||
if (url) {
|
||||
this.importForm.csv_url = url;
|
||||
console.log('[ADMIN MARKETPLACE] Auto-populated CSV URL:', this.importForm.language, url);
|
||||
adminMarketplaceLog.info('Auto-populated CSV URL:', this.importForm.language, url);
|
||||
} else {
|
||||
console.log('[ADMIN MARKETPLACE] No CSV URL configured for language:', this.importForm.language);
|
||||
adminMarketplaceLog.info('No CSV URL configured for language:', this.importForm.language);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -167,9 +167,9 @@ function adminMarketplace() {
|
||||
this.jobs = response.items || [];
|
||||
this.totalJobs = response.total || 0;
|
||||
|
||||
console.log('[ADMIN MARKETPLACE] Loaded my jobs:', this.jobs.length);
|
||||
adminMarketplaceLog.info('Loaded my jobs:', this.jobs.length);
|
||||
} catch (error) {
|
||||
console.error('[ADMIN MARKETPLACE] Failed to load jobs:', error);
|
||||
adminMarketplaceLog.error('Failed to load jobs:', error);
|
||||
this.error = error.message || 'Failed to load import jobs';
|
||||
} finally {
|
||||
this.loading = false;
|
||||
@@ -197,11 +197,11 @@ function adminMarketplace() {
|
||||
batch_size: this.importForm.batch_size
|
||||
};
|
||||
|
||||
console.log('[ADMIN MARKETPLACE] Starting import:', payload);
|
||||
adminMarketplaceLog.info('Starting import:', payload);
|
||||
|
||||
const response = await apiClient.post('/admin/marketplace-import-jobs', payload);
|
||||
|
||||
console.log('[ADMIN MARKETPLACE] Import started:', response);
|
||||
adminMarketplaceLog.info('Import started:', response);
|
||||
|
||||
const vendorName = this.selectedVendor?.name || 'vendor';
|
||||
this.successMessage = `Import job #${response.job_id || response.id} started successfully for ${vendorName}!`;
|
||||
@@ -221,7 +221,7 @@ function adminMarketplace() {
|
||||
this.successMessage = '';
|
||||
}, 5000);
|
||||
} catch (error) {
|
||||
console.error('[ADMIN MARKETPLACE] Failed to start import:', error);
|
||||
adminMarketplaceLog.error('Failed to start import:', error);
|
||||
this.error = error.message || 'Failed to start import';
|
||||
} finally {
|
||||
this.importing = false;
|
||||
@@ -244,7 +244,7 @@ function adminMarketplace() {
|
||||
if (url) {
|
||||
this.importForm.csv_url = url;
|
||||
this.importForm.language = language;
|
||||
console.log('[ADMIN MARKETPLACE] Quick filled:', language, url);
|
||||
adminMarketplaceLog.info('Quick filled:', language, url);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -284,9 +284,9 @@ function adminMarketplace() {
|
||||
this.selectedJob = response;
|
||||
}
|
||||
|
||||
console.log('[ADMIN MARKETPLACE] Refreshed job:', jobId);
|
||||
adminMarketplaceLog.info('Refreshed job:', jobId);
|
||||
} catch (error) {
|
||||
console.error('[ADMIN MARKETPLACE] Failed to refresh job:', error);
|
||||
adminMarketplaceLog.error('Failed to refresh job:', error);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -298,9 +298,9 @@ function adminMarketplace() {
|
||||
const response = await apiClient.get(`/admin/marketplace-import-jobs/${jobId}`);
|
||||
this.selectedJob = response;
|
||||
this.showJobModal = true;
|
||||
console.log('[ADMIN MARKETPLACE] Viewing job details:', jobId);
|
||||
adminMarketplaceLog.info('Viewing job details:', jobId);
|
||||
} catch (error) {
|
||||
console.error('[ADMIN MARKETPLACE] Failed to load job details:', error);
|
||||
adminMarketplaceLog.error('Failed to load job details:', error);
|
||||
this.error = error.message || 'Failed to load job details';
|
||||
}
|
||||
},
|
||||
@@ -403,7 +403,7 @@ function adminMarketplace() {
|
||||
);
|
||||
|
||||
if (hasActiveJobs) {
|
||||
console.log('[ADMIN MARKETPLACE] Auto-refreshing active jobs...');
|
||||
adminMarketplaceLog.info('Auto-refreshing active jobs...');
|
||||
await this.loadJobs();
|
||||
}
|
||||
}, 10000); // 10 seconds
|
||||
|
||||
Reference in New Issue
Block a user