fix(mail): Duplikate auch bei neu erzeugten PDFs erkennen
Build and Push Multi-Platform Images / build-and-push (push) Successful in 45s

Absender erzeugen PDFs beim erneuten Versand oft neu (andere
Erstellungszeit/Dokument-ID), dadurch unterscheidet sich die Checksumme
und die Duplikatprüfung griff nicht (z.B. Mail 7071 vs. 7072).

- Neuer Text-Fingerprint (SHA-256 über normalisierten PDF-Text via
  pdf-parse) in Attachments.ContentFingerprint, inkl. Migration und Index
- Wird beim Mail-Abruf berechnet; Altbestand füllt ein Hintergrund-
  Backfill beim Start auf, fehlende Werte werden bei Bedarf nachberechnet
- Duplikatprüfung und Import-Sperre berücksichtigen Anhänge mit gleichem
  Inhalt, die importiert sind oder gerade importiert werden
- Jest braucht für pdf-parse --experimental-vm-modules (test-Skripte)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
bjoernpoettkerandClaude Opus 5.5 committed 2026-09-25 12:27:31 +02:00
1 parent 534b313054
commit 797cbb9b71
12 files changed
+746 -7

No files matched your search

@@ -31,6 +31,15 @@ export class Attachment {
@Column({ type: 'varchar', length: 32, default: '' })
Checksum!: string;
/**
* SHA-256 über den normalisierten PDF-Text (siehe pdf-fingerprint.util).
* Erkennt Duplikate, deren Datei neu erzeugt wurde (andere Checksumme).
* `''` = berechnet, aber ohne Textebene; `null` = noch nicht berechnet.
*/
@Index('IX_Attachments_ContentFingerprint')
@Column({ type: 'varchar', length: 64, nullable: true })
ContentFingerprint!: string | null;
@Column({ type: 'varchar', length: 255, nullable: true })
ContentId!: string | null;