5.2 KiB
5.2 KiB
Data Model: Typhoon OCR Integration
Feature: 232-typhoon-ocr-integration Date: 2026-05-30 Phase: Phase 1 - Design & Contracts
Entities
OCR Engine Configuration
Purpose: Represents available OCR engines with their parameters and resource requirements
Fields:
engineId: string (UUIDv7) - Unique identifier for OCR engine configurationengineName: string - Engine name (e.g., "Tesseract", "Typhoon OCR-3B")engineType: enum - Engine type (tesseract, typhoon_ocr)isActive: boolean - Whether engine is currently availablevramRequirementMB: number - VRAM requirement in MB (for AI-based engines)processingTimeLimitSeconds: number - Maximum processing time per pageconcurrentLimit: number - Maximum concurrent requests (1 for Typhoon)fallbackEngineId: string (UUIDv7, nullable) - Fallback engine when unavailablecreatedAt: datetime - Configuration creation timestampupdatedAt: datetime - Configuration last update timestamp
Relationships:
- One-to-many: OCR Engine Configuration → OCR Processing Logs
- Many-to-one: OCR Engine Configuration → OCR Engine Configuration (fallback)
Validation Rules:
engineNamemust be uniquevramRequirementMBrequired for AI-based enginesconcurrentLimitmust be >= 1fallbackEngineIdmust reference valid engine or be null
AI Model Configuration
Purpose: Represents available AI models with their VRAM requirements and use cases
Fields:
modelId: string (UUIDv7) - Unique identifier for AI model configurationmodelName: string - Model name (e.g., "gemma4:e4b", "typhoon2.1-gemma3-4b")modelType: enum - Model type (llm, embedding, ocr)ollamaModelName: string - Ollama model identifiervramRequirementMB: number - VRAM requirement in MBisActive: boolean - Whether model is currently availableuseCases: string[] - Supported use cases (e.g., ["document_analysis", "ocr_extraction"])quantization: string (nullable) - Quantization type (e.g., "Q3_K_M")createdAt: datetime - Configuration creation timestampupdatedAt: datetime - Configuration last update timestamp
Relationships:
- One-to-many: AI Model Configuration → AI Audit Logs
Validation Rules:
modelNamemust be uniquevramRequirementMBrequiredollamaModelNamemust match Ollama registryuseCasesmust include at least one valid use case
VRAM Monitor State
Purpose: Tracks GPU VRAM usage across all loaded AI models
Fields:
monitorId: string (UUIDv7) - Unique identifier for monitor statetotalVRAMMB: number - Total GPU VRAM in MBusedVRAMMB: number - Currently used VRAM in MBloadedModels: string[] - List of loaded model IDslastUpdated: datetime - Last update timestampthresholdPercent: number - VRAM usage threshold (default: 90)
Validation Rules:
usedVRAMMBmust be <=totalVRAMMBthresholdPercentmust be between 0 and 100loadedModelsmust reference valid AI Model Configurations
OCR Processing Log
Purpose: Logs all OCR processing attempts for audit and debugging
Fields:
logId: string (UUIDv7) - Unique identifier for log entrydocumentPublicId: string - Document being processedengineId: string (UUIDv7) - OCR engine usedprocessingTimeSeconds: number - Actual processing timesuccess: boolean - Whether processing succeedederrorMessage: string (nullable) - Error message if failedfallbackUsed: boolean - Whether fallback engine was usedcacheHit: boolean - Whether result was from cachetimestamp: datetime - Processing timestamp
Relationships:
- Many-to-one: OCR Processing Log → OCR Engine Configuration
Validation Rules:
documentPublicIdrequiredengineIdmust reference valid engineprocessingTimeSecondsmust be >= 0
AI Audit Log (Existing - Extended)
Purpose: Logs all AI interactions per ADR-023/023A
Extensions for Typhoon Integration:
- Add
modelTypefield to distinguish between LLM, OCR, and embedding models - Add
vramUsageMBfield to track VRAM consumption per interaction - Add
cacheHitfield to track cache utilization
State Transitions
OCR Engine Configuration
Created → Active → Inactive → Deleted
- Created: Initial state when engine configuration is added
- Active: Engine is available for use
- Inactive: Engine is temporarily unavailable (e.g., Ollama down)
- Deleted: Engine configuration is removed
AI Model Configuration
Created → Active → Inactive → Deleted
- Created: Initial state when model configuration is added
- Active: Model is available for use
- Inactive: Model is temporarily unavailable (e.g., VRAM constraints)
- Deleted: Model configuration is removed
Schema Changes
No new database tables required. Existing tables will be extended:
ai_prompts: Add Typhoon OCR prompt templatesai_audit_logs: Add modelType, vramUsageMB, cacheHit fields- New configuration tables may be added in Redis for performance (OCR Engine Configuration, AI Model Configuration)
Data Dictionary Updates
Add entries for:
- OCR Engine Configuration
- AI Model Configuration
- VRAM Monitor State
- OCR Processing Log