Files
TicketAssistent/app/Services/TicketIngestionService.php
SitiWeb f939133fe0 Add admin views for quick replies, settings, and ticket details
- Created `quick-replies.blade.php` for managing quick replies.
- Added `settings.blade.php` for admin settings management.
- Implemented `ticket-show.blade.php` to display ticket details.
- Introduced `timeline-card.blade.php` component for displaying timeline information.

Enhance quick reply management functionality

- Developed `quick-reply-manager.blade.php` for creating and editing quick replies.
- Integrated Livewire for dynamic interaction and validation.

Implement settings page for AI configuration

- Created `settings-page.blade.php` for managing AI settings, including prompts and provider instances.
- Added functionality for managing models and embeddings.

Add ticket show functionality with real-time updates

- Implemented ticket details view with processing status and tool call logs.
- Added support for displaying article suggestions and error messages.

Create unit tests for AI classifier and domain info tool

- Added `AIClassifierServiceTest.php` to validate AI classifier functionality.
- Implemented `DomainInfoToolTest.php` for domain parameter validation.
- Created `OxxaClientTest.php` to test API interactions and password hashing.
2026-04-30 01:50:21 +02:00

50 lines
1.2 KiB
PHP

<?php
namespace App\Services;
use App\Jobs\ProcessTicketJob;
use App\Models\Ticket;
class TicketIngestionService
{
public function __construct(
private readonly TicketProcessingLoggerService $logger,
) {}
public function ingest(string $message, ?array $apiCredentials = null): array
{
$ticket = Ticket::query()->create([
'message' => $message,
'status' => 'queued',
'api_credentials' => $this->sanitizeCredentials($apiCredentials),
]);
$this->logger->log($ticket, 'queued', 'info', 'Ticket in queue geplaatst.');
ProcessTicketJob::dispatch($ticket->id);
return [
'ticket' => $ticket,
'result' => null,
];
}
private function sanitizeCredentials(?array $apiCredentials): ?array
{
if ($apiCredentials === null) {
return null;
}
$apiuser = trim((string) ($apiCredentials['apiuser'] ?? ''));
$apipassword = trim((string) ($apiCredentials['apipassword'] ?? ''));
if ($apiuser === '' || $apipassword === '') {
return null;
}
return [
'apiuser' => $apiuser,
'apipassword' => $apipassword,
];
}
}