Team-Statistik: Neu-Badge-Link kannte $selectedTree nicht (ViewException auf Produktion)
Die Closure fuer den Link des gruenen "+N"-Badges band die neue Variable nicht per use ein; sobald eine Linie neue Abos zaehlte, brach die Uebersicht mit "Undefined variable $selectedTree" ab. Regressionstest rendert die Uebersicht mit einem neuen Teamabo und prueft den Badge-Link. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
96545364f1
commit
44637d06a7
3 changed files with 52 additions and 2 deletions
|
|
@ -99,3 +99,19 @@ eine Differenz von 82 Punkten — genau der Drift-User dieses Monats.
|
|||
Nicht in diesem Commit und weiterhin nicht committet: die Arbeit aus anderen Themen im selben
|
||||
Arbeitsbaum (DHL, DATEV, Newsletter-Listen, Berater-Übertragung, DSGVO-Löschung, `shipped_at`,
|
||||
Kundenabo-Legenden).
|
||||
|
||||
---
|
||||
|
||||
## Nachtrag 14.09.2026 — Übersicht brach mit „Undefined variable $selectedTree" ab
|
||||
|
||||
Kurz nach dem Deploy meldete Produktion auf `/user/backoffice/statistics` eine ViewException. Die
|
||||
Link-Closure für das grüne „+N"-Badge (neue Abos im Monat) in `index.blade.php` band die neue
|
||||
Variable `$selectedTree` nicht per `use` ein. Der Fehler trat nur auf, wenn in einer Linie neue Abos
|
||||
gezählt wurden — die Tests hatten die Übersicht bis dahin nie mit gefüllten Zeilen gerendert.
|
||||
|
||||
**Behebung:** `use (..., $selectedTree)` an der Closure, dazu ein Regressionstest, der die Übersicht
|
||||
mit einem neuen Teamabo rendert und den Badge-Link samt `tree=`-Parameter prüft
|
||||
(`BackofficeStatisticsDrilldownTest`). Ohne den Fix schlägt er mit genau dieser Meldung fehl.
|
||||
|
||||
**Deployment:** nur `resources/views/user/backoffice/statistics/index.blade.php`, danach
|
||||
`php artisan view:clear`. Keine Migration, keine Daten.
|
||||
|
|
|
|||
|
|
@ -115,14 +115,14 @@
|
|||
|
||||
// Ziel-Link des grünen "+N"-Badges: Neupartner-Liste bzw. Abo-Drilldown
|
||||
// gefiltert auf die im Monat neuen Abos (only_new).
|
||||
$newBadgeLink = function (int $lineNo, string $metric) use ($selectedMonth, $selectedYear): string {
|
||||
$newBadgeLink = function (int $lineNo, string $metric) use ($selectedMonth, $selectedYear, $selectedTree): string {
|
||||
if ($metric === 'consultants') {
|
||||
return route('user_backoffice_statistics_details', [
|
||||
'line' => $lineNo,
|
||||
'metric' => 'new_partners',
|
||||
'month' => $selectedMonth,
|
||||
'year' => $selectedYear,
|
||||
'tree' => $selectedTree,
|
||||
'tree' => $selectedTree,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ use App\Models\UserSalesVolume;
|
|||
use App\Services\Abo\TeamAboOverviewService;
|
||||
use App\Services\Backoffice\BackofficeDashboardService;
|
||||
use App\Services\Backoffice\BackofficeDrilldownService;
|
||||
use App\Services\HTMLHelper;
|
||||
use App\User;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
|
|
@ -337,3 +338,36 @@ it('haengt die Sortierwerte an die Zellen der Drilldown-Tabelle (A14)', function
|
|||
->toContain('data-sort-value="2026-12-10"')
|
||||
->toContain('data-sort-value="20"');
|
||||
});
|
||||
|
||||
it('rendert die Uebersicht mit dem Neu-Badge samt Baum-Parameter (Regression: Closure ohne $selectedTree)', function (): void {
|
||||
URL::resolveMissingNamedRoutesUsing(fn (string $name, $parameters = []) => '/'.$name.'?'.http_build_query($parameters));
|
||||
|
||||
$root = boMakeUser();
|
||||
$anna = boMakeUser($root->id, '2026-03-15');
|
||||
boMakeAbo($anna->id, 'me', '2026-06-10', 20);
|
||||
$this->actingAs($root);
|
||||
|
||||
$statistics = app(BackofficeDashboardService::class)->overview($root, 6, 2026);
|
||||
|
||||
expect($statistics['totals']['team_partner_abos_new'])->toBe(1);
|
||||
|
||||
// Das gruene "+1"-Badge wird nur gerendert, wenn es neue Abos gibt — erst dann
|
||||
// laeuft die Link-Closure, die auf Produktion mit "Undefined variable
|
||||
// $selectedTree" abbrach (14.09.2026).
|
||||
$html = view('user.backoffice.statistics.index', [
|
||||
'selectedMonth' => 6,
|
||||
'selectedYear' => 2026,
|
||||
'selectedTree' => BackofficeDashboardService::TREE_COMMISSION,
|
||||
'treeLabels' => BackofficeDashboardService::treeLabels(),
|
||||
'filterMonths' => HTMLHelper::getTransMonths(),
|
||||
'filterYears' => HTMLHelper::getYearRange(2022),
|
||||
'statistics' => $statistics,
|
||||
'performance' => ['duration_ms' => 1.0, 'source' => 'live', 'source_label' => 'Live', 'calculated_at' => null],
|
||||
'commission' => null,
|
||||
])->render();
|
||||
|
||||
expect($html)
|
||||
->toContain('backoffice-statistics-click-badge')
|
||||
->toContain('only_new=1')
|
||||
->toContain('tree=commission');
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue