feat: add remaining SEO audit fields - OG preview, meta keywords, diagnostics
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
Adds: H3 count, hreflang, meta keywords, canonical URL, noindex reason, Open Graph Facebook preview (image + title + description), portfolio, live chat detection, Google website URL, Google business categories, audit diagnostics section (source, version, errors). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
4839ac251a
commit
89cb997487
@ -272,6 +272,18 @@
|
||||
<span class="detail-label">Naglowki H2</span>
|
||||
<span class="detail-value">{{ analysis.h2_count if analysis.h2_count is not none else '-' }}</span>
|
||||
</div>
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Naglowki H3</span>
|
||||
<span class="detail-value">{{ analysis.h3_count if analysis.h3_count is not none else '-' }}</span>
|
||||
</div>
|
||||
{% if analysis.has_hreflang is not none %}
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Hreflang — wersje jezykowe</span>
|
||||
<span class="detail-value {% if analysis.has_hreflang %}yes{% else %}no{% endif %}">
|
||||
{% if analysis.has_hreflang %}Jest{% else %}Brak{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Obrazki ogolnie</span>
|
||||
<span class="detail-value">{{ analysis.total_images if analysis.total_images is not none else '-' }}</span>
|
||||
@ -304,8 +316,54 @@
|
||||
<div style="font-size: var(--font-size-sm); color: var(--text-primary);">{{ analysis.meta_description or analysis.seo_description }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if analysis.meta_keywords %}
|
||||
<div style="margin-top: var(--spacing-sm); padding: var(--spacing-md); background: var(--background); border-radius: var(--radius);">
|
||||
<div class="detail-label" style="margin-bottom: 4px;">Meta keywords (slowa kluczowe w kodzie strony):</div>
|
||||
<div style="font-size: var(--font-size-sm); color: var(--text-secondary);">{{ analysis.meta_keywords }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if analysis.canonical_url %}
|
||||
<div style="margin-top: var(--spacing-sm); padding: var(--spacing-md); background: var(--background); border-radius: var(--radius);">
|
||||
<div class="detail-label" style="margin-bottom: 4px;">Canonical URL — adres kanoniczny strony:</div>
|
||||
<div style="font-size: var(--font-size-sm); color: var(--text-primary); word-break: break-all;">{{ analysis.canonical_url }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if analysis.noindex_reason %}
|
||||
<div style="margin-top: var(--spacing-sm); padding: var(--spacing-md); background: #fef2f2; border-radius: var(--radius); border-left: 3px solid var(--danger);">
|
||||
<div class="detail-label" style="margin-bottom: 4px; color: var(--danger);">Powod blokady indeksowania:</div>
|
||||
<div style="font-size: var(--font-size-sm); color: var(--text-primary);">{{ analysis.noindex_reason }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<!-- Podglad Open Graph — jak strona wyglada na Facebooku -->
|
||||
{% if analysis.og_title or analysis.og_description or analysis.og_image %}
|
||||
<div class="section">
|
||||
<h2>Open Graph — podglad udostepnienia na Facebooku</h2>
|
||||
<p style="font-size: var(--font-size-xs); color: var(--text-secondary); margin-bottom: var(--spacing-md);">
|
||||
Tak wyglada link do tej strony udostepniony na Facebooku, LinkedIn czy Messengerze.
|
||||
</p>
|
||||
<div style="max-width: 500px; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; background: #f0f2f5;">
|
||||
{% if analysis.og_image %}
|
||||
<div style="width: 100%; height: 260px; background: #e4e6eb; display: flex; align-items: center; justify-content: center; overflow: hidden;">
|
||||
<img src="{{ analysis.og_image }}" alt="OG Image" style="width: 100%; height: 100%; object-fit: cover;" onerror="this.parentElement.innerHTML='<span style=\'color: var(--text-secondary); font-size: var(--font-size-sm);\'>Obrazek niedostepny</span>'">
|
||||
</div>
|
||||
{% else %}
|
||||
<div style="width: 100%; height: 80px; background: #e4e6eb; display: flex; align-items: center; justify-content: center;">
|
||||
<span style="color: var(--text-secondary); font-size: var(--font-size-sm);">Brak obrazka Open Graph</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div style="padding: var(--spacing-md);">
|
||||
<div style="font-size: 11px; color: #65676b; text-transform: uppercase;">{{ analysis.final_url or analysis.website_url or '' }}</div>
|
||||
<div style="font-weight: 600; font-size: var(--font-size-base); color: #050505; margin-top: 4px;">{{ analysis.og_title or analysis.meta_title or analysis.seo_title or 'Brak tytulu' }}</div>
|
||||
{% if analysis.og_description %}
|
||||
<div style="font-size: var(--font-size-sm); color: #65676b; margin-top: 4px; line-height: 1.3;">{{ analysis.og_description[:150] }}{% if analysis.og_description|length > 150 %}...{% endif %}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- Techniczne -->
|
||||
<div class="section">
|
||||
<h2>Dane techniczne</h2>
|
||||
@ -437,6 +495,18 @@
|
||||
<span class="detail-label">Formularz kontaktowy</span>
|
||||
<span class="detail-value {% if analysis.has_contact_form %}yes{% else %}no{% endif %}">{% if analysis.has_contact_form %}Jest{% else %}Brak{% endif %}</span>
|
||||
</div>
|
||||
{% if analysis.has_portfolio is not none %}
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Portfolio / Realizacje</span>
|
||||
<span class="detail-value {% if analysis.has_portfolio %}yes{% else %}no{% endif %}">{% if analysis.has_portfolio %}Jest{% else %}Brak{% endif %}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if analysis.has_live_chat is not none %}
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Live chat na stronie</span>
|
||||
<span class="detail-value {% if analysis.has_live_chat %}yes{% else %}no{% endif %}">{% if analysis.has_live_chat %}Jest{% else %}Brak{% endif %}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if analysis.broken_links_count is not none %}
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Zlamane linki</span>
|
||||
@ -665,12 +735,24 @@
|
||||
<span class="detail-value">{{ analysis.google_phone }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if analysis.google_website %}
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Strona WWW w Google</span>
|
||||
<span class="detail-value"><a href="{{ analysis.google_website }}" target="_blank" rel="noopener" style="color: var(--primary); font-size: 11px; word-break: break-all;">{{ analysis.google_website }}</a></span>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if analysis.google_business_status %}
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Status</span>
|
||||
<span class="detail-value {% if analysis.google_business_status == 'OPERATIONAL' %}yes{% endif %}">{{ analysis.google_business_status }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if analysis.google_types %}
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Kategorie w Google</span>
|
||||
<span class="detail-value" style="font-size: 11px;">{{ analysis.google_types|join(', ') }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if analysis.google_photos_count %}
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Zdjecia w Google</span>
|
||||
@ -916,6 +998,42 @@
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- Diagnostyka audytu -->
|
||||
{% if analysis and (analysis.audit_source or analysis.audit_errors or analysis.analyzed_at) %}
|
||||
<div class="section" style="opacity: 0.7;">
|
||||
<h2>Diagnostyka audytu</h2>
|
||||
<p style="font-size: var(--font-size-xs); color: var(--text-secondary); margin-bottom: var(--spacing-md);">
|
||||
Informacje techniczne o ostatnim uruchomieniu audytu.
|
||||
</p>
|
||||
<div class="detail-grid">
|
||||
{% if analysis.analyzed_at %}
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Data audytu</span>
|
||||
<span class="detail-value">{{ analysis.analyzed_at.strftime('%d.%m.%Y %H:%M') }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if analysis.audit_source %}
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Zrodlo danych</span>
|
||||
<span class="detail-value">{{ analysis.audit_source }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if analysis.audit_version %}
|
||||
<div class="detail-item">
|
||||
<span class="detail-label">Wersja audytu</span>
|
||||
<span class="detail-value">{{ analysis.audit_version }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if analysis.audit_errors %}
|
||||
<div style="margin-top: var(--spacing-md); padding: var(--spacing-md); background: #fef2f2; border-radius: var(--radius); border-left: 3px solid var(--danger);">
|
||||
<div class="detail-label" style="margin-bottom: 4px; color: var(--danger);">Bledy podczas audytu:</div>
|
||||
<div style="font-size: var(--font-size-sm); color: var(--text-primary); white-space: pre-wrap;">{{ analysis.audit_errors }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user