Idioma: English | Español
Este documento describe la persistencia interna usada por la API en runtime.
- ORM:
SQLModel(backendsqlalchemy) - Herramienta de migración: Alembic
- Setting de runtime:
SQLALCHEMY_DATABASE_URI - URI por defecto:
sqlite:////resources/cache/sqlite/database.db - Comportamiento al iniciar:
- La API valida conectividad de DB.
- Si falta el archivo SQLite, crea los directorios padre.
- Ejecuta
alembic upgrade headal iniciar.
Código relacionado:
aymurai/settings.pyaymurai/api/startup/database.pyaymurai/api/main.pyaymurai/database/versions/13f78d08e925_create_database.py
Fuente editable: ../../database/schema.mmd
| Columna | Tipo | Nulo | Notas |
|---|---|---|---|
id |
UUID |
no | Primary key |
created_at |
DATETIME |
no | Default server CURRENT_TIMESTAMP |
updated_at |
DATETIME |
sí | Se actualiza ante cambios |
name |
TEXT |
no | Nombre de archivo original |
| Columna | Tipo | Nulo | Notas |
|---|---|---|---|
id |
UUID |
no | Primary key, derivada del hash del texto |
text |
TEXT |
no | Texto normalizado del párrafo |
prediction |
JSON |
sí | Predicciones del modelo (list[DocLabel]) |
validation |
JSON |
sí | Etiquetas validadas manualmente (list[DocLabel]) |
created_at |
DATETIME |
no | Default server CURRENT_TIMESTAMP |
updated_at |
DATETIME |
sí | Se actualiza ante cambios |
| Columna | Tipo | Nulo | Notas |
|---|---|---|---|
id |
UUID |
no | Identificador del vínculo |
document_id |
UUID |
no | FK -> anonymization_document.id |
paragraph_id |
UUID |
no | FK -> anonymization_paragraph.id |
order |
INTEGER |
sí | Orden del párrafo en documento origen |
La clave primaria es compuesta por id, document_id, paragraph_id.
| Columna | Tipo | Nulo | Notas |
|---|---|---|---|
id |
UUID |
no | Primary key (identificador del documento) |
prediction |
JSON |
sí | Payload reservado de predicción a nivel documento; el router público actual no lo escribe |
validation |
JSON |
sí | Payload de validación a nivel documento |
created_at |
DATETIME |
no | Default server CURRENT_TIMESTAMP |
updated_at |
DATETIME |
sí | Se actualiza ante cambios |
| Columna | Tipo | Nulo | Notas |
|---|---|---|---|
id |
UUID |
no | Primary key, derivada del hash del texto |
text |
TEXT |
no | Texto normalizado del párrafo |
prediction |
JSON |
sí | Predicciones del modelo (list[DocLabel]) |
validation |
JSON |
sí | Reservado para validación por párrafo; la ruta pública hoy existe solo como lógica legacy comentada |
created_at |
DATETIME |
no | Default server CURRENT_TIMESTAMP |
updated_at |
DATETIME |
sí | Se actualiza ante cambios |
| Columna | Tipo | Nulo | Notas |
|---|---|---|---|
id |
UUID |
no | Identificador del vínculo |
document_id |
UUID |
no | FK -> datapublic_document.id |
paragraph_id |
UUID |
no | FK -> datapublic_paragraph.id |
order |
INTEGER |
sí | Orden del párrafo en documento origen |
La clave primaria es compuesta por id, document_id, paragraph_id.
POST /api/anonymizer/predict- Lee
anonymization_paragraphpor UUID de párrafo. - Escribe
anonymization_paragraph.predictioncuando el cache está activo.
- Lee
POST /api/anonymizer/disambiguate- Escribe predicciones desambiguadas en
anonymization_paragraph.prediction.
- Escribe predicciones desambiguadas en
POST /api/anonymizer/validation- Lee
anonymization_paragraph.validation.
- Lee
POST /api/anonymizer/anonymize-document- Escribe
anonymization_paragraph.validation. - Crea
anonymization_documentcon clave derivada del hash del contenido binario subido. - Crea vínculos en
anonymization_document_paragraph.
- Escribe
POST /api/datapublic/predict/{document_id}- Usa el
document_idprovisto por el cliente como primary key del documento. - Asegura existencia de
datapublic_documentcuandouse_cache=true. - Escribe
datapublic_paragraph.predictioncuandouse_cache=true. - Escribe vínculo en
datapublic_document_paragraphcuandouse_cache=true.
- Usa el
GET /api/datapublic/validation/document/{document_id}- Lee
datapublic_document.validation.
- Lee
POST /api/datapublic/validation/document/{document_id}- Hace upsert de
datapublic_document.validation.
- Hace upsert de
Los módulos de rutas para CRUD de dataset (/api/datapublic/dataset/*) existen en código pero no están montados en el router público. No deben tratarse como API pública activa hasta su exposición en core.router.
