From 85111c70e733b96495f5a718ff8175a2e532bff8 Mon Sep 17 00:00:00 2001 From: Thorsten Bus Date: Mon, 2 Mar 2026 11:01:48 +0100 Subject: [PATCH] feat: add CTS API request logging with searchable frontend UI --- .sisyphus/evidence/task-6-api-log-filter.png | Bin 0 -> 50376 bytes .sisyphus/evidence/task-6-api-log-nav.png | Bin 0 -> 28641 bytes .sisyphus/evidence/task-6-api-log-page.png | Bin 0 -> 63863 bytes .sisyphus/evidence/task-6-migration-tests.txt | 245 ++++++++++++++++++ .../notepads/cts-bugfix-features/learnings.md | 172 ++++++++++++ app/Http/Controllers/ApiLogController.php | 40 +++ app/Models/ApiRequestLog.php | 63 +++++ app/Services/ChurchToolsService.php | 74 +++++- ...2_100000_create_api_request_logs_table.php | 31 +++ resources/js/Layouts/AuthenticatedLayout.vue | 16 +- resources/js/Pages/ApiLogs/Index.vue | 172 ++++++++++++ routes/web.php | 3 + tests/Feature/ApiLogControllerTest.php | 133 ++++++++++ 13 files changed, 944 insertions(+), 5 deletions(-) create mode 100644 .sisyphus/evidence/task-6-api-log-filter.png create mode 100644 .sisyphus/evidence/task-6-api-log-nav.png create mode 100644 .sisyphus/evidence/task-6-api-log-page.png create mode 100644 .sisyphus/evidence/task-6-migration-tests.txt create mode 100644 .sisyphus/notepads/cts-bugfix-features/learnings.md create mode 100644 app/Http/Controllers/ApiLogController.php create mode 100644 app/Models/ApiRequestLog.php create mode 100644 database/migrations/2026_03_02_100000_create_api_request_logs_table.php create mode 100644 resources/js/Pages/ApiLogs/Index.vue create mode 100644 tests/Feature/ApiLogControllerTest.php diff --git a/.sisyphus/evidence/task-6-api-log-filter.png b/.sisyphus/evidence/task-6-api-log-filter.png new file mode 100644 index 0000000000000000000000000000000000000000..01af55c57db17e2ed8156f69bb4729fd18e7f1c6 GIT binary patch literal 50376 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 r92laVpWnUz@cw@myZ@Tj literal 0 HcmV?d00001 diff --git a/.sisyphus/evidence/task-6-api-log-nav.png b/.sisyphus/evidence/task-6-api-log-nav.png new file mode 100644 index 0000000000000000000000000000000000000000..4db2d5166c0fed8c0ce07090ed47dd4ab81bed36 GIT binary patch literal 28641 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

