diff --git a/frontend/src/features/analysis/api.test.ts b/frontend/src/features/analysis/api.test.ts index 720052d..c8476de 100644 --- a/frontend/src/features/analysis/api.test.ts +++ b/frontend/src/features/analysis/api.test.ts @@ -1,5 +1,11 @@ import { describe, it, expect, vi, beforeEach } from 'vitest' -import { createAnalysis, fetchAnalyses, fetchAnalysis, deleteAnalysis } from './api' +import { + createAnalysis, + fetchAnalyses, + fetchAnalysis, + deleteAnalysis, + fetchDocumentAnalyses, +} from './api' vi.mock('../../shared/api/http', () => ({ apiFetch: vi.fn(), @@ -66,4 +72,14 @@ describe('analysis API', () => { expect(apiFetch).toHaveBeenCalledWith('/api/analyses/42', { method: 'DELETE' }) }) + + it('fetchDocumentAnalyses calls GET /api/analyses?documentId=:id', async () => { + const analyses = [{ id: '1', documentId: 'doc-42', status: 'COMPLETED' }] + apiFetch.mockResolvedValue(analyses) + + const result = await fetchDocumentAnalyses('doc-42') + + expect(apiFetch).toHaveBeenCalledWith('/api/analyses?documentId=doc-42') + expect(result).toEqual(analyses) + }) }) diff --git a/frontend/src/features/analysis/api.ts b/frontend/src/features/analysis/api.ts index 97ba65a..63ae0e8 100644 --- a/frontend/src/features/analysis/api.ts +++ b/frontend/src/features/analysis/api.ts @@ -37,3 +37,7 @@ export function fetchAnalysis(id: string): Promise { export function deleteAnalysis(id: string): Promise { return apiFetch(`/api/analyses/${id}`, { method: 'DELETE' }) } + +export function fetchDocumentAnalyses(docId: string): Promise { + return apiFetch(`/api/analyses?documentId=${encodeURIComponent(docId)}`) +} diff --git a/frontend/src/features/analysis/ui/InspectResultTabs.vue b/frontend/src/features/analysis/ui/InspectResultTabs.vue new file mode 100644 index 0000000..99e34b8 --- /dev/null +++ b/frontend/src/features/analysis/ui/InspectResultTabs.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/frontend/src/pages/DocInspectTab.vue b/frontend/src/pages/DocInspectTab.vue index d362340..84020af 100644 --- a/frontend/src/pages/DocInspectTab.vue +++ b/frontend/src/pages/DocInspectTab.vue @@ -1,44 +1,141 @@ diff --git a/frontend/src/shared/i18n.ts b/frontend/src/shared/i18n.ts index 103e777..fec9e06 100644 --- a/frontend/src/shared/i18n.ts +++ b/frontend/src/shared/i18n.ts @@ -361,6 +361,17 @@ const messages: Messages = { 'settings.about': '\u00C0 propos', 'settings.designArticle': 'Comment Docling Studio a \u00e9t\u00e9 con\u00e7u', + // Inspect tab (#240, #241) + 'inspect.tabMarkdown': 'Markdown', + 'inspect.tabElements': '\u00c9l\u00e9ments', + 'inspect.tabImages': 'Images', + 'inspect.noAnalysis': 'Aucune analyse disponible', + 'inspect.noAnalysisSub': 'Analysez ce document dans le Studio pour voir sa structure.', + 'inspect.goToStudio': 'Aller dans le Studio', + 'inspect.retry': 'R\u00e9essayer', + 'inspect.noElements': + 'Aucun \u00e9l\u00e9ment \u2014 lancez une analyse pour g\u00e9n\u00e9rer la structure.', + // Doc workspace (#216, #218) 'workspace.tabs.ask': 'Ask', 'workspace.tabs.inspect': 'Inspect', @@ -758,6 +769,16 @@ const messages: Messages = { 'settings.about': 'About', 'settings.designArticle': 'How Docling Studio was designed', + // Inspect tab (#240, #241) + 'inspect.tabMarkdown': 'Markdown', + 'inspect.tabElements': 'Elements', + 'inspect.tabImages': 'Images', + 'inspect.noAnalysis': 'No analysis available', + 'inspect.noAnalysisSub': 'Analyze this document in Studio to see its structure.', + 'inspect.goToStudio': 'Go to Studio', + 'inspect.retry': 'Retry', + 'inspect.noElements': 'No elements — run an analysis to generate structure.', + // Doc workspace (#216, #218) 'workspace.tabs.ask': 'Ask', 'workspace.tabs.inspect': 'Inspect',