@flowselections/mailbox-orders 1.0.30 → 1.0.32

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.
Files changed (39) hide show
  1. package/dist-lib/components/MailboxProcessedPage.js +1 -1
  2. package/dist-lib/components/MailboxProposalsPage.d.ts.map +1 -1
  3. package/dist-lib/components/MailboxProposalsPage.js +202 -122
  4. package/dist-lib/components/MailboxSkippedPage.d.ts +2 -0
  5. package/dist-lib/components/MailboxSkippedPage.d.ts.map +1 -0
  6. package/dist-lib/components/MailboxSkippedPage.js +71 -0
  7. package/dist-lib/components/settings/MailboxFilterSettingsCard.d.ts +2 -0
  8. package/dist-lib/components/settings/MailboxFilterSettingsCard.d.ts.map +1 -0
  9. package/dist-lib/components/settings/MailboxFilterSettingsCard.js +78 -0
  10. package/dist-lib/components/settings/MailboxTestSetCard.d.ts +2 -0
  11. package/dist-lib/components/settings/MailboxTestSetCard.d.ts.map +1 -0
  12. package/dist-lib/components/settings/MailboxTestSetCard.js +69 -0
  13. package/dist-lib/index.d.ts +1 -0
  14. package/dist-lib/index.d.ts.map +1 -1
  15. package/dist-lib/index.js +8 -2
  16. package/dist-lib/integrations/supabase/types.d.ts +864 -1
  17. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  18. package/dist-lib/lib/mailbox-ai.server.d.ts +33 -12
  19. package/dist-lib/lib/mailbox-ai.server.d.ts.map +1 -1
  20. package/dist-lib/lib/mailbox-ai.server.js +47 -17
  21. package/dist-lib/lib/mailbox-filter-settings.functions.d.ts +143 -0
  22. package/dist-lib/lib/mailbox-filter-settings.functions.d.ts.map +1 -0
  23. package/dist-lib/lib/mailbox-filter-settings.functions.js +241 -0
  24. package/dist-lib/lib/mailbox-filter.d.ts +34 -0
  25. package/dist-lib/lib/mailbox-filter.d.ts.map +1 -0
  26. package/dist-lib/lib/mailbox-filter.js +121 -0
  27. package/dist-lib/lib/mailbox-ingest.server.d.ts +114 -17
  28. package/dist-lib/lib/mailbox-ingest.server.d.ts.map +1 -1
  29. package/dist-lib/lib/mailbox-ingest.server.js +594 -266
  30. package/dist-lib/lib/mailbox-match.d.ts +28 -0
  31. package/dist-lib/lib/mailbox-match.d.ts.map +1 -0
  32. package/dist-lib/lib/mailbox-match.js +74 -0
  33. package/dist-lib/lib/mailbox-units.d.ts +18 -0
  34. package/dist-lib/lib/mailbox-units.d.ts.map +1 -0
  35. package/dist-lib/lib/mailbox-units.js +80 -0
  36. package/dist-lib/lib/mailbox.functions.d.ts +74 -0
  37. package/dist-lib/lib/mailbox.functions.d.ts.map +1 -1
  38. package/dist-lib/lib/mailbox.functions.js +170 -25
  39. package/package.json +6 -1
