feat: detect and resolve duplicate correspondents in Agrarmonitor sync
Build and Push Multi-Platform Images / build-and-push (push) Successful in 35s
Build and Push Multi-Platform Images / build-and-push (push) Successful in 35s
- 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>
This commit is contained in:
@@ -210,6 +210,19 @@ export interface AgrarmonitorPollingResult {
|
||||
errors: string[];
|
||||
}
|
||||
|
||||
export interface SyncConflict {
|
||||
agrarmonitorId: number;
|
||||
correspondents: Array<{ id: number; name: string; documentCount: number }>;
|
||||
}
|
||||
|
||||
export interface SyncCorrespondentsResult {
|
||||
total: number;
|
||||
matched: number;
|
||||
unmatched: number;
|
||||
autoMerged: number;
|
||||
conflicts: SyncConflict[];
|
||||
}
|
||||
|
||||
export const agrarmonitorApi = {
|
||||
getStatus: () =>
|
||||
api.get<AgrarmonitorStatusData>('/api/agrarmonitor/status').then((r) => r.data),
|
||||
@@ -226,5 +239,7 @@ export const agrarmonitorApi = {
|
||||
processUploads: () =>
|
||||
api.post<AgrarmonitorPollingResult>('/api/agrarmonitor/process-uploads').then((r) => r.data),
|
||||
syncCorrespondents: () =>
|
||||
api.post<{ total: number; matched: number; unmatched: number }>('/api/agrarmonitor/sync-correspondents').then((r) => r.data),
|
||||
api.post<SyncCorrespondentsResult>('/api/agrarmonitor/sync-correspondents').then((r) => r.data),
|
||||
mergeCorrespondents: (keepId: number, deleteId: number) =>
|
||||
api.post<{ mergedDocuments: number }>('/api/agrarmonitor/merge-correspondents', { keepId, deleteId }).then((r) => r.data),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user