Informe até 500 números (um por linha ou separados por vírgula).
+ +{{ erro() }}
+ } + @if (result()) { ++ {{ result()!.total }} números · {{ result()!.encontradas }} com operadora resolvida +
+| Número | Canonical | Operadora | Fonte | Status |
|---|---|---|---|---|
| {{ item.numero }} | +{{ item.canonical }} | +{{ item.operadora ?? '—' }} | +{{ item.fonte ?? '—' }} | ++ + {{ item.encontrada ? 'resolvida' : 'não encontrada' }} + + | +
{{ erro() }}
} + @if (resumo(); as r) { +Faça consultas na aba "Consulta" e clique em Atualizar para ver métricas.
+ } + + `, + styles: [ + ` + .cards { display: flex; gap: 1rem; margin-bottom: 1.5rem; } + .card { + flex: 1; padding: 1rem; background: #f8fafc; border-radius: 8px; + display: flex; flex-direction: column; align-items: center; + } + .card .num { font-size: 1.8rem; font-weight: 700; color: #1d4ed8; } + .columns { display: flex; gap: 2rem; } + section { flex: 1; } + ul { list-style: none; padding: 0; } + li { padding: 0.3rem 0; border-bottom: 1px solid #e2e8f0; } + button { + margin-top: 1.5rem; padding: 0.5rem 1rem; border: none; border-radius: 6px; + background: #2563eb; color: #fff; cursor: pointer; + } + .muted { color: #64748b; } + .error { color: #b91c1c; } + `, + ], +}) +export class DashboardComponent implements OnInit { + private readonly bff = inject(BffService); + + readonly resumo = signal{{ erro() }}
} + @if (jobId()) { +Job: {{ jobId() }}
+Status: {{ status()?.status ?? '—' }}
+ @if (total > 0) { + +{{ processados }} / {{ total }} linhas · erros: {{ erros }}
+ } + @if (concluido()) { + ⬇ Baixar resultado (CSV) + } +