Translation Cache

Enterprise Feature

Sistema de cache de dos niveles (capitulo + chunk) para maximizar el ahorro en traducciones repetidas y reducir tiempos de procesamiento.

Arquitectura de Dos Niveles

Chapter Cache

Nivel 1

Cache a nivel de capitulo completo. Si el capitulo entero es identico a uno previamente traducido, se reutiliza directamente.

  • 100% ahorro cuando hay match exacto
  • Requiere texto identico (caracter por caracter)

Chunk Cache

Nivel 2

Cache granular a nivel de chunk (6000 caracteres). Permite reutilizar partes de capitulos aunque el capitulo completo sea diferente.

  • Mayor probabilidad de hits
  • Ahorro parcial (solo chunks cacheados)

Como Funciona el Hash

Cada traduccion se identifica por un hash SHA-256 unico generado a partir de:

Texto

Contenido original completo

Modelo

gpt-4o-mini, claude-3-haiku, etc.

Origen

Idioma fuente (en)

Destino

Idioma objetivo (es)

Glosario

MD5 de terminos ordenados

hash = SHA256(texto + modelo + origen + destino + MD5(glosario))

Flujo de Traduccion con Cache

1

Capitulo llega al worker

Se verifica primero en Chapter Cache

Cache HIT: Retornar traduccion inmediatamente
2

Dividir en chunks de 6000 caracteres

Cada chunk se verifica en Chunk Cache

Cache HIT: Usar chunk cacheado
Cache MISS: Traducir y guardar en cache
3

Pasadas 2 y 3 (Consistencia + Pulido)

Se aplican al texto completo unido

4

Guardar en Chapter Cache

Para futuros capitulos identicos

API Reference

GET/api/translation-cache

Obtiene estadisticas actuales del cache (entradas, hits, tokens ahorrados).

{
  "totalEntries": 1250,
  "totalHits": 345,
  "totalTokensSaved": 2500000,
  "hitRate": 21,
  "estimatedSavings": 0.94,
  "topModels": [
    { "model": "gpt-4o-mini", "entries": 800, "hits": 200 }
  ]
}
GET/api/translation-cache/history

Historial de uso del cache por dia con tendencias.

days=7Numero de dias (1-30)
{
  "byDay": [
    { "date": "2025-12-18", "chapterHits": 12, "chunkHits": 45, "tokensSaved": 15000 }
  ],
  "trend": {
    "hitsChange": 15.2,
    "savingsChange": 22.5
  },
  "summary": {
    "totalHits": 89,
    "estimatedSavings": 0.45
  }
}
DELETE/api/translation-cacheSUPER_ADMIN

Limpia entradas antiguas del cache que nunca han sido reutilizadas.

olderThanDays=90Eliminar entradas mas antiguas que X dias
{ "deleted": 150, "message": "Cache limpiado exitosamente" }

Mejores Practicas

Maximizar Hits

  • Usa el mismo modelo consistentemente
  • Mantiene glosarios estables
  • Evita cambios menores en texto fuente
  • Procesa libros similares con mismo modelo

Cuando el Cache NO Ayuda

  • Libros completamente unicos
  • Cambios frecuentes de modelo
  • Glosarios muy diferentes entre libros
  • Textos cortos (menos de un chunk)

Metricas y Monitoreo

Esquema de Base de Datos

TranslationCache

Cache a nivel de capitulo completo

model TranslationCache {
  id         String   @id
  hash       String   @unique  // SHA-256
  sourceText String   @db.Text
  targetText String   @db.Text
  model      String
  tokensUsed Int
  hitCount   Int      @default(0)
  lastHitAt  DateTime?
}

ChunkCache

Cache granular a nivel de chunk (6000 chars)

model ChunkCache {
  id              String   @id
  hash            String   @unique  // SHA-256
  sourceChunk     String   @db.Text
  translatedChunk String   @db.Text
  model           String
  glossaryHash    String   // MD5 del glosario
  tokensUsed      Int
  hitCount        Int      @default(0)
  lastHitAt       DateTime?
}

Documentacion actualizada: Diciembre 2025

Ver toda la documentacion