SBVsU}Nw?Vx1!_o$8H@e)t zRngp)e#=}~T(JJkU*SVe=Ech!_PC^BM2fk-lLF8x=;vYSxMW^VP2;Oav4~Js%e5vD z%a)pAqZTDn&RDvDnp1w&jg=n<-d~{$SuqzPqxS#M@bT@-b6Zd>6hYhb<#lB-^S^q5}-unoubloG)GCn2h5M z(?Lomw!a2J9My8^N`Fp}cX1t;PH=MQVlUf{E;PV75vah7#)@A>mW9rsUn zfZU1fZ9n^Hnd5tmd@>zwOBaNNV{s>ULj~h%iuHoq`P*^<{m95}$l^)C*AfjHyiUmp zhL#H~ef#1!c^~Xz?%C&tf)qf_>LfI*Ih9$>$Y9t4!%5Gm=U`>`G&kNom@p{?hqyM>WpJCL+(F^ z&CC-qh~n|uy8@urXtTb5SNAW+j7#DwtBY5Q=RHsx*28!yexkDu*1d#$`X0O$E!pQY$zvRRmkcK*m%+z(&2I)ikin_C1yQ@e2 zD*o?iJ$eHb@z+HZe`d?7%xjFBrsbB(vKZ1J&w!mjNI&SF=1}moxyEVh<%4%XihY5fdgi0rL z$|Z;;KkQA-ar_~8>mvlpe^-#NWIS?yA<^QSo@N$+X5jCkMb`6FFLvA!PyZ%u*#k$9 z@ADqMM8pS7u{Z*wuA_Z~j_Bq)Ww2eF(F6+tf_7K%d^4Y^Me5#hqgVt|wuBe)S5&2v;;B$+l^2H~<|lwvXFTKwJn>UwwR1M7g{}@^6+V;Y6-sb{+h_z*vZQ@KW_t9H zcF1_ch2WAKiI=6|hFkNA3DC8I5`M{=Q-47vexu_4>Qrh|P&;TDIdWz<+#t*ZsP5eB z$e#^Zd+3^@I!YiyO=nqWOCNibKeO3<^DSqQd~akoNy{1$DtkN3Yn(Xs2Wr?!6XcZ* za{Snx6W^Ud64@8V6++jxrbXe)FoI&`-Kw{613wcz89>WWmw8twB5V^HFDfhC_S=#& zzP5nl7~z5b8#^Wr1fjeUSte<5Pu#Ah{Wwgq{ieap5?lQU6bN0OvSeYo?Ena=b{jmK zgnd5?YEDS}2KCCsqZ4Df0kL#MnD!q|Kqd*lga<8qSBf4i7UN5QedH&vGlpqHNa}bI zoy+dE$mx7K36zgT20y;yYN}*xnbVNjrbi!OMUe?-@W0z!0gS)|{%{tEI9DxuNd_TZ zwLl#YNvDWdAmBW8?$h%qMP0|%F04Fu4k94MRiQtTVW%95m;Ssq2`P^I?%6F?Dd%E> zks;_$$ZEPwT3@(z%e&vX+as;u7Bt5+*8a6SEUS>WF$>xl7bua!Xh9Zw`JfacPzA)armv?c0fun#=u{`sRT1 z4xZbxR$@8?P`otFUYhJKBBss(0iqD9tx6lgyZL>;Z*2UB(R!(ju(_N$FM`xzJtdF< zZI3&6%FcsI=lO}g>ED7S-K{gh)NC51T7kO+UdNy3zaBpy-M3(ncPc~3d{3=-oj3AJ(OQN0GM{4C`Y=E6zYypYNqtaew#(`y+dQy;r;Skkm$OgHUYHv9C+plCM$ zADr=6{UZm|zLiV@12;k3r%HFIat@E#UI78*$2Vnn^~(02LCTJlJI5F$S~h1LdUgGp z>8ysMQ`T<<_-CF^Wo*5>;az+N-Jxw^)V;HN0G<6W{MHb`aI>LkCwz4O0Y(sB3Nyxg z`deU?`%UHH1De-xaI-P&tagHe)Fx2Y`!-ScV*Yq2V;s_#lt z$AT)7PFpB-yaxn~=20~#bLzLN2-P6HbHH*Iq-uKv=7SoIN1!~8HHSPDA&Pk=7d(em zKflFQ)?p2}ao_jD4cPkE=p{tkoSnIu7%(K7og351ElrM&o84TB&1>D{}K3iu8W{w(1-3()w_HPe{=lbSds%f&8ykpx|GqUG-^e{U-!-`}aL z1{ECCKp3b%(4f94J|jkM_9`g#z~xuoeiv=QwXgND*bh?{T)uLI-rf8Mh7Z+%i<4*pr++m~_sGH$?-{-d7BFKg$^xP4hW{|g+LNLoTdB)VEnp9ItS etvIvZAz>t$;h6fDGdLq5an%@hsrc7B5C0EsdDN)@ literal 0 HcmV?d00001 diff --git a/.sisyphus/evidence/task-6-api-log-page.png b/.sisyphus/evidence/task-6-api-log-page.png new file mode 100644 index 0000000000000000000000000000000000000000..0fdaf35e852eb6cbc2cee5a917177178a5d9557c GIT binary patch literal 63863 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

