3.4 KiB
3.4 KiB
desktop_app
Aplicación de escritorio Electron + React para interactuar con el stack IPSExtractor. Permite seleccionar carpetas locales, contar servicios en facturas médicas, revisar resultados y lanzar extracciones LLM.
Flujos principales
Conteo de facturas
- Seleccionar carpeta con PDFs.
- Los PDFs se envían en lotes de 10 a
POST /count/v1/count(count-api). - Los resultados se guardan en PostgreSQL vía
POST /count-jobs(extraction). - El usuario revisa y marca archivos como válidos/inválidos.
Extracción desde conteo
- Desde el wizard de conteo, clic en "Extraer archivos válidos".
- Se llama
POST /tasks/extraction/from-countcon elcounting_task_id. - El servicio extraction lee los PDFs desde el volumen
/datay los procesa con LLM.
Extracción directa
- Seleccionar carpeta → discovery de campos → seleccionar campos → estimar costo.
- Subir PDFs en lotes a
/tasks/{id}/ingest-many. - Polling de progreso vía
GET /tasks/{id}. - Exportar resultados como CSV.
Arquitectura técnica
| Capa | Tecnología |
|---|---|
| Shell | Electron 35+ |
| UI | React 19 + TypeScript |
| Bundler | Vite |
| Estilos | CSS custom (sin framework UI) |
| IPC | contextBridge (preload.cjs) |
Comunicación con el backend
Toda la comunicación pasa por el API Gateway (http://localhost:8000).
El cliente HTTP es src/renderer/lib/apiClient.ts.
Indexación de carpetas
El proceso principal (Electron) indexa carpetas locales con electron/folderIndex.cjs:
- Modo
general: lista todos los PDFs/TIFFs de la carpeta. - Modo
radicados: busca un PDF por tipo de documento dentro de subdirectorios con nombre de radicado.
Estructura del código
electron/
main.cjs — proceso principal Electron
preload.cjs — bridge seguro main ↔ renderer (contextBridge)
folderIndex.cjs — indexación de carpetas locales
src/
renderer/
App.tsx — root: navegación y estado global
components/
CountingWizard.tsx — wizard de conteo en 3 pasos
CountResultsTable.tsx — tabla de resultados con validación
CountingStepper.tsx — indicador de progreso
ExtractionWizard.tsx — wizard de extracción en 4 pasos
ExtractionStepper.tsx — indicador de progreso
lib/
apiClient.ts — cliente HTTP hacia el API Gateway
payloads.ts — builders de FormData y JSON
pathMapping.ts — mapeo rutas locales ↔ contenedor
csv.ts — exportación CSV
styles.css — estilos globales
shared/
types.ts — tipos compartidos main/renderer
Variables de configuración (runtime)
| Variable | Default | Descripción |
|---|---|---|
API Gateway URL |
http://localhost:8000 |
Configurable en la pantalla de Configuración |
| Ruta local de documentos | — | Seleccionada con el explorador de archivos |
| Ruta en contenedor | /data |
Prefijo donde Docker monta los documentos |
Arrancar en desarrollo
cd services/desktop_app
npm install
npm run dev
Build para producción
npm run build # compila el renderer
npm run electron:build # empaqueta la app