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);
|
||||
}
|
||||
|
||||
.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 */
|
||||
.pdf-price {
|
||||
font-weight: 600;
|
||||
|
||||
@@ -464,6 +464,9 @@ function renderPDFItem(pdf: DocumentProxy, section: 'pending' | 'basket' | 'prod
|
||||
break;
|
||||
}
|
||||
|
||||
// Show detailed error info for erroneous documents
|
||||
const hasErrorDetails = pdf.binectStatus === 'failed' && pdf.errorMessage && pdf.binectStatusCode === 7;
|
||||
|
||||
return `
|
||||
<div class="pdf-list-item ${statusClass}" data-id="${escapeHtml(pdf.id)}">
|
||||
<div class="pdf-item-icon">${getStatusIcon(pdf.binectStatus)}</div>
|
||||
@@ -478,6 +481,7 @@ function renderPDFItem(pdf: DocumentProxy, section: 'pending' | 'basket' | 'prod
|
||||
</div>
|
||||
${pdf.recipientAddress ? `<div class="pdf-item-recipient">${escapeHtml(pdf.recipientAddress.split('\n')[0])}</div>` : ''}
|
||||
<div class="pdf-item-status ${statusClass}">${statusText}</div>
|
||||
${hasErrorDetails ? `<div class="pdf-item-error">${escapeHtml(pdf.errorMessage!)}</div>` : ''}
|
||||
</div>
|
||||
<div class="pdf-item-actions">
|
||||
${actionsHtml}
|
||||
@@ -896,6 +900,8 @@ async function handleRefreshStatus(id: string) {
|
||||
newStatus = 'sent';
|
||||
} else if (result.status === 6) {
|
||||
newStatus = 'canceled';
|
||||
} else if (result.status === 7) {
|
||||
newStatus = 'failed'; // Erroneous
|
||||
} else if (result.status === 3 || result.status === 4) {
|
||||
newStatus = 'in_production';
|
||||
} else if (result.status === 2) {
|
||||
@@ -906,7 +912,8 @@ async function handleRefreshStatus(id: string) {
|
||||
binectStatus: result.status,
|
||||
binectStatusText: result.statusText,
|
||||
price: result.price,
|
||||
recipientAddress: result.recipientAddress
|
||||
recipientAddress: result.recipientAddress,
|
||||
errorMessage: result.errorDetails
|
||||
};
|
||||
|
||||
// Update in background
|
||||
@@ -923,6 +930,7 @@ async function handleRefreshStatus(id: string) {
|
||||
pdf.binectStatusText = result.statusText;
|
||||
if (result.price) pdf.price = result.price;
|
||||
if (result.recipientAddress) pdf.recipientAddress = result.recipientAddress;
|
||||
if (result.errorDetails) pdf.errorMessage = result.errorDetails;
|
||||
renderPDFList();
|
||||
|
||||
} catch (error) {
|
||||
|
||||
@@ -334,6 +334,7 @@ export interface DocumentStatusInfo {
|
||||
statusText: string;
|
||||
price?: number;
|
||||
recipientAddress?: string;
|
||||
errorDetails?: string; // Error details for erroneous documents
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -425,17 +426,25 @@ export async function getDocumentStatus(
|
||||
// Extract price and recipient if available
|
||||
let price: number | undefined;
|
||||
let recipientAddress: string | undefined;
|
||||
let errorDetails: string | undefined;
|
||||
|
||||
if (doc.letter?.letterData) {
|
||||
price = doc.letter.letterData.price?.priceAfterTax;
|
||||
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 {
|
||||
status: doc.status.code,
|
||||
statusText: doc.status.text || getStatusText(doc.status.code),
|
||||
price,
|
||||
recipientAddress,
|
||||
errorDetails,
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('[Binect API] Get status error:', error);
|
||||
|
||||
Reference in New Issue
Block a user