{ 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�F78Rq=jF)t_GF)Vu=Q@mdC%<*dRh@)q1CY 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'error', 'Sync fehlgeschlagen: ' . $e->getMessage())` +- On success: kept existing success message + +### Pattern: Direct Service Call vs Artisan +**PREFER**: Direct service injection for web controllers +- Better error handling (catch actual exceptions) +- Better testability (mock service easily) +- No need to parse console output +- Clearer dependency graph + +**USE ARTISAN**: Only for scheduled tasks, CLI operations, or when you need console output formatting + +### Testing Pattern +- Created SyncControllerTest.php with Mockery mocks +- Mocked ChurchToolsService to throw exception +- Verified error message propagates to session flash +- Required authentication: `$this->actingAs($user)` +- All 178 tests pass (2 new tests added) + +### Files Modified +- `app/Http/Controllers/SyncController.php` - replaced Artisan::call with direct service call +- `tests/Feature/SyncControllerTest.php` - new test file with error propagation tests + +### Actual Error Found +Running `php artisan cts:sync` revealed: "Agenda for event [823] not found." +This is now properly surfaced to users instead of generic error message. + +## Task 4: Archived Services Toggle + +**Implementation:** +- Backend: Modified `ServiceController::index()` to accept `archived` query param + - `archived=1` filters services with `date < today` ordered descending + - Default (no param or `archived=0`) shows `date >= today` ordered ascending + - Passed `archived` boolean to frontend via Inertia +- Frontend: Added pill-style toggle in header with "Kommende" / "Vergangene" labels + - Active state shown with blue background (`bg-blue-600 text-white`) + - Inactive state shown with gray (`text-gray-700 hover:bg-gray-100`) + - Click triggers `router.get()` with `archived` param + - Empty state text changes conditionally based on archived state + - Header description updates based on archived state + +**Testing:** +- Added two new Pest tests in `ServiceControllerTest.php`: + - `test_services_index_zeigt_nur_zukuenftige_services_standardmaessig` + - `test_services_index_zeigt_vergangene_services_mit_archived_parameter` +- All 176 tests pass (2 pre-existing failures unrelated to this task) +- Playwright verification confirmed toggle works correctly in browser + +**Patterns:** +- Inertia router preserves state/scroll with `preserveState: true, preserveScroll: true` +- Conditional rendering in Vue using ternary operators for text content +- Dynamic class binding with array syntax for active/inactive states +- Backend query conditional logic using if/else for different filters + +**Evidence:** +- Screenshot: `.sisyphus/evidence/task-4-archived-toggle.png` +- Commit: `8dc26b8` - "feat: add archived services toggle to services list" + +## Task 6: CTS API Request Logging + UI (2026-03-02) + +### Backend Pattern +- Zentrale Logging-Helfermethode in `ChurchToolsService` (`logApiCall`) kapselt Timing, Erfolg/Fehler und Exception-Re-throw. +- So bleiben Fachmethoden (`fetchEvents`, `fetchSongs`, `syncAgenda`, `getEventServices`) lesbar und Logging ist konsistent. +- `response_summary` sollte kurz bleiben (z. B. "Array mit X Eintraegen"), um DB-Eintraege klein und schnell durchsuchbar zu halten. + +### Datenmodell/Filter +- Tabelle `api_request_logs` mit `status` + `created_at` Indexen reicht fuer schnelle Standardfilter (Status + Neueste zuerst). +- Eloquent-Scopes `byStatus()` und `search()` halten Controller schlank und wiederverwendbar. +- `search()` ueber `method`, `endpoint`, `error_message` deckt die wichtigsten Debug-Faelle ab. + +### Frontend/Inertia Pattern +- Debounced Suche (300ms) mit `router.get(..., { replace: true, preserveState: true })` verhindert History-Spam. +- Fehlerzeilen visuell hervorheben (`bg-red-50`) + rote Status-Badges verbessert Scanbarkeit deutlich. +- Laravel-Pagination kann direkt als `logs.links` in Vue gerendert werden (`Link` + `withQueryString()`). + +### QA/Verification +- Nach Klick auf "Daten aktualisieren" erscheinen sofort neue API-Log-Eintraege inkl. Fehlerdetails (z. B. Agenda not found). +- Pflicht-Evidenz fuer Task 6: + - `.sisyphus/evidence/task-6-api-log-page.png` + - `.sisyphus/evidence/task-6-api-log-filter.png` + - `.sisyphus/evidence/task-6-api-log-nav.png` + - `.sisyphus/evidence/task-6-migration-tests.txt` + + +## Task 5: Reposition Upload Area to Right of Slides Grid + +**Layout Pattern:** +- Used `flex flex-col lg:flex-row-reverse gap-6` wrapper around SlideUploader + SlideGrid +- `flex-row-reverse` keeps HTML order (uploader first, grid second) but visually flips on desktop +- Mobile (`flex-col`): uploader on top, grid below +- Desktop (`lg:flex-row-reverse`): grid left (~70%), uploader right (~30%) +- Uploader wrapper: `lg:w-1/3` +- Grid wrapper: `flex-1 lg:w-2/3` + +**SlideUploader CSS Changes:** +- Reduced `.v3-dropzone` min-height: 160px → 120px +- Reduced `.v3-dropzone` padding: `2rem 1.5rem` → `1.5rem 1rem` +- These make the dropzone more compact in the narrower column + +**Gotcha:** +- Edit tool can merge closing `` tags when replacement ends with `` and the next existing line is also `` +- Always verify HTML structure after edits by checking the build passes +- The build error "Element is missing end tag" immediately reveals unbalanced tags + +**Files Modified:** +- `resources/js/Components/Blocks/InformationBlock.vue` - flex wrapper +- `resources/js/Components/Blocks/ModerationBlock.vue` - flex wrapper +- `resources/js/Components/Blocks/SermonBlock.vue` - flex wrapper +- `resources/js/Components/SlideUploader.vue` - reduced dropzone size + +**Verification:** +- ✅ Build passes (npm run build) +- ✅ All 178 tests pass +- ✅ Desktop screenshot: grid left, uploader right, all three blocks identical +- ✅ Mobile screenshot: stacked vertically, uploader on top +- ✅ No LSP diagnostics errors diff --git a/app/Http/Controllers/ApiLogController.php b/app/Http/Controllers/ApiLogController.php new file mode 100644 index 0000000..faf7664 --- /dev/null +++ b/app/Http/Controllers/ApiLogController.php @@ -0,0 +1,40 @@ +string('search')->toString(); + $status = request()->string('status')->toString(); + + $logs = ApiRequestLog::query() + ->search($search) + ->byStatus($status) + ->orderByDesc('created_at') + ->paginate(25) + ->withQueryString() + ->through(fn (ApiRequestLog $log) => [ + 'id' => $log->id, + 'created_at' => $log->created_at?->toJSON(), + 'method' => $log->method, + 'endpoint' => $log->endpoint, + 'status' => $log->status, + 'duration_ms' => $log->duration_ms, + 'error_message' => $log->error_message, + ]); + + return Inertia::render('ApiLogs/Index', [ + 'logs' => $logs, + 'filters' => [ + 'search' => $search, + 'status' => $status, + ], + ]); + } +} diff --git a/app/Models/ApiRequestLog.php b/app/Models/ApiRequestLog.php new file mode 100644 index 0000000..3e93803 --- /dev/null +++ b/app/Models/ApiRequestLog.php @@ -0,0 +1,63 @@ + 'array', + 'created_at' => 'datetime', + 'updated_at' => 'datetime', + ]; + } + + public function syncLog(): BelongsTo + { + return $this->belongsTo(CtsSyncLog::class, 'sync_log_id'); + } + + public function scopeByStatus(Builder $query, ?string $status): Builder + { + if ($status === null || $status === '') { + return $query; + } + + return $query->where('status', $status); + } + + public function scopeSearch(Builder $query, ?string $search): Builder + { + if ($search === null || trim($search) === '') { + return $query; + } + + $term = '%' . trim($search) . '%'; + + return $query->where(function (Builder $builder) use ($term): void { + $builder + ->where('method', 'like', $term) + ->orWhere('endpoint', 'like', $term) + ->orWhere('error_message', 'like', $term); + }); + } +} diff --git a/app/Services/ChurchToolsService.php b/app/Services/ChurchToolsService.php index 97dfde5..ddd94d9 100644 --- a/app/Services/ChurchToolsService.php +++ b/app/Services/ChurchToolsService.php @@ -2,6 +2,7 @@ namespace App\Services; +use App\Models\ApiRequestLog; use CTApi\CTConfig; use CTApi\Models\Events\Event\EventAgendaRequest; use CTApi\Models\Events\Event\EventRequest; @@ -124,7 +125,12 @@ public function syncAgenda(int $eventId): mixed return EventAgendaRequest::fromEvent($id)->get(); }; - return $fetcher($eventId); + return $this->logApiCall( + 'syncAgenda', + 'agenda', + fn (): mixed => $fetcher($eventId), + ['event_id' => $eventId] + ); } public function getEventServices(int $eventId): array @@ -137,7 +143,12 @@ public function getEventServices(int $eventId): array return $event?->getEventServices() ?? []; }; - return $fetcher($eventId); + return $this->logApiCall( + 'getEventServices', + 'event_services', + fn (): array => $fetcher($eventId), + ['event_id' => $eventId] + ); } private function fetchEvents(): array @@ -148,7 +159,7 @@ private function fetchEvents(): array return EventRequest::where('from', Carbon::now()->toDateString())->get(); }; - return $fetcher(); + return $this->logApiCall('fetchEvents', 'events', fn (): array => $fetcher()); } private function fetchSongs(): array @@ -159,7 +170,62 @@ private function fetchSongs(): array return SongRequest::all(); }; - return $fetcher(); + return $this->logApiCall('fetchSongs', 'songs', fn (): array => $fetcher()); + } + + private function logApiCall(string $method, string $endpoint, Closure $operation, ?array $context = null): mixed + { + $start = microtime(true); + + try { + $result = $operation(); + $duration = (int) ((microtime(true) - $start) * 1000); + + ApiRequestLog::create([ + 'method' => $method, + 'endpoint' => $endpoint, + 'status' => 'success', + 'request_context' => $context, + 'response_summary' => $this->summarizeResponse($result), + 'duration_ms' => $duration, + ]); + + return $result; + } catch (\Throwable $e) { + $duration = (int) ((microtime(true) - $start) * 1000); + + ApiRequestLog::create([ + 'method' => $method, + 'endpoint' => $endpoint, + 'status' => 'error', + 'request_context' => $context, + 'error_message' => $e->getMessage(), + 'duration_ms' => $duration, + ]); + + throw $e; + } + } + + private function summarizeResponse(mixed $result): ?string + { + if ($result === null) { + return null; + } + + if (is_array($result)) { + return 'Array mit ' . count($result) . ' Eintraegen'; + } + + if (is_scalar($result)) { + return Str::limit((string) $result, 500); + } + + if (is_object($result)) { + return 'Objekt vom Typ ' . $result::class; + } + + return null; } private function configureApi(): void diff --git a/database/migrations/2026_03_02_100000_create_api_request_logs_table.php b/database/migrations/2026_03_02_100000_create_api_request_logs_table.php new file mode 100644 index 0000000..a23bb5f --- /dev/null +++ b/database/migrations/2026_03_02_100000_create_api_request_logs_table.php @@ -0,0 +1,31 @@ +id(); + $table->string('method'); + $table->string('endpoint'); + $table->enum('status', ['success', 'error']); + $table->json('request_context')->nullable(); + $table->text('response_summary')->nullable(); + $table->text('error_message')->nullable(); + $table->unsignedInteger('duration_ms'); + $table->foreignId('sync_log_id')->nullable()->constrained('cts_sync_log')->nullOnDelete(); + $table->timestamps(); + + $table->index('status'); + $table->index('created_at'); + }); + } + + public function down(): void + { + Schema::dropIfExists('api_request_logs'); + } +}; diff --git a/resources/js/Layouts/AuthenticatedLayout.vue b/resources/js/Layouts/AuthenticatedLayout.vue index a32d1b7..5db0d83 100644 --- a/resources/js/Layouts/AuthenticatedLayout.vue +++ b/resources/js/Layouts/AuthenticatedLayout.vue @@ -108,8 +108,15 @@ function triggerSync() { > Song-Datenbank + + API-Log + Song-Datenbank + + API-Log + diff --git a/resources/js/Pages/ApiLogs/Index.vue b/resources/js/Pages/ApiLogs/Index.vue new file mode 100644 index 0000000..9a13d3c --- /dev/null +++ b/resources/js/Pages/ApiLogs/Index.vue @@ -0,0 +1,172 @@ + + + diff --git a/routes/web.php b/routes/web.php index dce4193..fa483f8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ name('songs.index'); + Route::get('/api-logs', [ApiLogController::class, 'index'])->name('api-logs.index'); + Route::post('/songs/{song}/arrangements', '\\App\\Http\\Controllers\\ArrangementController@store')->name('arrangements.store'); Route::post('/arrangements/{arrangement}/clone', '\\App\\Http\\Controllers\\ArrangementController@clone')->name('arrangements.clone'); Route::put('/arrangements/{arrangement}', '\\App\\Http\\Controllers\\ArrangementController@update')->name('arrangements.update'); diff --git a/tests/Feature/ApiLogControllerTest.php b/tests/Feature/ApiLogControllerTest.php new file mode 100644 index 0000000..a256955 --- /dev/null +++ b/tests/Feature/ApiLogControllerTest.php @@ -0,0 +1,133 @@ +withoutVite(); + $user = User::factory()->create(); + + ApiRequestLog::create([ + 'method' => 'fetchEvents', + 'endpoint' => 'events', + 'status' => 'success', + 'duration_ms' => 124, + ]); + + $response = $this->actingAs($user)->get(route('api-logs.index')); + + $response->assertOk(); + $response->assertInertia( + fn ($page) => $page + ->component('ApiLogs/Index') + ->has('logs.data', 1) + ->where('logs.data.0.method', 'fetchEvents') + ->where('filters.search', '') + ->where('filters.status', '') + ); + } + + public function test_api_log_index_filtert_nach_suche(): void + { + $this->withoutVite(); + $user = User::factory()->create(); + + ApiRequestLog::create([ + 'method' => 'fetchEvents', + 'endpoint' => 'events', + 'status' => 'success', + 'duration_ms' => 101, + ]); + + ApiRequestLog::create([ + 'method' => 'syncAgenda', + 'endpoint' => 'agenda', + 'status' => 'error', + 'error_message' => 'Agenda not found', + 'duration_ms' => 222, + ]); + + $response = $this->actingAs($user)->get(route('api-logs.index', ['search' => 'fetchEvents'])); + + $response->assertOk(); + $response->assertInertia( + fn ($page) => $page + ->component('ApiLogs/Index') + ->has('logs.data', 1) + ->where('logs.data.0.method', 'fetchEvents') + ->where('filters.search', 'fetchEvents') + ); + } + + public function test_api_log_index_filtert_nach_status(): void + { + $this->withoutVite(); + $user = User::factory()->create(); + + ApiRequestLog::create([ + 'method' => 'fetchSongs', + 'endpoint' => 'songs', + 'status' => 'success', + 'duration_ms' => 77, + ]); + + ApiRequestLog::create([ + 'method' => 'getEventServices', + 'endpoint' => 'event_services', + 'status' => 'error', + 'error_message' => 'Service not found', + 'duration_ms' => 309, + ]); + + $response = $this->actingAs($user)->get(route('api-logs.index', ['status' => 'error'])); + + $response->assertOk(); + $response->assertInertia( + fn ($page) => $page + ->component('ApiLogs/Index') + ->has('logs.data', 1) + ->where('logs.data.0.status', 'error') + ->where('filters.status', 'error') + ); + } + + public function test_api_request_log_scopes_funktionieren(): void + { + ApiRequestLog::create([ + 'method' => 'fetchEvents', + 'endpoint' => 'events', + 'status' => 'success', + 'duration_ms' => 51, + ]); + + ApiRequestLog::create([ + 'method' => 'syncAgenda', + 'endpoint' => 'agenda', + 'status' => 'error', + 'error_message' => 'Agenda not found', + 'duration_ms' => 120, + ]); + + $countErrorWithSearch = ApiRequestLog::query() + ->byStatus('error') + ->search('agenda') + ->count(); + + $countWithoutFilter = ApiRequestLog::query() + ->byStatus('') + ->search('') + ->count(); + + $this->assertSame(1, $countErrorWithSearch); + $this->assertSame(2, $countWithoutFilter); + } +}