@extends('layouts.app') @section('title', 'Tags & Categories - HBL Product Scraper') @section('content')

Tags & Categories

Browse discovered categories and scraped product tags.
Export Products CSV Products
Source categories
{{ number_format($summary['categories']) }}
Tags
{{ number_format($summary['tags']) }}
Tag assignments
{{ number_format($summary['tagged_products']) }}
Mapped terms
{{ number_format($summary['mapped_terms']) }}
Unmapped terms
{{ number_format($summary['unmapped_terms']) }}
Saved category structure
@forelse($catalogCategories as $catalogCategory)
{{ $catalogCategory->name }} ({{ number_format($catalogCounts['categories'][$catalogCategory->id] ?? 0) }})
Export
@foreach($catalogCategory->subcategories as $subcategory) {{ $subcategory->name }} ({{ number_format($catalogCounts['subcategories'][$subcategory->id] ?? 0) }}) CSV @endforeach
@empty
Category structure has not been synced yet.
@endforelse
Mapping filter
Use this to focus on unmapped scraped terms first.
Categories {{ number_format($categories->count()) }}
@forelse($categories as $category) @empty @endforelse
Source termSuggested mainSuggested subUpdate mappingProducts
{{ $category->category }} {{ $category->mapping?->category?->name ?: '—' }} @if($category->mapping?->subcategory) {{ $category->mapping->subcategory->name }} @else Unmapped @endif
@csrf
{{ number_format($category->products_count) }} View products
No categories found yet.
Tags {{ number_format($tags->count()) }}
@forelse($tags as $tag) @empty @endforelse
TagSuggested mainSuggested subUpdate mappingProducts
{{ $tag->tag }} {{ $tag->mapping?->category?->name ?: '—' }} @if($tag->mapping?->subcategory) {{ $tag->mapping->subcategory->name }} @else Unmapped @endif
@csrf
{{ number_format($tag->products_count) }} View products
No tags found yet. Scrape product details to populate tags.
Mass save visible mappings
Saves every visible row that has a main category or subcategory selected. Blank rows are skipped.
@endsection @push('scripts') @endpush