Versión 1.0

This commit is contained in:
lansan69
2026-03-31 20:00:04 -06:00
parent bc513ad2c4
commit e882442f8b
30 changed files with 778 additions and 89 deletions

View File

@@ -18,7 +18,7 @@ from app.services.audio.transcription_adapters import transcribe_audio_with_prov
# Inicializar el router de FastAPI para este módulo
audio_router_transcription = APIRouter()
@audio_router_transcription.post("/transcripts/", response_model=StandardTranscriptionResult)
@audio_router_transcription.post("/transcripts", response_model=StandardTranscriptionResult)
async def transcribe_audio(audio_request: AudioRequestFile = Depends()) -> StandardTranscriptionResult:
"""
Endpoint para transcribir audio simple infiriendo el proveedor de IA

View File

@@ -0,0 +1,37 @@
"""
Gateway de IA de Qualidot - Módulo de Procesamiento de Documentos
Propósito:
Este endpoint recibe un documento y lo analiza usando inteligencia artificial,
extrayendo información relevante y estructurada.
Homologación:
Sin importar qué proveedor de IA se utilice, el resultado siempre se entrega en el mismo formato estándar para Qualidot.
"""
from dotenv import load_dotenv
from fastapi import APIRouter, Depends, UploadFile, File, HTTPException
from app.schemas.document_standard import DocumentRequestFile, StandardDocumentAnalysisResult
from app.services.document.evaluations_adapters import evaluate_document_with_provider
# Inicializar el router de FastAPI para este módulo
document_router_analysis = APIRouter()
@document_router_analysis.post("/evaluations", response_model=StandardDocumentAnalysisResult)
async def evaluate_document(document_request: DocumentRequestFile = Depends()) -> StandardDocumentAnalysisResult:
"""
Endpoint para analizar documentos usando inteligencia artificial
Args:
document_request: Objeto DocumentRequestFile que contiene el archivo de documento,
el proveedor, el modelo y la rúbrica de evaluación.
Returns:
StandardDocumentAnalysisResult: Resultado del análisis de documentos en formato estándar de Qualidot
"""
try:
# Analizar el documento usando el adaptador de análisis que infiere el proveedor
analysis_result = await evaluate_document_with_provider(document_request)
return analysis_result
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))

View File

@@ -17,18 +17,19 @@ from fastapi import APIRouter, UploadFile, File, HTTPException
from fastapi.security import APIKeyHeader
# Importar los routers específicos de cada módulo
from app.api.v1.endpoints.audio.transcription import audio_router_transcription # Endpoint de transcripción de audio
from app.api.v1.endpoints.texto.resume import text_router_summary # Endpoint de resumen de texto
from app.api.v1.endpoints.texto.rubricated_analysis import text_router_analysis # Endpoint de análisis rubricado de texto
from app.api.v1.endpoints.video.transcription import video_router_transcription # Endpoint de transcripción de video
from app.api.v1.endpoints.image.rubricated_analysis import image_router_analysis # Endpoint de análisis rubricado de imágenes
from app.api.v1.endpoints.audio.transcription import audio_router_transcription # Endpoint de transcripción de audio
from app.api.v1.endpoints.texto.resume import text_router_summary # Endpoint de resumen de texto
from app.api.v1.endpoints.texto.rubricated_analysis import text_router_analysis # Endpoint de análisis rubricado de texto
from app.api.v1.endpoints.video.transcription import video_router_transcription # Endpoint de transcripción de video
from app.api.v1.endpoints.image.rubricated_analysis import image_router_analysis # Endpoint de análisis rubricado de imágenes
from app.api.v1.endpoints.document.rubricated_analysis import document_router_analysis # Endpoint de análisis rubricado de documentos
# Inicializar el router de FastAPI para los módulos de procesamiento
api_router_audio = APIRouter()
api_router_text = APIRouter()
api_router_video = APIRouter()
api_router_image = APIRouter()
api_router_document = APIRouter()
api_router_audio.include_router(
audio_router_transcription,
@@ -58,4 +59,10 @@ api_router_image.include_router(
image_router_analysis,
prefix="/image",
tags=["Procesamiento de Imágenes"]
)
)
api_router_document.include_router(
document_router_analysis,
prefix="/document",
tags=["Procesamiento de Documentos"]
)

View File

@@ -19,7 +19,7 @@ from app.services.text.resume_adapters import summarize_text_with_provider
# Inicializar el router de FastAPI para este módulo
text_router_summary = APIRouter()
@text_router_summary.post("/summaries/", response_model=StandardTextAnalysisResult)
@text_router_summary.post("/summaries", response_model=StandardTextAnalysisResult)
async def summarize_text(text_request: TextRequestFile = Depends()) -> StandardTextAnalysisResult:
"""
Endpoint para resumir texto simple infiriendo el proveedor de IA

View File

@@ -19,7 +19,7 @@ from app.services.text.evaluations_adapters import evaluate_text_with_provider
# Inicializar el router de FastAPI para este módulo
text_router_analysis = APIRouter()
@text_router_analysis.post("/evaluations/", response_model=StandardTextAnalysisResult)
@text_router_analysis.post("/evaluations", response_model=StandardTextAnalysisResult)
async def evaluate_text(text_request: TextRequestFile = Depends()) -> StandardTextAnalysisResult:
"""
Endpoint para analizar texto usando una rúbrica de evaluación infiriendo el proveedor de IA

View File

@@ -16,7 +16,7 @@ from app.services.video.transcription_adapters import transcribe_video_with_prov
# Inicializar el router de FastAPI para este módulo
video_router_transcription = APIRouter()
@video_router_transcription.post("/transcripts/", response_model=StandardTranscriptionResult)
@video_router_transcription.post("/transcripts", response_model=StandardTranscriptionResult)
async def transcribe_video(video_request: VideoRequestFile = Depends()) -> StandardTranscriptionResult:
"""
Endpoint para transcribir video simple infiriendo el proveedor de IA