{{-- Vista BY-AXIS — mesa de trabajo cross-product, 1 eje a la vez. Cada eje renderiza columnas distintas con acciones inline contextuales. Es donde se sienta el owner del rol (designer / copywriter / dev) a trabajar. --}} @push('styles') @endpush @php $currentAxis = $data['axis']; $axisUrl = fn($a) => route('reseller.factory.index', ['view' => 'by-axis', 'axis' => $a]); $axesMeta = [ 'tecnico' => ['label' => '⚙️ Técnico', 'desc' => 'cert score, paridad vista↔schema↔admin↔json'], 'comercial' => ['label' => '💬 Comercial', 'desc' => 'copy del marketplace (tagline, persona, value props, etc)'], 'visual' => ['label' => '🖼️ Visual', 'desc' => 'imagen catálogo + assets de landing'], 'seeds' => ['label' => '📝 Seeds', 'desc' => 'JSON de contenido por módulo del core'], ]; @endphp
Mesa de trabajo · {{ $axesMeta[$currentAxis]['label'] }}

{{ $axesMeta[$currentAxis]['desc'] }} · ordenado por % asc (los más críticos arriba)

{{-- Tabs de ejes --}}
@foreach($axesMeta as $key => $meta) {{ $meta['label'] }} @endforeach
{{-- ════════ EJE TÉCNICO ════════ --}} @if($currentAxis === 'tecnico') @foreach($data['rows'] as $row) @php $cls = $row['cert_score'] === 100 ? 'full' : ($row['cert_score'] >= 80 ? 'partial' : 'empty'); @endphp @endforeach {{-- ════════ EJE COMERCIAL ════════ --}} @elseif($currentAxis === 'comercial') @foreach($data['rows'] as $row) @php $cls = $row['pct'] >= 100 ? 'full' : ($row['pct'] >= 50 ? 'partial' : 'empty'); @endphp @foreach(['tagline','target_persona','pain_points','value_props','cta_primary','keywords'] as $f) @endforeach @endforeach {{-- ════════ EJE VISUAL ════════ --}} @elseif($currentAxis === 'visual') @foreach($data['rows'] as $row) @php $cls = $row['pct'] >= 80 ? 'full' : ($row['pct'] >= 30 ? 'partial' : 'empty'); @endphp {{-- Catalog image --}} {{-- Card image --}} {{-- Hero --}} {{-- Parallax --}} {{-- Grid 1·2·3 --}} @endforeach {{-- ════════ EJE SEEDS ════════ --}} @elseif($currentAxis === 'seeds') @foreach($data['rows'] as $row) @php $cls = $row['pct'] >= 100 ? 'full' : ($row['pct'] >= 60 ? 'partial' : 'empty'); $missing = collect($row['seeds'])->filter(fn($s) => !$s['exists'])->keys()->all(); @endphp @endforeach @endif
Producto Cert Críticos Dry-run Real Última cert Acción
{{ $row['name'] }}
{{ $row['slug'] }}
{{ $row['cert_score'] ?? '—' }}{{ $row['cert_score'] !== null ? '/100' : '' }} @if($row['cert_critical'] > 0) ⚠ {{ $row['cert_critical'] }} @else @endif @if($row['dryrun_pass'])@else@endif @if($row['real_pass'])@else@endif {{ $row['cert_at'] ? \Carbon\Carbon::parse($row['cert_at'])->diffForHumans() : '—' }} {{ $row['cmd_recert'] }}
Producto % tagline persona pain value cta keywords Acción
{{ $row['name'] }}
{{ $row['slug'] }}
{{ $row['pct'] }}% @if($row['fields'][$f]['filled']) @else @endif Editar
Producto % Catálogo
(/products-catalogue)
Card Hero Parallax Grid 1·2·3
{{ $row['name'] }}
{{ $row['slug'] }}
{{ $row['pct'] }}% @if($row['first_catalog']) @else
@endif
@csrf
@if($row['card_image']) @else
@endif
@csrf
@if($row['hero_poster']) @else
@endif
@csrf
@if($row['parallax_image']) @else
@endif
@csrf
@foreach(['grid_image_1','grid_image_2','grid_image_3'] as $g) @if($row[$g]) @else @endif @endforeach
Producto % Seeds por módulo del core Faltantes
{{ $row['name'] }}
{{ $row['slug'] }}
{{ $row['pct'] }}% @foreach($row['seeds'] as $mod => $info) @if($info['exists']) ✓ {{ $mod }} @else ✗ {{ $mod }} @endif @endforeach @if(count($missing) > 0)
Crear: {{ count($missing) }} seed(s) en database/seeders/products/core/seeds/
@foreach($missing as $m) {{ $m }}-{{ $row['core_slug'] }}.json @endforeach @else completo @endif
Mesa de trabajo por rol. @if($currentAxis === 'visual') Designer: subí imágenes directamente desde cualquier celda. Click ⬆ + seleccioná archivo. @elseif($currentAxis === 'comercial') Copywriter: click "Editar" para abrir el row de products y completar los campos faltantes (✗). @elseif($currentAxis === 'tecnico') Dev: si el cert score es < 100, copiá el comando y corré --verbose-details para ver qué falla. @elseif($currentAxis === 'seeds') Dev: cada seed faltante es un JSON nuevo en database/seeders/products/core/seeds/. @endif