From 3df1c1874b84d00b49464ef962029b64c33eca7e Mon Sep 17 00:00:00 2001 From: Dave Date: Sun, 30 Aug 2026 12:58:56 +0200 Subject: [PATCH] feat(orders): add on-demand delivery-note match re-check route Thin wrapper around suggestDeliveryNoteForOrder(id). The route mirrors the quote matcher's /quote-match endpoint for the case where an order's items were edited after intake, or the order predates the automatic intake check. Co-Authored-By: Claude --- .../orders/[id]/delivery-note-match/route.ts | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/app/api/v1/orders/[id]/delivery-note-match/route.ts diff --git a/src/app/api/v1/orders/[id]/delivery-note-match/route.ts b/src/app/api/v1/orders/[id]/delivery-note-match/route.ts new file mode 100644 index 0000000..70f12b7 --- /dev/null +++ b/src/app/api/v1/orders/[id]/delivery-note-match/route.ts @@ -0,0 +1,33 @@ +import { NextRequest, NextResponse } from "next/server"; +import { suggestDeliveryNoteForOrder } from "@/lib/server/order-delivery-note-link-service"; + +/** + * POST /api/v1/orders/[id]/delivery-note-match + * + * Re-run delivery-note repeat-order detection for one order on demand + * — for the case where an order's items were edited after intake, or + * the order predates this feature. Orders created from now on are + * checked automatically at intake (see createOrder in + * orders-service.ts). + * + * Visibility only — writes potential_delivery_note and its sibling + * fields, never touches order processing or pricing. + * + * Returns: SuggestDeliveryNoteResult — { orderId, best, method }. + */ +export const runtime = "nodejs"; +export const dynamic = "force-dynamic"; + +export async function POST( + _req: NextRequest, + { params }: { params: Promise<{ id: string }> }, +) { + try { + const { id } = await params; + const result = await suggestDeliveryNoteForOrder(id); + return NextResponse.json(result); + } catch (error) { + const message = error instanceof Error ? error.message : "Delivery-note match failed"; + return NextResponse.json({ error: message }, { status: 500 }); + } +}