Metadatos con SQLite y EF Core
Cómo SQLite y EF Core registran el ciclo de vida, el progreso y el estado de ingesta de documentos.
Los estados del ciclo de vida del documento
public enum DocumentStatus
{
Pending,
Processing,
Indexed,
Failed
}RAG.Core/Data/DocumentRecord.cs guarda metadatos del documento:
- ID del documento;
- nombre de archivo y tipo de contenido;
- clave de almacenamiento de objetos;
- estado de ingesta;
- mensaje de error;
- conteo final de chunks;
- etapa y porcentaje de progreso;
- chunks procesados y totales;
- timestamps.
Los estados son:
Pending
Processing
Indexed
Failed
RAG.Core/Data/RagDbContext.cs mapea esta entidad con EF Core. Esto es intencionalmente simple. SQLite es suficiente para un proyecto local de aprendizaje y da a la API y al worker un estado durable compartido.
El inicializador de base de datos vive en ServiceCollectionExtensions.EnsureRagDatabaseAsync. Usa EnsureCreatedAsync y también hace verificaciones ligeras e idempotentes de columnas para los campos de progreso. Esto evita obligar a un desarrollador a borrar datos locales después de cambios en el modelo durante el tutorial.
En un sistema de producción, normalmente reemplazarías esto con migraciones formales de EF Core.