{{ t.message }}
📁 Step 1 — Select Data Source
📊
Drop your .xlsx file here or click to browse
Supports .xlsx and .xls files
{{ uploadedFile.original_filename }}
{{ (uploadedFile.size / 1024).toFixed(1) }} KB
Google credentials not configured. Go to Admin tab to upload your Google Cloud service account JSON.
Share your sheet with {{ gsheetServiceEmail }} (Editor permission required).
Share the sheet with the service account email (Editor permission).
⚙️ Step 2 — Configure Columns
{{ preview.sheet_names.length }} sheets available
Use Row {{ cl }}
{{ row.row_number }} {{ cell.substring(0, 40) }}
📊 Processing Progress {{ activeJob.status.toUpperCase() }}
{{ activeJob.processed_rows + activeJob.failed_rows }} / {{ activeJob.total_rows }} rows {{ progressPct.toFixed(1) }}%
{{ activeJob.total_rows }}
Total
{{ activeJob.matched_rows }}
Matched
{{ Math.max(0, activeJob.processed_rows - activeJob.matched_rows) }}
Unmatched
{{ activeJob.failed_rows }}
Failed
Written to Google Sheet
{{ activeJob.error_message }}
📋 Job History
📭

No jobs yet. Upload an Excel file to get started.

{{ j.job_name || j.original_filename }}
#{{ j.id }} · {{ j.status.toUpperCase() }} · {{ j.processed_rows }}/{{ j.total_rows }} rows · {{ j.matched_rows }} matched · Threshold: {{ j.match_threshold }}% · {{ formatDate(j.created_at) }}
GSheet
🔍 {{ detailJob.job_name || detailJob.original_filename }} {{ detailJob.status.toUpperCase() }}
🔗 Open Google Sheet Threshold: {{ detailJob.match_threshold }}% · {{ detailJob.processed_rows + detailJob.failed_rows }}/{{ detailJob.total_rows }} rows
{{ detailJob.total_rows }}
Total
{{ detailJob.matched_rows }}
Matched
{{ Math.max(0, detailJob.processed_rows - detailJob.matched_rows) }}
Unmatched
{{ detailJob.failed_rows }}
Failed
{{ detailProgressPct.toFixed(1) }}%
Status:
Result:
RowCommentScoreResultStatus
{{ r.row_number }} {{ r.comment_text }} {{ r.match_score != null ? r.match_score.toFixed(1) + '%' : '—' }} OK No {{ r.status }}
⚙️ Settings
{{ s.key }}
{{ s.description }}

No settings.

🔑 Change Password
🔗 Google Sheets Integration
{{ gsheetConfigured ? 'Credentials configured' : 'No credentials uploaded' }}
Google Cloud Console → IAM → Service Accounts. Share your sheet with the service account email.
🛠 Maintenance
Removes cached downloaded images. Next job will re-download.