Implement Phase 2: end-to-end import system
Complete the import flow from file upload through duplicate resolution to transaction creation. Previously, ResolveDuplicatesAsync was a stub that only incremented counters, FileWatcherService detected files but didn't process them, and ImportsView.vue ignored the API response. Backend: - Add ParsedDataJson column to ImportBatch to persist parsed data between upload and confirm steps - Rewrite ImportService.ResolveDuplicatesAsync to deserialize parsed transactions and create/merge/skip based on user decisions, with payee matching, fingerprinting, and account balance updates - Add GetBatchesAsync for import history - Complete FileWatcherService: wait for file ready, resolve account by filename, call UploadAsync, send SignalR notification, archive file - Add GET /api/imports/batches endpoint Frontend: - Create imports API service (frontend/src/services/imports.ts) - Add ImportBatch, DuplicateResolution types - Rewrite ImportsView.vue with 3-step Vuetify stepper wizard: upload, review with duplicate handling, completion summary, plus import history table Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import api from './api'
|
||||
import type { ImportUploadResponse, ImportBatch, ResolveDuplicatesRequest } from '@/types'
|
||||
|
||||
export const importsApi = {
|
||||
upload: (accountId: string, file: File) => {
|
||||
const formData = new FormData()
|
||||
formData.append('file', file)
|
||||
return api.post<ImportUploadResponse>(`/imports/upload?accountId=${accountId}`, formData, {
|
||||
headers: { 'Content-Type': 'multipart/form-data' }
|
||||
})
|
||||
},
|
||||
|
||||
confirmBatch: (batchId: string) =>
|
||||
api.post<ImportBatch>(`/imports/batches/${batchId}/confirm`),
|
||||
|
||||
resolveDuplicates: (batchId: string, request: ResolveDuplicatesRequest) =>
|
||||
api.post<ImportBatch>(`/imports/batches/${batchId}/resolve-duplicates`, request),
|
||||
|
||||
getBatches: () =>
|
||||
api.get<ImportBatch[]>('/imports/batches'),
|
||||
}
|
||||
Reference in New Issue
Block a user