Add a new operation history feature for the extractor module that tracks all extraction operations with persistent database storage. Features: - Records extraction operations with batch tracking (UUID-based) - Preserves production ID to order number mapping - Shows batch statistics (orders, records, success/failure counts) - Expandable details for each batch showing individual order records - User-based permission: Admin sees all records, User sees own records only - Delete functionality with permission validation Database: - New ExtractorOperationHistory table schema - Supports both SQL Server and MySQL - Indexed on BatchId, UserId, and OperationTime Files: - Add DAO class for history operations - Add IPC handler with permission checks - Add preload API wrapper - Add React modal component with expandable batch details - Integrate history recording into extractor handler - Add operation history button to ExtractorPage Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
31 lines
1.0 KiB
TypeScript
31 lines
1.0 KiB
TypeScript
import { IPC_CHANNELS } from '../../shared/ipc-channels'
|
|
import { invokeIpc } from '../lib/ipc'
|
|
import type {
|
|
BatchStats,
|
|
OperationHistoryRecord,
|
|
GetBatchesOptions
|
|
} from '../../main/types/operation-history.types'
|
|
import type { IpcResult } from '../../main/types/ipc.types'
|
|
|
|
export const operationHistoryApi = {
|
|
/**
|
|
* Get list of operation batches
|
|
* Admin users receive all batches, regular users only their own
|
|
*/
|
|
getBatches: (options?: GetBatchesOptions): Promise<IpcResult<BatchStats[]>> =>
|
|
invokeIpc(IPC_CHANNELS.OPERATION_HISTORY_GET_BATCHES, options),
|
|
|
|
/**
|
|
* Get detailed records for a specific batch
|
|
*/
|
|
getBatchDetails: (batchId: string): Promise<IpcResult<OperationHistoryRecord[]>> =>
|
|
invokeIpc(IPC_CHANNELS.OPERATION_HISTORY_GET_BATCH_DETAILS, batchId),
|
|
|
|
/**
|
|
* Delete a batch
|
|
* Admin users can delete any batch, regular users only their own
|
|
*/
|
|
deleteBatch: (batchId: string): Promise<IpcResult<{ deleted: boolean }>> =>
|
|
invokeIpc(IPC_CHANNELS.OPERATION_HISTORY_DELETE_BATCH, batchId)
|
|
} as const
|