diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.html b/src-ui/src/app/components/admin/tasks/tasks.component.html index 27f0e2e4d..8fd5ce174 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.html +++ b/src-ui/src/app/components/admin/tasks/tasks.component.html @@ -173,6 +173,12 @@ @if (taskHasResultMessage(task) && !taskHasLongResultMessage(task)) { {{ taskResultMessage(task) }} } + @if (duplicateDocumentId(task)) { +
+ + {{ duplicateTaskLabel(task) }} +
+ }
{{ taskResultPopoverMessage(task) }}@if (taskResultMessageOverflowsPopover(task)) {
                     …
@@ -214,6 +220,23 @@
                   
                 }
 
+                @if (duplicateDocumentId(task); as duplicateDocumentId) {
+                  
+
Duplicate
+
+
+
{{ duplicateTaskLabel(task) }}
+ +
+
+
+ } +
diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts b/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts index dc98b7cb2..cf17b411a 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts +++ b/src-ui/src/app/components/admin/tasks/tasks.component.spec.ts @@ -94,7 +94,7 @@ const tasks: PaperlessTask[] = [ trigger_source_display: 'Email Consume', status: PaperlessTaskStatus.Success, status_display: 'Success', - result_data: { document_id: 422 }, + result_data: { document_id: 422, duplicate_of: 99 }, acknowledged: false, related_document_ids: [422], }, @@ -344,6 +344,18 @@ describe('TasksComponent', () => { expect(detailText).toContain('"issues_found": 0') }) + it('should show duplicate warnings and duplicate details when present', () => { + component.setSection(TaskSection.Completed) + component.expandTask(tasks[3]) + fixture.detectChanges() + + const content = fixture.nativeElement.textContent + + expect(content).toContain('Duplicate of document #99') + expect(content).toContain('Duplicate') + expect(content).toContain('Open') + }) + it('should support dismiss single task', () => { const dismissSpy = jest.spyOn(tasksService, 'dismissTasks') component.dismissTask(tasks[0]) diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.ts b/src-ui/src/app/components/admin/tasks/tasks.component.ts index 87e26866b..7e8155bac 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.ts +++ b/src-ui/src/app/components/admin/tasks/tasks.component.ts @@ -371,7 +371,7 @@ export class TasksComponent const duplicateOf = task.result_data?.['duplicate_of'] if (typeof duplicateOf === 'number') { - return `Not consuming: It is a duplicate of document #${duplicateOf}` + return `Duplicate of document #${duplicateOf}` } const errorMessage = task.result_data?.['error_message'] @@ -399,6 +399,19 @@ export class TasksComponent return !!this.taskResultMessage(task) } + duplicateDocumentId(task: PaperlessTask): number | null { + const duplicateOf = task.result_data?.['duplicate_of'] + return typeof duplicateOf === 'number' ? duplicateOf : null + } + + duplicateTaskLabel(task: PaperlessTask): string { + return $localize`Duplicate of document #${this.duplicateDocumentId(task)}` + } + + openDuplicateDocument(documentId: number) { + this.router.navigate(['documents', documentId, 'details']) + } + taskResultPopoverMessage(task: PaperlessTask): string { return this.taskResultMessage(task)?.slice(0, 300) ?? '' }