- {quotes.map((quote, index) => (
-
- ))}
+
+
Result
+
{error || JSON.stringify(result, null, 2) || "No run yet."}
-
-
-
-
-
-
-
-
-
-
+
);
}
-
-function Recommendation({ result }) {
- return (
-
-
Recommendation
-
{result.recommendation.vendor}
-
{result.recommendation.reason}
-
- - Score
- {result.recommendation.score}
- - Quotes
- {result.quote_count}
- - Receipt
- {result.receipt?.receipt_id || "persisted by gateway"}
-
-
- | Vendor | Total | Days | Warranty | Score |
-
- {result.quotes?.map((quote) => (
-
- | {quote.vendor} |
- {quote.total_price} |
- {quote.delivery_days} |
- {quote.warranty_months} |
- {quote.scores.weighted_total} |
-
- ))}
-
-
-
- );
-}
-
-function EmptyOrError({ result }) {
- if (result && result.ok === false) {
- return
{result.code}
{result.message}
{result.action};
- }
- return
No comparison opened yet.
Run the success fixture or reopen a saved comparison to see ranked vendors and receipt details.
;
-}
-
-function fileToBase64(file) {
- return new Promise((resolve, reject) => {
- const reader = new FileReader();
- reader.onload = () => resolve(String(reader.result || "").split(",").pop() || "");
- reader.onerror = () => reject(reader.error || new Error("file read failed"));
- reader.readAsDataURL(file);
- });
-}