@@ -0,0 +1,121 @@
1
+ // Voorfilter vóór elke AI-aanroep. Puur (geen database), zodat het zowel in de
2
+ // ingest als in de testset gebruikt kan worden. Alle woordenlijsten en drempels
3
+ // komen uit de instellingen (mailbox_filter_settings).
4
+ const lower = (s) => (s ?? "").toLowerCase();
5
+ /** Postgres-woordgrenzen (\m, \M) omzetten naar JS (\b). */
6
+ export function toJsRegex(pattern) {
7
+ try {
8
+ return new RegExp(pattern.replace(/\\m|\\M/g, "\\b"), "i");
9
+ }
10
+ catch {
11
+ return null;
12
+ }
13
+ }
14
+ function splitEmail(email) {
15
+ const e = lower(email).trim();
16
+ const at = e.lastIndexOf("@");
17
+ return at < 0 ? { local: e, domain: "" } : { local: e.slice(0, at), domain: e.slice(at + 1) };
18
+ }
19
+ function domainMatches(domain, d) {
20
+ const x = lower(d).trim().replace(/^@/, "");
21
+ return !!x && (domain === x || domain.endsWith(`.${x}`));
22
+ }
23
+ function hasWord(hay, word) {
24
+ const w = lower(word).trim();
25
+ if (!w)
26
+ return false;
27
+ const esc = w.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
28
+ return new RegExp(`(^|[^\\p{L}\\p{N}])${esc}($|[^\\p{L}\\p{N}])`, "iu").test(hay);
29
+ }
30
+ export function classifyMessage(input, s) {
31
+ const { local, domain } = splitEmail(input.fromEmail);
32
+ const hay = lower(`${input.subject}\n${input.body}`);
33
+ if (input.knownSender) {
34
+ return { outcome: "analyseren", reason: "Bekende afzender (klant of contactpersoon)", signals: [] };
35
+ }
36
+ const skipSender = (s.skip_senders ?? []).find((x) => {
37
+ const v = lower(x).trim();
38
+ return !!v && (v.includes("@") ? lower(input.fromEmail).trim() === v : local.includes(v));
39
+ });
40
+ if (skipSender) {
41
+ return { outcome: "geen_bestelling", reason: `Afzender staat op de overslaan-lijst ("${skipSender}")`, signals: [] };
42
+ }
43
+ const skipDomain = (s.skip_domains ?? []).find((d) => domainMatches(domain, d));
44
+ if (skipDomain) {
45
+ return { outcome: "geen_bestelling", reason: `Domein staat op de overslaan-lijst ("${skipDomain}")`, signals: [] };
46
+ }
47
+ const negative = (s.negative_keywords ?? []).filter((w) => hasWord(hay, w));
48
+ if (negative.length > 0) {
49
+ return {
50
+ outcome: "geen_bestelling",
51
+ reason: `Lijkt een nieuwsbrief, bon of melding ("${negative.slice(0, 3).join('", "')}")`,
52
+ signals: [],
53
+ };
54
+ }
55
+ const signals = [];
56
+ for (const w of s.order_keywords ?? [])
57
+ if (hasWord(hay, w))
58
+ signals.push(w);
59
+ for (const p of s.order_patterns ?? []) {
60
+ const re = toJsRegex(p);
61
+ const m = re?.exec(hay);
62
+ if (m)
63
+ signals.push(m[0].trim());
64
+ }
65
+ const unique = Array.from(new Set(signals));
66
+ const min = Math.max(1, Number(s.min_signals_unknown ?? 2));
67
+ if (unique.length >= min) {
68
+ return {
69
+ outcome: "onbekend_met_signalen",
70
+ reason: `Onbekende afzender met bestel-signalen ("${unique.slice(0, 4).join('", "')}")`,
71
+ signals: unique,
72
+ };
73
+ }
74
+ return {
75
+ outcome: "geen_bestelling",
76
+ reason: unique.length
77
+ ? `Onbekende afzender met te weinig bestel-signalen (${unique.length} van ${min})`
78
+ : "Onbekende afzender zonder bestel-signalen",
79
+ signals: unique,
80
+ };
81
+ }
82
+ const FORWARD_RE = /^[ \t>]*(-{2,}\s*(forwarded message|doorgestuurd bericht|weitergeleitete nachricht|original message|oorspronkelijk bericht)\s*-{2,}|begin forwarded message:?)\s*$/im;
83
+ const QUOTE_START_RES = [
84
+ /^\s*>/m,
85
+ /^\s*(on|op|am)\s.{3,200}\s(wrote|schreef|schrieb|heeft .{0,60}geschreven)\s?.{0,80}:\s*$/im,
86
+ /^\s*-{2,}\s*(original message|oorspronkelijk bericht|ursprüngliche nachricht)\s*-{2,}\s*$/im,
87
+ /^\s*(van|from|von):\s.+\n\s*(verzonden|sent|gesendet|datum|date):\s/im,
88
+ ];
89
+ const SIGNATURE_RES = [/^--\s*$/m, /^\s*(verzonden (vanaf|met)|sent from my|von meinem)\b.*$/im];
90
+ function cutAtFirst(text, res) {
91
+ let cut = text.length;
92
+ for (const re of res) {
93
+ const m = re.exec(text);
94
+ if (m && m.index < cut)
95
+ cut = m.index;
96
+ }
97
+ return text.slice(0, cut);
98
+ }
99
+ /**
100
+ * Alleen het nieuwste deel van de mail: geciteerde tekst en handtekening weg.
101
+ * Bij een doorgestuurde mail is het doorgestuurde bericht leidend en wordt de
102
+ * oorspronkelijke afzender teruggegeven.
103
+ */
104
+ export function extractLatestPart(body) {
105
+ const src = (body ?? "").replace(/\r\n/g, "\n");
106
+ const fw = FORWARD_RE.exec(src);
107
+ if (fw) {
108
+ const rest = src.slice(fw.index + fw[0].length);
109
+ const fromLine = /^\s*(from|van|von):\s*(.+)$/im.exec(rest);
110
+ const addr = fromLine ? /[\w.+-]+@[\w-]+(\.[\w-]+)+/.exec(fromLine[2])?.[0] ?? null : null;
111
+ // Kopregels (From/To/Subject/Date) van het doorgestuurde bericht overslaan.
112
+ const lines = rest.split("\n");
113
+ let i = 0;
114
+ while (i < lines.length && (/^\s*$/.test(lines[i]) || /^\s*[\p{L} -]{2,20}:\s/u.test(lines[i])))
115
+ i++;
116
+ const inner = lines.slice(i).join("\n");
117
+ return { text: cutAtFirst(cutAtFirst(inner, QUOTE_START_RES), SIGNATURE_RES).trim(), forwardedFrom: addr ? addr.toLowerCase() : null };
118
+ }
119
+ const text = cutAtFirst(cutAtFirst(src, QUOTE_START_RES), SIGNATURE_RES).trim();
120
+ return { text: text || src.trim(), forwardedFrom: null };
121
+ }
@@ -1,11 +1,52 @@
1
1
  import type { SupabaseClient } from "@supabase/supabase-js";
