- Detect duplicates after sync (same AgrarmonitorId, multiple correspondents)
- Auto-merge duplicates with identical names (delete empty, move docs to larger)
- Expose conflicts with different names for manual resolution
- New mergeCorrespondents endpoint + service method
- Conflict resolution modal in SettingsPage with radio selection per conflict
- deleteCorrespondent added to PaperlessService
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Extract getOrCreateCorrespondent helper to deduplicate logic
- Add syncCorrespondentIds to match Paperless correspondents to
Agrarmonitor IDs via Lieferantennummer and persist in CorrespondentSetting
- New POST /api/agrarmonitor/sync-correspondents endpoint
- "Agrarmonitor-Abgleich" button in Correspondents settings tab
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 400 on Korrespondenten-Sync: getCorrespondentByName was called with
searchName "(12345)" but checked exact match against full displayName
"Firma (12345)". Always returned null → duplicate addCorrespondent on
every run → Paperless 400. Fix: search by displayName directly.
- 403 on Livesearch: cached Agrarmonitor session expired. Fix: detect
401/403 from connector, call clearClient() to invalidate cache, break
out of the polling loop so next cron run re-authenticates.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>