modified logic in chat bot
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / Gemini PR Review (pull_request) Has been cancelled
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Has been cancelled
Laravel Larastan / larastan (pull_request) Has been cancelled
Laravel Pint / pint (pull_request) Has been cancelled
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / Gemini PR Review (pull_request) Has been cancelled
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Has been cancelled
Laravel Larastan / larastan (pull_request) Has been cancelled
Laravel Pint / pint (pull_request) Has been cancelled
This commit is contained in:
@@ -51,9 +51,18 @@ class ChatBot extends Component
|
||||
|
||||
// ── Basic mode — Invoice status (scan status) ─────────────────────────────
|
||||
public string $invoiceNumber = '';
|
||||
public string $invoiceStatusResult = '';
|
||||
public string $invoiceStatusResult = ''; // kept for simple error strings
|
||||
public bool $hasInvoiceStatusResult = false;
|
||||
|
||||
/**
|
||||
* Structured result from ChatbotService::getInvoiceData().
|
||||
* Shape: type, message, invoice_number, total, scanned, not_scanned, unscanned_serials[]
|
||||
*/
|
||||
public array $invoiceStatusData = [];
|
||||
|
||||
/** Controls whether all unscanned serials are shown (vs the first 10). */
|
||||
public bool $showAllUnscanned = false;
|
||||
|
||||
// ── Advanced mode ─────────────────────────────────────────────────────────
|
||||
public string $advancedQuestion = '';
|
||||
public string $advancedResult = '';
|
||||
@@ -102,6 +111,8 @@ class ChatBot extends Component
|
||||
$this->hasInvoiceResult = false;
|
||||
$this->invoiceStatusResult = '';
|
||||
$this->hasInvoiceStatusResult = false;
|
||||
$this->invoiceStatusData = [];
|
||||
$this->showAllUnscanned = false;
|
||||
}
|
||||
|
||||
// ── Basic mode — Production helpers ──────────────────────────────────────
|
||||
@@ -304,11 +315,14 @@ class ChatBot extends Component
|
||||
{
|
||||
$this->invoiceStatusResult = '';
|
||||
$this->hasInvoiceStatusResult = false;
|
||||
$this->invoiceStatusData = [];
|
||||
$this->showAllUnscanned = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Looks up how many serials within an invoice have been scanned / not scanned.
|
||||
* Delegates to ChatbotService so the DB query and formatting logic live in one place.
|
||||
* Stores structured data in $invoiceStatusData so the blade can render
|
||||
* a "show more" serial-number list without dumping 70+ serials in one blob.
|
||||
*/
|
||||
public function fetchInvoiceStatus(): void
|
||||
{
|
||||
@@ -316,26 +330,48 @@ class ChatBot extends Component
|
||||
|
||||
if (empty($invoiceNumber)) {
|
||||
$this->invoiceStatusResult = 'Please enter a valid invoice number.';
|
||||
$this->invoiceStatusData = [];
|
||||
$this->showAllUnscanned = false;
|
||||
$this->hasInvoiceStatusResult = true;
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
/** @var ChatbotService $service */
|
||||
$service = app(ChatbotService::class);
|
||||
$this->invoiceStatusResult = $service->ask("invoice = {$invoiceNumber}");
|
||||
/** @var \App\Services\ChatbotService $service */
|
||||
$service = app(\App\Services\ChatbotService::class);
|
||||
$data = $service->getInvoiceData($invoiceNumber);
|
||||
} catch (\Throwable $e) {
|
||||
Log::error('ChatBot: invoice status fetch failed', [
|
||||
'invoice' => $invoiceNumber,
|
||||
'error' => $e->getMessage(),
|
||||
]);
|
||||
$this->invoiceStatusResult = "Sorry, I couldn't fetch data for invoice {$invoiceNumber}. "
|
||||
. 'Please try again or contact support.';
|
||||
$data = [
|
||||
'type' => 'error',
|
||||
'message' => "Sorry, I couldn't fetch data for invoice {$invoiceNumber}. "
|
||||
. 'Please try again or contact support.',
|
||||
'invoice_number' => $invoiceNumber,
|
||||
'total' => 0,
|
||||
'scanned' => 0,
|
||||
'not_scanned' => 0,
|
||||
'unscanned_serials' => [],
|
||||
];
|
||||
}
|
||||
|
||||
$this->invoiceStatusData = $data;
|
||||
$this->invoiceStatusResult = $data['message']; // fallback plain-text copy
|
||||
$this->showAllUnscanned = false;
|
||||
$this->hasInvoiceStatusResult = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggles the "show all / show less" state for unscanned serial numbers
|
||||
* in the Basic → Invoice Status result card.
|
||||
*/
|
||||
public function toggleShowAllUnscanned(): void
|
||||
{
|
||||
$this->showAllUnscanned = ! $this->showAllUnscanned;
|
||||
}
|
||||
|
||||
// ── Advanced mode (Gemini-powered) ────────────────────────────────────────
|
||||
|
||||
/**
|
||||
@@ -429,6 +465,8 @@ class ChatBot extends Component
|
||||
$this->invoiceNumber = '';
|
||||
$this->invoiceStatusResult = '';
|
||||
$this->hasInvoiceStatusResult = false;
|
||||
$this->invoiceStatusData = [];
|
||||
$this->showAllUnscanned = false;
|
||||
|
||||
// Advanced mode
|
||||
$this->clearAdvancedChat();
|
||||
|
||||
Reference in New Issue
Block a user