2
2
  import type { Database } from "../integrations/supabase/types.js";
3
+ import { type FilterSettings } from "./mailbox-filter.js";
4
+ import { type BeladingDims, type UnitKind } from "./mailbox-units.js";
3
5
  type AdminClient = SupabaseClient<Database>;
4
6
  /** Centrale AI-instellingen van deze module (aanpasbaar via Instellingen). */
5
7
  export declare function loadMailboxAiSettings(admin: AdminClient): Promise<{
6
8
  systemPrompt: string | null;
7
9
  requiredFields: string[];
10
+ enabled: boolean;
8
11
  }>;
12
+ export interface MailboxFilterSettingsRow extends FilterSettings {
13
+ max_ai_per_day: number;
14
+ max_ai_per_month: number;
15
+ max_candidates: number;
16
+ max_retry_attempts: number;
17
+ max_retries_per_run: number;
18
+ max_agent_reparse: number;
19
+ conf_green: number;
20
+ conf_orange: number;
21
+ duplicate_days: number;
22
+ }
23
+ /** Filter- en limietinstellingen. Fail closed: zonder instellingen geen analyse. */
24
+ export declare function loadFilterSettings(admin: AdminClient): Promise<MailboxFilterSettingsRow>;
25
+ export interface EnrichedLine {
26
+ product_id: string | null;
27
+ raw_product_text: string;
28
+ plant_type: string | null;
29
+ raw_code: string | null;
30
+ name_in_mail: string | null;
31
+ qty_in_mail: number | null;
32
+ unit_text: string | null;
33
+ unit_kind: UnitKind;
34
+ pieces_per_unit: number | null;
35
+ plants: number | null;
36
+ unit_price: number | null;
37
+ currency: string | null;
38
+ price_per: "stuk" | "eenheid" | null;
39
+ mail_price: number | null;
40
+ belading: BeladingDims | null;
41
+ match_source: "code" | "ai" | "naam" | null;
42
+ confidence: {
43
+ product: number;
44
+ quantity: number;
45
+ unit: number;
46
+ price: number;
47
+ };
48
+ warnings: string[];
49
+ }
9
50
  /**
10
51
  * Combineert de zelfcontrole van de AI met een harde servercheck op de
11
52
  * verplichte velden. Ontbrekende of onzekere gegevens worden expliciet
@@ -13,6 +54,8 @@ export declare function loadMailboxAiSettings(admin: AdminClient): Promise<{
13
54
  */
