@flowselections/floriday-authenticatie-module 1.0.75 → 1.0.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-lib/components/floriday/FlorydayApiLogPage.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydayApiLogPage.js +12 -1
- package/dist-lib/components/floriday/FlorydayConnectionPage.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydayConnectionPage.js +2 -1
- package/dist-lib/components/floriday/FlorydayCronStallBanner.d.ts +3 -0
- package/dist-lib/components/floriday/FlorydayCronStallBanner.d.ts.map +1 -0
- package/dist-lib/components/floriday/FlorydayCronStallBanner.js +13 -0
- package/dist-lib/integrations/supabase/types.d.ts +897 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/cron/process-stock-queue.d.ts +5 -0
- package/dist-lib/lib/cron/process-stock-queue.d.ts.map +1 -1
- package/dist-lib/lib/cron/process-stock-queue.js +31 -1
- package/dist-lib/lib/cron/retry-floriday-documents.d.ts.map +1 -1
- package/dist-lib/lib/cron/retry-floriday-documents.js +14 -1
- package/dist-lib/lib/document-version.d.ts +33 -0
- package/dist-lib/lib/document-version.d.ts.map +1 -0
- package/dist-lib/lib/document-version.js +55 -0
- package/dist-lib/lib/floriday-api-log.functions.d.ts +1 -0
- package/dist-lib/lib/floriday-api-log.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-api-log.functions.js +1 -1
- package/dist-lib/lib/floriday-api-log.server.js +1 -1
- package/dist-lib/lib/floriday-auction-letters.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-auction-letters.functions.js +5 -8
- package/dist-lib/lib/floriday-cron-status.functions.d.ts +11 -0
- package/dist-lib/lib/floriday-cron-status.functions.d.ts.map +1 -0
- package/dist-lib/lib/floriday-cron-status.functions.js +9 -0
- package/dist-lib/lib/floriday-labels.functions.d.ts +2 -0
- package/dist-lib/lib/floriday-labels.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-labels.functions.js +7 -8
- package/dist-lib/lib/floriday-stickers.functions.d.ts +2 -0
- package/dist-lib/lib/floriday-stickers.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-stickers.functions.js +7 -8
- package/dist-lib/lib/floriday-sync.functions.d.ts +690 -0
- package/dist-lib/lib/floriday-sync.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-sync.functions.js +16 -2
- package/dist-lib/lib/floriday-tray-stickers.functions.d.ts +29 -4
- package/dist-lib/lib/floriday-tray-stickers.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-tray-stickers.functions.js +61 -60
- package/dist-lib/lib/floriday.functions.d.ts +13 -4
- package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday.functions.js +70 -18
- package/dist-lib/lib/gateway/customer-stickers.d.ts +93 -0
- package/dist-lib/lib/gateway/customer-stickers.d.ts.map +1 -0
- package/dist-lib/lib/gateway/customer-stickers.js +279 -0
- package/dist-lib/lib/gateway/floriday-error-map.d.ts +11 -0
- package/dist-lib/lib/gateway/floriday-error-map.d.ts.map +1 -0
- package/dist-lib/lib/gateway/floriday-error-map.js +30 -0
- package/dist-lib/lib/gateway/fulfillment-order-send.d.ts.map +1 -1
- package/dist-lib/lib/gateway/fulfillment-order-send.js +19 -2
- package/dist-lib/lib/gateway/fulfillment-order-status.d.ts.map +1 -1
- package/dist-lib/lib/gateway/fulfillment-order-status.js +5 -3
- package/dist-lib/lib/gateway/fulfillment-order-validate.d.ts +8 -0
- package/dist-lib/lib/gateway/fulfillment-order-validate.d.ts.map +1 -0
- package/dist-lib/lib/gateway/fulfillment-order-validate.js +56 -0
- package/dist-lib/lib/gateway/index.d.ts +1 -0
- package/dist-lib/lib/gateway/index.d.ts.map +1 -1
- package/dist-lib/lib/gateway/index.js +1 -0
- package/dist-lib/lib/gateway/pdf.d.ts +4 -1
- package/dist-lib/lib/gateway/pdf.d.ts.map +1 -1
- package/dist-lib/lib/gateway/pdf.js +26 -4
- package/dist-lib/lib/module-version.d.ts +1 -1
- package/dist-lib/lib/module-version.js +1 -1
- package/dist-lib/lib/shell-routes.d.ts +1 -1
- package/dist-lib/lib/shell-routes.d.ts.map +1 -1
- package/dist-lib/lib/shell-routes.js +1 -0
- package/package.json +11 -2
|
@@ -89,5 +89,10 @@ export declare function runStockQueueRound(supabase: SupabaseClient, limit?: num
|
|
|
89
89
|
*/
|
|
90
90
|
export declare function handleProcessStockQueue(request: Request, supabase: SupabaseClient): Promise<Response>;
|
|
91
91
|
export declare function maybeTickStockQueue(supabase: SupabaseClient): void;
|
|
92
|
+
/** Pure beslissing: laatste relevante poging (nieuwste eerst) was een 404. */
|
|
93
|
+
export declare function decideMissingBaseSupply(rows: Array<{
|
|
94
|
+
ok: boolean;
|
|
95
|
+
http_status: number | null;
|
|
96
|
+
}>): boolean;
|
|
92
97
|
export {};
|
|
93
98
|
//# sourceMappingURL=process-stock-queue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-stock-queue.d.ts","sourceRoot":"","sources":["../../../src/lib/cron/process-stock-queue.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAMlC,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAGlF;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAazD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC1B,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAYjD;AA6CD,eAAO,MAAM,wBAAwB,wCAAwC,CAAC;AAC9E,eAAO,MAAM,4BAA4B,mFACyC,CAAC;AAEnF,eAAO,MAAM,yBAAyB,sEAC+B,CAAC;AACtE,eAAO,MAAM,mBAAmB,+CAA+C,CAAC;AAEhF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EACH,eAAe,GACf,kBAAkB,GAClB,sBAAsB,GACtB,mBAAmB,GACnB,qBAAqB,GACrB,OAAO,CAAC;IACZ,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,KAAK,WAAW,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAE/F;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,YAAY,EAAE,WAAW,GAAG,IAAI,EAChC,QAAQ,EAAE,WAAW,GAAG,IAAI,GAC3B,YAAY,CAmBd;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,GAAG,IAAI,CAInE;AAMD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,mBAAmB,EACxB,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"process-stock-queue.d.ts","sourceRoot":"","sources":["../../../src/lib/cron/process-stock-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -180,7 +180,13 @@ export async function pushStockRow(supabase, env, row) {
|
|
|
180
180
|
}));
|
|
181
181
|
if (!availability.ok)
|
|
182
182
|
return decideOutcome(availability, null);
|
|
183
|
-
// 2. Aantal: alleen PATCH op bestaand weekaanbod.
|
|
183
|
+
// 2. Aantal: alleen PATCH op bestaand weekaanbod. Gaf Floriday voor dit
|
|
184
|
+
// artikel en deze week recent 404 (en sindsdien geen geslaagde
|
|
185
|
+
// PUT/PATCH), dan niet opnieuw proberen: Voorraad moet eerst
|
|
186
|
+
// gateway/supply-line aanroepen.
|
|
187
|
+
if (await recentMissingBaseSupply(supabase, row.trade_item_id, year, week)) {
|
|
188
|
+
return { outcome: "needs_base_supply", availabilitySent: true, quantitySent: false, error: NEEDS_BASE_SUPPLY_MESSAGE, permanent: false, attemptId: availability.attemptId ?? null };
|
|
189
|
+
}
|
|
184
190
|
const quantity = (await florydayWrite(supabase, env, {
|
|
185
191
|
module: "inventory",
|
|
186
192
|
action: "patch-weekly-base-supply",
|
|
@@ -301,3 +307,27 @@ export function maybeTickStockQueue(supabase) {
|
|
|
301
307
|
void syncShellHostRuntimeConfig().catch(() => undefined);
|
|
302
308
|
void runStockQueueRound(supabase, 10).catch((e) => console.warn("[stock-queue] vangnet-ronde mislukt:", e?.message ?? e));
|
|
303
309
|
}
|
|
310
|
+
const MISSING_BASE_SUPPLY_WINDOW_MS = 6 * 60 * 60 * 1000;
|
|
311
|
+
/** Pure beslissing: laatste relevante poging (nieuwste eerst) was een 404. */
|
|
312
|
+
export function decideMissingBaseSupply(rows) {
|
|
313
|
+
const last = rows[0];
|
|
314
|
+
return !!last && !last.ok && last.http_status === 404;
|
|
315
|
+
}
|
|
316
|
+
async function recentMissingBaseSupply(supabase, tradeItemId, year, week) {
|
|
317
|
+
try {
|
|
318
|
+
const since = new Date(Date.now() - MISSING_BASE_SUPPLY_WINDOW_MS).toISOString();
|
|
319
|
+
const { data } = await supabase
|
|
320
|
+
.from("floriday_write_log")
|
|
321
|
+
.select("ok, http_status, created_at")
|
|
322
|
+
.eq("floriday_id", tradeItemId)
|
|
323
|
+
.in("action", ["patch-weekly-base-supply", "upsert-weekly-base-supply"])
|
|
324
|
+
.like("idempotency_key", `%:${tradeItemId}:${year}:${week}:%`)
|
|
325
|
+
.gte("created_at", since)
|
|
326
|
+
.order("created_at", { ascending: false })
|
|
327
|
+
.limit(1);
|
|
328
|
+
return decideMissingBaseSupply((data ?? []));
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
return false; // bij twijfel gewoon proberen
|
|
332
|
+
}
|
|
333
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry-floriday-documents.d.ts","sourceRoot":"","sources":["../../../src/lib/cron/retry-floriday-documents.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAU5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAMpE,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,mBAAmB,CAAC;IACjC,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,eAAe,CAAC;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD,uEAAuE;AACvE,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,QAAQ,GACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"retry-floriday-documents.d.ts","sourceRoot":"","sources":["../../../src/lib/cron/retry-floriday-documents.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAU5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAMpE,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,mBAAmB,CAAC;IACjC,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,eAAe,CAAC;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD,uEAAuE;AACvE,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,QAAQ,GACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoExB;AAgCD,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,cAAc;;;;;;;iBAaiD,MAAM,GAAG,IAAI;GAiF3H;AAED,mDAAmD;AACnD,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,QAAQ,CAAC,CAgBnB"}
|
|
@@ -58,6 +58,13 @@ export async function documentCancelReason(sb, row) {
|
|
|
58
58
|
return null;
|
|
59
59
|
}
|
|
60
60
|
// tray-stickers: delivery-order + bijbehorende fulfillment-orders
|
|
61
|
+
if (row.params.fulfillmentOrderId && !row.params.deliveryOrderId) {
|
|
62
|
+
const { data: fo } = await sb.from("floriday_fulfillment_orders_cache")
|
|
63
|
+
.select("status, is_deleted").eq("connection_id", cid).eq("floriday_id", row.params.fulfillmentOrderId).maybeSingle();
|
|
64
|
+
if (fo && isCancelled(fo.status, fo.is_deleted))
|
|
65
|
+
return `Fulfillment-order ${row.params.fulfillmentOrderId} in Floriday geannuleerd`;
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
61
68
|
const doId = row.params.deliveryOrderId;
|
|
62
69
|
const { data: d } = await sb
|
|
63
70
|
.from("floriday_delivery_orders_cache")
|
|
@@ -94,7 +101,13 @@ async function attempt(sb, row) {
|
|
|
94
101
|
});
|
|
95
102
|
}
|
|
96
103
|
else {
|
|
97
|
-
await resolveTrayStickers(sb, {
|
|
104
|
+
const r = await resolveTrayStickers(sb, {
|
|
105
|
+
environment: env,
|
|
106
|
+
fulfillmentOrderId: row.params.fulfillmentOrderId,
|
|
107
|
+
deliveryOrderId: row.params.fulfillmentOrderId ? undefined : row.params.deliveryOrderId,
|
|
108
|
+
});
|
|
109
|
+
if (!r.ok)
|
|
110
|
+
throw Object.assign(new Error(r.error), { status: r.status });
|
|
98
111
|
}
|
|
99
112
|
}
|
|
100
113
|
function isPermanent(status, msg) {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
+
export type DocumentKind = "logistic-label" | "customer-sticker" | "tray-stickers" | "auction-letter";
|
|
3
|
+
/** Pad voor versie n; v1 = het oude, onversioneerde pad. */
|
|
4
|
+
export declare function versionedPath(basePath: string, version: number): string;
|
|
5
|
+
/** Pure beslissing: zelfde inhoud hergebruiken, anders volgende versie. */
|
|
6
|
+
export declare function decideVersion(latest: {
|
|
7
|
+
version: number;
|
|
8
|
+
content_sha256: string;
|
|
9
|
+
} | null, sha: string): {
|
|
10
|
+
reuse: true;
|
|
11
|
+
version: number;
|
|
12
|
+
} | {
|
|
13
|
+
reuse: false;
|
|
14
|
+
version: number;
|
|
15
|
+
};
|
|
16
|
+
export declare function sha256Hex(bytes: Uint8Array): Promise<string>;
|
|
17
|
+
export interface StoredVersion {
|
|
18
|
+
bucket: string;
|
|
19
|
+
storagePath: string;
|
|
20
|
+
version: number;
|
|
21
|
+
reused: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare function storeVersionedDocument(supabase: SupabaseClient, input: {
|
|
24
|
+
connectionId: string;
|
|
25
|
+
kind: DocumentKind;
|
|
26
|
+
documentId: string;
|
|
27
|
+
bucket: string;
|
|
28
|
+
basePath: string;
|
|
29
|
+
bytes: Uint8Array;
|
|
30
|
+
contentType: string;
|
|
31
|
+
deliveryDate?: string | null;
|
|
32
|
+
}): Promise<StoredVersion>;
|
|
33
|
+
//# sourceMappingURL=document-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-version.d.ts","sourceRoot":"","sources":["../../src/lib/document-version.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAEtG,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GACnG;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAGrE;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAGlE;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE;IACL,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,GACA,OAAO,CAAC,aAAa,CAAC,CA+BxB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Versiebeheer voor Floriday-documenten in Storage.
|
|
2
|
+
// Een bestand waar een printopdracht naar kan verwijzen wordt nooit
|
|
3
|
+
// overschreven: gelijke inhoud = bestaande versie, andere inhoud = nieuw pad
|
|
4
|
+
// `<basis>-v<n>.pdf`. Versie 1 houdt het oude pad (`<basis>.pdf`), zodat
|
|
5
|
+
// bestaande cacheregels en printopdrachten blijven kloppen. Er wordt niets
|
|
6
|
+
// opgeruimd (geen opruimbeleid; minimaal 90 dagen na leverdatum bewaren).
|
|
7
|
+
/** Pad voor versie n; v1 = het oude, onversioneerde pad. */
|
|
8
|
+
export function versionedPath(basePath, version) {
|
|
9
|
+
const base = basePath.replace(/\.pdf$/i, "");
|
|
10
|
+
return version <= 1 ? `${base}.pdf` : `${base}-v${version}.pdf`;
|
|
11
|
+
}
|
|
12
|
+
/** Pure beslissing: zelfde inhoud hergebruiken, anders volgende versie. */
|
|
13
|
+
export function decideVersion(latest, sha) {
|
|
14
|
+
if (latest && latest.content_sha256 === sha)
|
|
15
|
+
return { reuse: true, version: latest.version };
|
|
16
|
+
return { reuse: false, version: (latest?.version ?? 0) + 1 };
|
|
17
|
+
}
|
|
18
|
+
export async function sha256Hex(bytes) {
|
|
19
|
+
const digest = await crypto.subtle.digest("SHA-256", bytes);
|
|
20
|
+
return Array.from(new Uint8Array(digest)).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
21
|
+
}
|
|
22
|
+
export async function storeVersionedDocument(supabase, input) {
|
|
23
|
+
const db = supabase;
|
|
24
|
+
const sha = await sha256Hex(input.bytes);
|
|
25
|
+
const { data: latest } = await db.from("floriday_document_versions")
|
|
26
|
+
.select("version, content_sha256, storage_path, bucket")
|
|
27
|
+
.eq("connection_id", input.connectionId).eq("document_kind", input.kind).eq("document_id", input.documentId)
|
|
28
|
+
.order("version", { ascending: false }).limit(1).maybeSingle();
|
|
29
|
+
const d = decideVersion(latest ?? null, sha);
|
|
30
|
+
if (d.reuse)
|
|
31
|
+
return { bucket: latest.bucket, storagePath: latest.storage_path, version: d.version, reused: true };
|
|
32
|
+
// Nooit overschrijven: bestaat het pad al (bv. een bestand van vóór het
|
|
33
|
+
// versiebeheer), dan het volgende versienummer nemen.
|
|
34
|
+
let version = d.version;
|
|
35
|
+
for (let attempt = 0; attempt < 50; attempt++, version++) {
|
|
36
|
+
const storagePath = versionedPath(input.basePath, version);
|
|
37
|
+
const { error } = await supabase.storage.from(input.bucket)
|
|
38
|
+
.upload(storagePath, input.bytes, { contentType: input.contentType, upsert: false });
|
|
39
|
+
if (error) {
|
|
40
|
+
if (/exist|duplicate|409/i.test(error.message))
|
|
41
|
+
continue;
|
|
42
|
+
throw new Error(`Storage upload: ${error.message}`);
|
|
43
|
+
}
|
|
44
|
+
const { error: insErr } = await db.from("floriday_document_versions").insert({
|
|
45
|
+
connection_id: input.connectionId, document_kind: input.kind, document_id: input.documentId,
|
|
46
|
+
version, bucket: input.bucket, storage_path: storagePath, content_sha256: sha,
|
|
47
|
+
content_type: input.contentType, byte_size: input.bytes.byteLength,
|
|
48
|
+
delivery_date: input.deliveryDate ?? null,
|
|
49
|
+
});
|
|
50
|
+
if (insErr)
|
|
51
|
+
throw new Error(`Documentversie vastleggen: ${insErr.message}`);
|
|
52
|
+
return { bucket: input.bucket, storagePath, version, reused: false };
|
|
53
|
+
}
|
|
54
|
+
throw new Error("Geen vrij versiepad gevonden (50 pogingen)");
|
|
55
|
+
}
|
|
@@ -20,6 +20,7 @@ export interface FlorydayApiLogRow {
|
|
|
20
20
|
item_count: number | null;
|
|
21
21
|
cursor_from: number | null;
|
|
22
22
|
error: string | null;
|
|
23
|
+
response?: any;
|
|
23
24
|
write_log_id: string | null;
|
|
24
25
|
}
|
|
25
26
|
export declare const listFlorydayApiLog: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floriday-api-log.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-api-log.functions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"floriday-api-log.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-api-log.functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ export const listFlorydayApiLog = createServerFn({ method: "GET" })
|
|
|
11
11
|
const offset = Math.max(data.offset ?? 0, 0);
|
|
12
12
|
let q = supabaseAdmin
|
|
13
13
|
.from("floriday_api_log")
|
|
14
|
-
.select("id, created_at, direction, environment, method, path, http_status, ok, duration_ms, module, caller, action, resource_type, floriday_id, local_id, floriday_reference, local_reference, kind, item_count, cursor_from, error, write_log_id", { count: "exact" })
|
|
14
|
+
.select("id, created_at, direction, environment, method, path, http_status, ok, duration_ms, module, caller, action, resource_type, floriday_id, local_id, floriday_reference, local_reference, kind, item_count, cursor_from, error, response, write_log_id", { count: "exact" })
|
|
15
15
|
.order("created_at", { ascending: false })
|
|
16
16
|
.range(offset, offset + limit - 1);
|
|
17
17
|
if (data.direction && data.direction !== "all")
|
|
@@ -304,7 +304,7 @@ export async function logFlorydayCall(entry) {
|
|
|
304
304
|
cursor_from: cursorFrom,
|
|
305
305
|
request: trim(entry.request),
|
|
306
306
|
response: trim(response),
|
|
307
|
-
error: entry.error ? String(entry.error).slice(0,
|
|
307
|
+
error: entry.error ? String(entry.error).slice(0, 20000) : null,
|
|
308
308
|
write_log_id: entry.writeLogId ?? null,
|
|
309
309
|
});
|
|
310
310
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floriday-auction-letters.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-auction-letters.functions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"floriday-auction-letters.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-auction-letters.functions.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAMjC,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AA8GD,eAAO,MAAM,wBAAwB;;;;8CAEX,YAAY,kDAqClC,CAAC;AAEL,iFAAiF;AACjF,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE;IAAE,WAAW,EAAE,mBAAmB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACpG,OAAO,CAAC,qBAAqB,CAAC,CA0BhC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { storeVersionedDocument } from "./document-version.js";
|
|
1
2
|
// ============================================================================
|
|
2
3
|
// Floriday veilingbrieven (auction letters) — lazy on-demand PDF fetch
|
|
3
4
|
// ----------------------------------------------------------------------------
|
|
@@ -79,15 +80,11 @@ async function fetchAuctionLetterToStorage(supabase, env, connectionId, clockSup
|
|
|
79
80
|
bytes = new Uint8Array(buf);
|
|
80
81
|
storedContentType = contentType || "application/pdf";
|
|
81
82
|
}
|
|
82
|
-
const storagePath =
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
contentType: storedContentType,
|
|
87
|
-
upsert: true,
|
|
83
|
+
const { storagePath } = await storeVersionedDocument(supabase, {
|
|
84
|
+
connectionId, kind: "auction-letter", documentId: `${clockSupplyId}:${resolvedCode}`,
|
|
85
|
+
bucket: BUCKET, basePath: `${connectionId}/${clockSupplyId}/${resolvedCode}`,
|
|
86
|
+
bytes, contentType: storedContentType,
|
|
88
87
|
});
|
|
89
|
-
if (upErr)
|
|
90
|
-
throw new Error(`Storage upload: ${upErr.message}`);
|
|
91
88
|
await supabase.from("floriday_auction_letters_cache").upsert({
|
|
92
89
|
connection_id: connectionId,
|
|
93
90
|
clock_supply_id: clockSupplyId,
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Blijvende stilstand-melding voor de pagina Floriday koppeling. */
|
|
2
|
+
export declare const getFlorydayCronBaseStall: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
3
|
+
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
4
|
+
userId: string;
|
|
5
|
+
claims: import("@supabase/auth-js").JwtPayload;
|
|
6
|
+
}, undefined, undefined, undefined>], undefined, Promise<{
|
|
7
|
+
stalled: boolean;
|
|
8
|
+
since: string | null;
|
|
9
|
+
message: string | null;
|
|
10
|
+
}>>;
|
|
11
|
+
//# sourceMappingURL=floriday-cron-status.functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"floriday-cron-status.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-cron-status.functions.ts"],"names":[],"mappings":"AAGA,qEAAqE;AACrE,eAAO,MAAM,wBAAwB;;;;;;;;GAKjC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createServerFn } from "@tanstack/react-start";
|
|
2
|
+
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
|
|
3
|
+
/** Blijvende stilstand-melding voor de pagina Floriday koppeling. */
|
|
4
|
+
export const getFlorydayCronBaseStall = createServerFn({ method: "POST" })
|
|
5
|
+
.middleware([requireSupabaseAuth])
|
|
6
|
+
.handler(async () => {
|
|
7
|
+
const { readCronBaseStall } = await import("./floriday.functions.js");
|
|
8
|
+
return readCronBaseStall();
|
|
9
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floriday-labels.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-labels.functions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"floriday-labels.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-labels.functions.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AASjC,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,YAAY;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AA+FD,eAAO,MAAM,wBAAwB;;;;8CAEX,YAAY,kDAsClC,CAAC;AAEL;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE;IAAE,WAAW,EAAE,mBAAmB,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACzG,OAAO,CAAC,qBAAqB,CAAC,CA4BhC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { storeVersionedDocument } from "./document-version.js";
|
|
1
2
|
// ============================================================================
|
|
2
3
|
// Floriday logistic labels (veilingbrief PDF's) — lazy on-demand fetch
|
|
3
4
|
// ----------------------------------------------------------------------------
|
|
@@ -63,15 +64,11 @@ async function ensureLabelInStorage(supabase, env, connectionId, fulfillmentOrde
|
|
|
63
64
|
bytes = new Uint8Array(buf);
|
|
64
65
|
storedContentType = contentType || "application/pdf";
|
|
65
66
|
}
|
|
66
|
-
const storagePath =
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
contentType: storedContentType,
|
|
71
|
-
upsert: true,
|
|
67
|
+
const { storagePath } = await storeVersionedDocument(supabase, {
|
|
68
|
+
connectionId, kind: "logistic-label", documentId: `${fulfillmentOrderId}:${resolvedCode}`,
|
|
69
|
+
bucket: BUCKET, basePath: `${connectionId}/${fulfillmentOrderId}/${resolvedCode}`,
|
|
70
|
+
bytes, contentType: storedContentType,
|
|
72
71
|
});
|
|
73
|
-
if (upErr)
|
|
74
|
-
throw new Error(`Storage upload: ${upErr.message}`);
|
|
75
72
|
await supabase.from("floriday_logistic_labels_cache").upsert({
|
|
76
73
|
connection_id: connectionId,
|
|
77
74
|
fulfillment_order_id: fulfillmentOrderId,
|
|
@@ -135,6 +132,8 @@ export async function resolveLogisticLabel(supabase, input) {
|
|
|
135
132
|
return {
|
|
136
133
|
fulfillmentOrderId: input.fulfillmentOrderId,
|
|
137
134
|
logisticLabelCode: code,
|
|
135
|
+
bucket: BUCKET,
|
|
136
|
+
storagePath,
|
|
138
137
|
url: signed.signedUrl,
|
|
139
138
|
expiresAt: new Date(Date.now() + SIGNED_URL_TTL_S * 1000).toISOString(),
|
|
140
139
|
contentType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floriday-stickers.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-stickers.functions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"floriday-stickers.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-stickers.functions.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAMjC,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AA2GD,eAAO,MAAM,0BAA0B;;;;8CAEb,YAAY,oDAoClC,CAAC;AAEL,mFAAmF;AACnF,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE;IAAE,WAAW,EAAE,mBAAmB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC7D,OAAO,CAAC,uBAAuB,CAAC,CA0BlC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { storeVersionedDocument } from "./document-version.js";
|
|
1
2
|
// ============================================================================
|
|
2
3
|
// Floriday customer stickers — lazy PDF fetch + storage cache
|
|
3
4
|
// ----------------------------------------------------------------------------
|
|
@@ -80,15 +81,11 @@ async function fetchStickerToStorage(supabase, env, connectionId, stickerId) {
|
|
|
80
81
|
bytes = new Uint8Array(buf);
|
|
81
82
|
storedContentType = contentType || "application/pdf";
|
|
82
83
|
}
|
|
83
|
-
const storagePath =
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
contentType: storedContentType,
|
|
88
|
-
upsert: true,
|
|
84
|
+
const { storagePath } = await storeVersionedDocument(supabase, {
|
|
85
|
+
connectionId, kind: "customer-sticker", documentId: stickerId,
|
|
86
|
+
bucket: BUCKET, basePath: `${connectionId}/${stickerId}`,
|
|
87
|
+
bytes, contentType: storedContentType,
|
|
89
88
|
});
|
|
90
|
-
if (upErr)
|
|
91
|
-
throw new Error(`Storage upload: ${upErr.message}`);
|
|
92
89
|
await supabase.from("floriday_customer_sticker_pdfs_cache").upsert({
|
|
93
90
|
connection_id: connectionId,
|
|
94
91
|
sticker_id: stickerId,
|
|
@@ -144,6 +141,8 @@ export async function resolveCustomerSticker(supabase, input) {
|
|
|
144
141
|
}
|
|
145
142
|
return {
|
|
146
143
|
stickerId: input.stickerId,
|
|
144
|
+
bucket: BUCKET,
|
|
145
|
+
storagePath,
|
|
147
146
|
url: signed.signedUrl,
|
|
148
147
|
expiresAt: new Date(Date.now() + SIGNED_URL_TTL_S * 1000).toISOString(),
|
|
149
148
|
contentType,
|