build( max(2, (int) ($this->option('threshold') ?? config('newsroom.merge.collection_threshold'))), max(1, (int) $this->option('limit')), ); if ($this->option('json')) { $this->line((string) json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)); return self::SUCCESS; } $g = $data['gesamt']; $this->info('Trockenlauf Newsroom-Konsolidierung — es wird nichts geschrieben.'); $this->newLine(); $this->line(sprintf(' Firmen gesamt: %d', $g['firmen'])); $this->line(sprintf(' Adressen mit mehr als einer Firma: %d (%d Firmen)', $g['adressen_mehrfach'], $g['firmen_mehrfach'])); $this->line(sprintf(' Schwellwert Sammeladresse (E1): ab %d abweichenden Namen', $data['schwellwert'])); $this->newLine(); $rows = []; $mergeable = 0; foreach ($data['klassen'] as $class) { $rows[] = [ $class['klasse'], $class['adressen'], $class['firmen'], $class['faellt_weg'] > 0 ? $class['faellt_weg'] : '–', $class['firmen_mit_pm'], $class['beschreibung'], ]; $mergeable += $class['faellt_weg']; } $this->table(['Klasse', 'Adressen', 'Firmen', 'fällt weg', 'davon mit PM', 'Bedeutung'], $rows); $this->line(sprintf( ' Eine automatische Zusammenführung würde %d Firmen zu bestehenden Newsrooms verschmelzen.', $mergeable, )); if ($data['nie_veroeffentlicht'] !== []) { $this->newLine(); $this->warn('Adressen ohne jede Veröffentlichung — von jeder automatischen Aktion ausnehmen:'); $this->table( ['Adresse', 'Namen', 'Firmen', 'davon mit PM'], array_map( static fn (array $row): array => [$row['email'], $row['namen'], $row['firmen'], $row['firmen_mit_pm']], $data['nie_veroeffentlicht'], ), ); $this->line(' Viele Namen, nie etwas veröffentlicht. Darunter sind Platzhalter wie yahoo@yahoo.com,'); $this->line(' hinter denen gar keine Firma steht — würde über sie zusammengeführt, verschmölzen'); $this->line(' tausende unbeteiligte Firmen zu einem Newsroom. Es können aber auch inaktive'); $this->line(' Agenturen darunter sein. Deshalb: einzeln ansehen, nichts automatisch tun.'); } if ($data['sammeladressen'] !== []) { $this->newLine(); $this->line('Sammeladressen — Kandidaten für das Agenturmodell (3.3):'); $this->table( ['Adresse', 'Namen', 'Firmen', 'davon mit PM', 'Beispiele'], array_map( static fn (array $row): array => [ $row['email'], $row['namen'], $row['firmen'], $row['firmen_mit_pm'], $row['beispiele'], ], $data['sammeladressen'], ), ); } return self::SUCCESS; } }