14
55
  export declare function computeValidation(parsed: import("./mailbox-ai.server.js").ParsedOrder, requiredFields: string[], extra: {
15
56
  customerId: string | null;
57
+ lines?: EnrichedLine[];
58
+ confGreen?: number;
16
59
  }): {
17
60
  missing: string[];
18
61
  uncertain: string[];
@@ -20,15 +63,14 @@ export declare function computeValidation(parsed: import("./mailbox-ai.server.js
20
63
  ok: boolean;
21
64
  };
22
65
  /** Maximaal aantal achtergrondpogingen voordat we het voorstel handmatig laten. */
23
- export declare const AI_MAX_BACKGROUND_RETRIES = 6;
66
+ export declare const AI_MAX_BACKGROUND_RETRIES = 3;
24
67
  /**
25
- * Vult het afleveradres aan met de hoofdafleverlocatie (is_primary) van de klant
26
- * wanneer de mail/AI géén geldige locatie heeft herkend. Herkent de AI wél een
27
- * locatie van deze klant, dan blijft die staan.
68
+ * Afleveradres: een GLN of locatie uit de mail wint. Anders de vaste locatie
69
+ * (is_primary, maximaal één per klant). Geen vaste locatie → niets kiezen.
28
70
  */
29
- export declare function resolveDeliveryLocation(admin: AdminClient, customerId: string | null, aiValue: unknown): Promise<{
71
+ export declare function resolveDeliveryLocation(admin: AdminClient, customerId: string | null, aiValue: unknown, mailText?: string): Promise<{
30
72
  id: string;
31
- primary: boolean;
73
+ source: "mail" | "gln" | "vast";
32
74
  } | null>;
33
75
  /**
34
76
  * Afhaallocatie (eigen tuin/warehouse): AI-herkenning wint, anders de hoofdlocatie
@@ -38,23 +80,32 @@ export declare function resolvePickupLocation(admin: AdminClient, aiValue: unkno
38
80
  id: string;
39
81
  primary: boolean;
40
82
  } | null>;
83
+ export type StubOutcome = {
84
+ status: "exists" | "created" | "busy" | "skipped" | "waiting";
85
+ reason?: string;
86
+ };
41
87
  /**
42
- * Maakt exact één voorstel per bericht. Probeert eerst de AI-parse via de
43
- * centrale AI-Authenticatie module; lukt dat niet, dan valt hij terug op een
44
- * leeg voorstel met de reden erbij. Ingest mag nooit stukvallen op AI.
88
+ * Maakt exact één voorstel per bericht. Eerst het voorfilter (zonder AI), dan
89
+ * het vastleggen van de analyse (één tegelijk + limieten), en pas dan de AI.
45
90
  */
46
- export declare function createStubProposal(admin: AdminClient, messageId: string, fromEmail: string | null): Promise<void>;
91
+ export declare function createStubProposal(admin: AdminClient, messageId: string, fromEmail: string | null, opts?: {
92
+ force?: boolean;
93
+ trigger?: string;
94
+ }): Promise<StubOutcome>;
47
95
  /**
48
96
  * Analyseert een bestaand (nog niet goedgekeurd) voorstel opnieuw met de
49
97
  * huidige AI-agent. De vorige AI-analyse wordt vervangen.
50
98
  */
51
- export declare function reparseProposal(admin: AdminClient, proposalId: string): Promise<{
99
+ export declare function reparseProposal(admin: AdminClient, proposalId: string, opts?: {
100
+ force?: boolean;
101
+ trigger?: string;
102
+ }): Promise<{
52
103
  ok: boolean;
53
104
  error: string | null;
54
105
  }>;
55
106
  /**
56
- * Detecteert een gewijzigde AI-agent: alle openstaande voorstellen waarvan de
57
- * opgeslagen vingerafdruk afwijkt van de huidige worden opnieuw geanalyseerd.
107
+ * Gewijzigde AI-agent: openstaande voorstellen opnieuw analyseren. Alleen via
108
+ * de knop, of automatisch tot het ingestelde maximum (standaard 0 = uit).
58
109
  */
59
110
  export declare function reparseChangedAgentProposals(admin: AdminClient, limit?: number): Promise<{
60
111
  checked: number;
@@ -62,13 +113,14 @@ export declare function reparseChangedAgentProposals(admin: AdminClient, limit?:
62
113
  failed: number;
63
114
  fingerprint: string | null;
64
115
  }>;
116
+ /** Telt openstaande voorstellen met een verouderde AI-analyse (voor de knop). */
117
+ export declare function countOutdatedAgentProposals(admin: AdminClient): Promise<number>;
65
118
  /**
66
119
  * Achtergrondherstel: voorstellen waarvan de AI-analyse door een tijdelijke
67
- * storing (bijv. model overbelast) mislukte, worden bij een volgende run
68
- * automatisch opnieuw geanalyseerd — tot AI_MAX_BACKGROUND_RETRIES pogingen.
69
- * Blijft strikt idempotent: alleen 'pending' voorstellen worden aangeraakt.
120
+ * storing mislukte, worden bij een volgende run opnieuw geanalyseerd — begrensd
121
+ * per run en per voorstel (instellingen), en binnen de dag-/maandlimiet.
70
122
  */
71
- export declare function retryFailedAiProposals(admin: AdminClient, limit?: number): Promise<{
123
+ export declare function retryFailedAiProposals(admin: AdminClient, limit?: number, maxRetries?: number): Promise<{
72
124
  retried: number;
73
125
  recovered: number;
74
126
  stillFailing: number;
@@ -85,5 +137,50 @@ export type IngestRunResult = {
85
137
  skipped?: "no_active_connection";
86
138
  };
87
139
  export declare function runIngest(trigger: Trigger): Promise<IngestRunResult>;
140
+ export declare function dryRunAnalysis(admin: AdminClient, input: {
141
+ subject: string;
142
+ body: string;
143
+ fromEmail: string;
144
+ hasAttachment: boolean;
145
+ simulateKnownSender?: boolean;
146
+ }): Promise<{
147
+ filter: import("./mailbox-filter.js").FilterResult;
148
+ sender: string;
149
+ forwarded: boolean;
150
+ analyzed: boolean;
151
+ tokens: {
152
+ input: number;
153
+ output: number;
154
+ };
155
+ result: null;
156
+ } | {
157
+ filter: import("./mailbox-filter.js").FilterResult;
158
+ sender: string;
159
+ forwarded: boolean;
160
+ analyzed: boolean;
161
+ tokens: {
162
+ input: number;
163
+ output: number;
164
+ };
165
+ result: {
166
+ error: string | null;
167
+ customer_known: boolean;
168
+ delivery_date: any;
169
+ reference: any;
170
+ attachment_unread: boolean;
171
+ lines: {
172
+ text: string;
173
+ code: string | null;
174
+ product_id: string | null;
175
+ product_known: boolean;
176
+ match_source: "code" | "naam" | "ai" | null;
177
+ quantity: number | null;
178
+ unit: UnitKind;
179
+ plants: number | null;
180
+ unit_price: number | null;
181
+ warnings: string[];
182
+ }[];
183
+ };
184
+ }>;
88
185
  export {};
89
186
  //# sourceMappingURL=mailbox-ingest.server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox-ingest.server.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox-ingest.server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mailbox-ingest.server.d.ts","sourceRoot":"","sources":["../../src/lib/mailbox-ingest.server.ts"],"names":[],"mappings":"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"}