UNPKG

@vulog/aima-document

Version:

Document management module for the AIMA platform. This module provides functionality to manage user documents, including creation, updates, and status management.

218 lines (173 loc) 5.77 kB
# @vulog/aima-document Document management module for the AIMA platform. This module provides functionality to manage user documents, including creation, updates, and status management. ## Installation ```bash npm install @vulog/aima-client @vulog/aima-core @vulog/aima-document ``` ## Usage ### Initialize Client ```javascript import { getClient } from '@vulog/aima-client'; import { createOrUpdateDocument, getUserDocuments, updateDocumentStatus } from '@vulog/aima-document'; const client = getClient({ apiKey: 'your-api-key', baseUrl: 'https://your-api-base-url', clientId: 'your-client-id', clientSecret: 'your-client-secret', fleetId: 'your-fleet-id', }); ``` ## API Reference ### createOrUpdateDocument Create a new document or update an existing one for a user. ```javascript const document = await createOrUpdateDocument(client, { entityId: 'user-uuid-here', documentType: 'DRIVER_LICENSE', fileData: 'base64-encoded-file-data', fileName: 'license.pdf', mimeType: 'application/pdf' }); ``` **Parameters:** - `client`: AIMA client instance - `payload`: Document configuration object - `entityId`: User UUID - `documentType`: Type of document (e.g., 'DRIVER_LICENSE', 'ID_CARD', 'PASSPORT') - `fileData`: Base64 encoded file data - `fileName`: Name of the file - `mimeType`: MIME type of the file ### getUserDocuments Retrieve all documents for a specific user. ```javascript const documents = await getUserDocuments(client, 'user-uuid-here'); ``` **Parameters:** - `client`: AIMA client instance - `entityId`: User UUID **Returns:** Array of user documents ### updateDocumentStatus Update the status of a document. ```javascript const updatedDocument = await updateDocumentStatus(client, { documentId: 'document-id-here', status: 'APPROVED', notes: 'Document verified successfully' }); ``` **Parameters:** - `client`: AIMA client instance - `payload`: Status update configuration - `documentId`: Document identifier - `status`: New status ('PENDING', 'APPROVED', 'REJECTED') - `notes`: Optional notes about the status change ## Types ### Document ```typescript interface Document { id: string; entityId: string; documentType: string; fileName: string; mimeType: string; fileSize: number; status: 'PENDING' | 'APPROVED' | 'REJECTED'; uploadDate: string; lastModified: string; notes?: string; } ``` ### DocumentType Common document types include: - `DRIVER_LICENSE`: Driver's license - `ID_CARD`: National ID card - `PASSPORT`: Passport - `INSURANCE`: Insurance document - `REGISTRATION`: Vehicle registration ## Error Handling All functions include validation and will throw appropriate errors if: - Required parameters are missing - Invalid document types are provided - File data is invalid - User or document not found ## Examples ### Complete Document Management Workflow ```javascript import { getClient } from '@vulog/aima-client'; import { createOrUpdateDocument, getUserDocuments, updateDocumentStatus } from '@vulog/aima-document'; import fs from 'fs'; const client = getClient({ apiKey: 'your-api-key', baseUrl: 'https://your-api-base-url', clientId: 'your-client-id', clientSecret: 'your-client-secret', fleetId: 'your-fleet-id', }); async function documentWorkflow() { try { // Read and encode a file const fileBuffer = fs.readFileSync('path/to/license.pdf'); const base64Data = fileBuffer.toString('base64'); // Create a new document const document = await createOrUpdateDocument(client, { entityId: 'user-uuid-here', documentType: 'DRIVER_LICENSE', fileData: base64Data, fileName: 'license.pdf', mimeType: 'application/pdf' }); console.log('Document created:', document); // Get all user documents const documents = await getUserDocuments(client, 'user-uuid-here'); console.log('User documents:', documents); // Update document status const updatedDocument = await updateDocumentStatus(client, { documentId: document.id, status: 'APPROVED', notes: 'License verified and approved' }); console.log('Document status updated:', updatedDocument); } catch (error) { console.error('Document management error:', error); } } ``` ### File Upload Helper ```javascript import { createOrUpdateDocument } from '@vulog/aima-document'; import fs from 'fs'; async function uploadDocument(client, filePath, documentType, entityId) { try { // Read file const fileBuffer = fs.readFileSync(filePath); const base64Data = fileBuffer.toString('base64'); // Get file info const stats = fs.statSync(filePath); const fileName = filePath.split('/').pop(); const mimeType = getMimeType(fileName); // Upload document return await createOrUpdateDocument(client, { entityId, documentType, fileData: base64Data, fileName, mimeType }); } catch (error) { console.error('File upload error:', error); throw error; } } function getMimeType(fileName) { const ext = fileName.split('.').pop().toLowerCase(); const mimeTypes = { 'pdf': 'application/pdf', 'jpg': 'image/jpeg', 'jpeg': 'image/jpeg', 'png': 'image/png', 'doc': 'application/msword', 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }; return mimeTypes[ext] || 'application/octet-stream'; } ```