From c867962138414baf95ec1f86fc7fbae86bbb79b6 Mon Sep 17 00:00:00 2001 From: Maciej Pienczyn Date: Fri, 20 Feb 2026 14:52:37 +0100 Subject: [PATCH] fix: auto-select recommended logo in master workflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When "Uzbrój firmę" runs automatically, logo step now picks the recommended candidate instead of showing the gallery (which would be overwritten by page reload). Manual "Szukaj logo" still shows the gallery for admin selection. Co-Authored-By: Claude Opus 4.6 --- templates/admin/company_detail.html | 48 ++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/templates/admin/company_detail.html b/templates/admin/company_detail.html index ee04920..aaffa88 100644 --- a/templates/admin/company_detail.html +++ b/templates/admin/company_detail.html @@ -973,6 +973,51 @@ return runEnrichAction(btn, '/api/gbp/audit', {company_id: {{ company.id }}, fetch_google: true}); } + function fetchLogoAuto() { + /* Wersja logo dla trybu automatycznego — wybiera rekomendowanego kandydata */ + var btn = document.getElementById('btn-logo'); + var original = btn.innerHTML; + btn.disabled = true; + btn.innerHTML = ' Szukam logo...'; + + return fetch('/api/company/{{ company.id }}/fetch-logo', { + method: 'POST', + headers: {'Content-Type': 'application/json', 'X-CSRFToken': csrfToken}, + body: JSON.stringify({action: 'fetch'}) + }) + .then(function(r) { return r.json(); }) + .then(function(data) { + if (!data.success || !data.candidates || data.candidates.length === 0) { + btn.innerHTML = original; + btn.disabled = false; + showToast('Logo: brak kandydatów', 'warning'); + return false; + } + var pick = (data.recommended_index !== null && data.recommended_index !== undefined) + ? data.recommended_index : 0; + btn.innerHTML = ' Zapisuję logo...'; + return fetch('/api/company/{{ company.id }}/fetch-logo', { + method: 'POST', + headers: {'Content-Type': 'application/json', 'X-CSRFToken': csrfToken}, + body: JSON.stringify({action: 'confirm', index: pick}) + }) + .then(function(r) { return r.json(); }) + .then(function(res) { + btn.innerHTML = original; + btn.disabled = false; + if (res.success) { + showToast('Logo zapisane automatycznie (kandydat #' + (pick + 1) + ')', 'success'); + } + return res.success; + }); + }) + .catch(function() { + btn.innerHTML = original; + btn.disabled = false; + return false; + }); + } + function armCompany() { _skipReload = true; var masterBtn = document.getElementById('btn-arm'); @@ -984,7 +1029,7 @@ {id: 'btn-seo', fn: runSeoAudit, skip: {{ 'true' if enrichment.seo.done else 'false' }}, requires: {{ 'true' if company.website else 'false' }} }, {id: 'btn-social', fn: runSocialAudit, skip: {{ 'true' if enrichment.social.done else 'false' }}, requires: true }, {id: 'btn-gbp', fn: runGbpAudit, skip: {{ 'true' if enrichment.gbp.done else 'false' }}, requires: true }, - {id: 'btn-logo', fn: fetchLogo, skip: {{ 'true' if enrichment.logo.done else 'false' }}, requires: {{ 'true' if company.website else 'false' }} } + {id: 'btn-logo', fn: fetchLogoAuto, skip: {{ 'true' if enrichment.logo.done else 'false' }}, requires: {{ 'true' if company.website else 'false' }} } ]; var pending = steps.filter(function(s) { return !s.skip && s.requires; }); @@ -993,6 +1038,7 @@ showToast('Wszystkie kroki zostały już wykonane!', 'success'); masterBtn.disabled = false; masterBtn.innerHTML = ' Uzbrój firmę'; + _skipReload = false; return; }