generated from coulomb/repo-seed
Show detailed error information for erroneous documents
- Extract error details from Binect API for documents with status 7 - Display error details in a highlighted box below the status - Map status 7 (ERRONEOUS) to 'failed' status in refresh handler - Add CSS styling for error details display Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -459,6 +459,21 @@ body {
|
|||||||
color: var(--text-light);
|
color: var(--text-light);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pdf-item-status.failed {
|
||||||
|
color: var(--red);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Error details for erroneous documents */
|
||||||
|
.pdf-item-error {
|
||||||
|
font-size: 10px;
|
||||||
|
color: var(--red);
|
||||||
|
margin-top: 4px;
|
||||||
|
padding: 4px 6px;
|
||||||
|
background: rgba(229, 57, 53, 0.08);
|
||||||
|
border-radius: 3px;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
/* Price display */
|
/* Price display */
|
||||||
.pdf-price {
|
.pdf-price {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|||||||
@@ -464,6 +464,9 @@ function renderPDFItem(pdf: DocumentProxy, section: 'pending' | 'basket' | 'prod
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Show detailed error info for erroneous documents
|
||||||
|
const hasErrorDetails = pdf.binectStatus === 'failed' && pdf.errorMessage && pdf.binectStatusCode === 7;
|
||||||
|
|
||||||
return `
|
return `
|
||||||
<div class="pdf-list-item ${statusClass}" data-id="${escapeHtml(pdf.id)}">
|
<div class="pdf-list-item ${statusClass}" data-id="${escapeHtml(pdf.id)}">
|
||||||
<div class="pdf-item-icon">${getStatusIcon(pdf.binectStatus)}</div>
|
<div class="pdf-item-icon">${getStatusIcon(pdf.binectStatus)}</div>
|
||||||
@@ -478,6 +481,7 @@ function renderPDFItem(pdf: DocumentProxy, section: 'pending' | 'basket' | 'prod
|
|||||||
</div>
|
</div>
|
||||||
${pdf.recipientAddress ? `<div class="pdf-item-recipient">${escapeHtml(pdf.recipientAddress.split('\n')[0])}</div>` : ''}
|
${pdf.recipientAddress ? `<div class="pdf-item-recipient">${escapeHtml(pdf.recipientAddress.split('\n')[0])}</div>` : ''}
|
||||||
<div class="pdf-item-status ${statusClass}">${statusText}</div>
|
<div class="pdf-item-status ${statusClass}">${statusText}</div>
|
||||||
|
${hasErrorDetails ? `<div class="pdf-item-error">${escapeHtml(pdf.errorMessage!)}</div>` : ''}
|
||||||
</div>
|
</div>
|
||||||
<div class="pdf-item-actions">
|
<div class="pdf-item-actions">
|
||||||
${actionsHtml}
|
${actionsHtml}
|
||||||
@@ -896,6 +900,8 @@ async function handleRefreshStatus(id: string) {
|
|||||||
newStatus = 'sent';
|
newStatus = 'sent';
|
||||||
} else if (result.status === 6) {
|
} else if (result.status === 6) {
|
||||||
newStatus = 'canceled';
|
newStatus = 'canceled';
|
||||||
|
} else if (result.status === 7) {
|
||||||
|
newStatus = 'failed'; // Erroneous
|
||||||
} else if (result.status === 3 || result.status === 4) {
|
} else if (result.status === 3 || result.status === 4) {
|
||||||
newStatus = 'in_production';
|
newStatus = 'in_production';
|
||||||
} else if (result.status === 2) {
|
} else if (result.status === 2) {
|
||||||
@@ -906,7 +912,8 @@ async function handleRefreshStatus(id: string) {
|
|||||||
binectStatus: result.status,
|
binectStatus: result.status,
|
||||||
binectStatusText: result.statusText,
|
binectStatusText: result.statusText,
|
||||||
price: result.price,
|
price: result.price,
|
||||||
recipientAddress: result.recipientAddress
|
recipientAddress: result.recipientAddress,
|
||||||
|
errorMessage: result.errorDetails
|
||||||
};
|
};
|
||||||
|
|
||||||
// Update in background
|
// Update in background
|
||||||
@@ -923,6 +930,7 @@ async function handleRefreshStatus(id: string) {
|
|||||||
pdf.binectStatusText = result.statusText;
|
pdf.binectStatusText = result.statusText;
|
||||||
if (result.price) pdf.price = result.price;
|
if (result.price) pdf.price = result.price;
|
||||||
if (result.recipientAddress) pdf.recipientAddress = result.recipientAddress;
|
if (result.recipientAddress) pdf.recipientAddress = result.recipientAddress;
|
||||||
|
if (result.errorDetails) pdf.errorMessage = result.errorDetails;
|
||||||
renderPDFList();
|
renderPDFList();
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -334,6 +334,7 @@ export interface DocumentStatusInfo {
|
|||||||
statusText: string;
|
statusText: string;
|
||||||
price?: number;
|
price?: number;
|
||||||
recipientAddress?: string;
|
recipientAddress?: string;
|
||||||
|
errorDetails?: string; // Error details for erroneous documents
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -425,17 +426,25 @@ export async function getDocumentStatus(
|
|||||||
// Extract price and recipient if available
|
// Extract price and recipient if available
|
||||||
let price: number | undefined;
|
let price: number | undefined;
|
||||||
let recipientAddress: string | undefined;
|
let recipientAddress: string | undefined;
|
||||||
|
let errorDetails: string | undefined;
|
||||||
|
|
||||||
if (doc.letter?.letterData) {
|
if (doc.letter?.letterData) {
|
||||||
price = doc.letter.letterData.price?.priceAfterTax;
|
price = doc.letter.letterData.price?.priceAfterTax;
|
||||||
recipientAddress = doc.letter.letterData.recipientAddress;
|
recipientAddress = doc.letter.letterData.recipientAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Extract error details for erroneous documents (status 7)
|
||||||
|
if (doc.status.code === 7 && doc.letter?.errors && doc.letter.errors.length > 0) {
|
||||||
|
errorDetails = doc.letter.errors.map(e => e.message).join('; ');
|
||||||
|
console.log('[Binect API] Document errors:', errorDetails);
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
status: doc.status.code,
|
status: doc.status.code,
|
||||||
statusText: doc.status.text || getStatusText(doc.status.code),
|
statusText: doc.status.text || getStatusText(doc.status.code),
|
||||||
price,
|
price,
|
||||||
recipientAddress,
|
recipientAddress,
|
||||||
|
errorDetails,
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('[Binect API] Get status error:', error);
|
console.error('[Binect API] Get status error:', error);
|
||||||
|
|||||||
Reference in New Issue
Block a user