@arela/uploader 1.0.24 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/docs/AUTO_PROCESSING_PIPELINE.md +258 -0
  2. package/docs/COMPLETE_USAGE_GUIDE.md +1363 -0
  3. package/docs/DATABASESERVICE_IMPROVEMENTS.md +546 -0
  4. package/docs/PASO_2_TEST_RESULTS.md +298 -0
  5. package/docs/PASO_3_PLAN.md +385 -0
  6. package/docs/PHASE_1_FILE_DETECTION.md +366 -0
  7. package/docs/PHASE_2_API_INTEGRATION.md +426 -0
  8. package/docs/PHASE_3_DATABASE_MANAGEMENT.md +480 -0
  9. package/docs/PHASE_4_FILE_OPERATIONS.md +448 -0
  10. package/docs/PHASE_5_WATCH_MODE.md +450 -0
  11. package/docs/PHASE_6_SIGNAL_HANDLING.md +472 -0
  12. package/docs/PHASE_7_ADVANCED_FEATURES.md +560 -0
  13. package/docs/PLAN_WATCH_FEATURE.md +417 -0
  14. package/docs/README.md +480 -0
  15. package/docs/SCHEMA_ALIGNMENT_SUMMARY.md +301 -0
  16. package/docs/SMARTWATCH_DATABASE_REFACTORING.md +181 -0
  17. package/docs/SMART_WATCH_DATABASE_CHANGES.md +502 -0
  18. package/docs/TESTING_WATCH_MODE.md +212 -0
  19. package/docs/WATCHER_API_IMPLEMENTATION.md +520 -0
  20. package/docs/WATCHER_API_INTEGRATION.md +562 -0
  21. package/docs/WATCHER_SETUP_GUIDE.md +614 -0
  22. package/docs/WATCH_ARCHITECTURE.md +395 -0
  23. package/docs/WATCH_AUTO_PIPELINE.md +334 -0
  24. package/docs/WATCH_CONFIGURATION.md +267 -0
  25. package/docs/WATCH_USAGE_GUIDE.md +567 -0
  26. package/docs/commands.md +14 -0
  27. package/package.json +1 -1
  28. package/src/commands/IdentifyCommand.js +11 -0
  29. package/src/config/config.js +2 -2
  30. package/src/file-detection.js +42 -1
  31. package/src/scoring/scoring-engine.js +40 -7
  32. package/src/services/LoggingService.js +5 -3
  33. package/.vscode/settings.json +0 -1
  34. package/coverage/IdentifyCommand.js.html +0 -1462
  35. package/coverage/PropagateCommand.js.html +0 -1507
  36. package/coverage/PushCommand.js.html +0 -1504
  37. package/coverage/ScanCommand.js.html +0 -1654
  38. package/coverage/UploadCommand.js.html +0 -1846
  39. package/coverage/WatchCommand.js.html +0 -4111
  40. package/coverage/base.css +0 -224
  41. package/coverage/block-navigation.js +0 -87
  42. package/coverage/favicon.png +0 -0
  43. package/coverage/index.html +0 -191
  44. package/coverage/lcov-report/IdentifyCommand.js.html +0 -1462
  45. package/coverage/lcov-report/PropagateCommand.js.html +0 -1507
  46. package/coverage/lcov-report/PushCommand.js.html +0 -1504
  47. package/coverage/lcov-report/ScanCommand.js.html +0 -1654
  48. package/coverage/lcov-report/UploadCommand.js.html +0 -1846
  49. package/coverage/lcov-report/WatchCommand.js.html +0 -4111
  50. package/coverage/lcov-report/base.css +0 -224
  51. package/coverage/lcov-report/block-navigation.js +0 -87
  52. package/coverage/lcov-report/favicon.png +0 -0
  53. package/coverage/lcov-report/index.html +0 -191
  54. package/coverage/lcov-report/prettify.css +0 -1
  55. package/coverage/lcov-report/prettify.js +0 -2
  56. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  57. package/coverage/lcov-report/sorter.js +0 -210
  58. package/coverage/lcov.info +0 -1937
  59. package/coverage/prettify.css +0 -1
  60. package/coverage/prettify.js +0 -2
  61. package/coverage/sort-arrow-sprite.png +0 -0
  62. package/coverage/sorter.js +0 -210
  63. package/docs/API_ENDPOINTS_FOR_DETECTION.md +0 -647
  64. package/docs/API_RETRY_MECHANISM.md +0 -338
  65. package/docs/ARELA_IDENTIFY_IMPLEMENTATION.md +0 -489
  66. package/docs/ARELA_IDENTIFY_QUICKREF.md +0 -186
  67. package/docs/ARELA_PROPAGATE_IMPLEMENTATION.md +0 -581
  68. package/docs/ARELA_PROPAGATE_QUICKREF.md +0 -272
  69. package/docs/ARELA_PUSH_IMPLEMENTATION.md +0 -577
  70. package/docs/ARELA_PUSH_QUICKREF.md +0 -322
  71. package/docs/ARELA_SCAN_IMPLEMENTATION.md +0 -373
  72. package/docs/ARELA_SCAN_QUICKREF.md +0 -139
  73. package/docs/CROSS_PLATFORM_PATH_HANDLING.md +0 -597
  74. package/docs/DETECTION_ATTEMPT_TRACKING.md +0 -414
  75. package/docs/MIGRATION_UPLOADER_TO_FILE_STATS.md +0 -1020
  76. package/docs/MULTI_LEVEL_DIRECTORY_SCANNING.md +0 -494
  77. package/docs/QUICK_REFERENCE_API_DETECTION.md +0 -264
  78. package/docs/REFACTORING_SUMMARY_DETECT_PEDIMENTOS.md +0 -200
  79. package/docs/STATS_COMMAND_SEQUENCE_DIAGRAM.md +0 -287
  80. package/docs/STATS_COMMAND_SIMPLE.md +0 -93
@@ -0,0 +1,334 @@
1
+ # Watch Mode - Automatic Processing Pipeline
2
+
3
+ ## 📋 Overview
4
+
5
+ El sistema de Watch Mode ahora incluye un **pipeline automático de 4 pasos** que se ejecuta automáticamente cuando se detecta un archivo nuevo en los directorios monitoreados.
6
+
7
+ ## 🔄 Pipeline de 4 Pasos
8
+
9
+ Cuando se detecta un nuevo archivo en watch mode, se ejecuta automáticamente:
10
+
11
+ ### Paso 1: Recopilación de Estadísticas (Stats)
12
+ ```bash
13
+ stats --stats-only
14
+ ```
15
+ - **Objetivo**: Recopilar información del archivo en la base de datos
16
+ - **Resultado**: Archivo registrado en tabla `uploads`
17
+
18
+ ### Paso 2: Detección de Pedimentos (PDF Detection)
19
+ ```bash
20
+ detect --detect-pdfs
21
+ ```
22
+ - **Objetivo**: Identificar si existe un pedimento simplificado
23
+ - **Resultado**: Si no hay pedimento, otros documentos en el mismo directorio no se subirán
24
+ - **Importancia**: Crucial para mantener integridad de datos
25
+
26
+ ### Paso 3: Propagación de Arela Path
27
+ ```bash
28
+ detect --propagate-arela-path
29
+ ```
30
+ - **Objetivo**: Propagar el `arela_path` desde pedimentos a documentos relacionados
31
+ - **Resultado**: Todos los documentos en el mismo directorio tienen referencia válida
32
+
33
+ ### Paso 4: Upload por RFC con Estructura
34
+ ```bash
35
+ upload --upload-by-rfc --folder-structure <estructura>
36
+ ```
37
+ - **Objetivo**: Subir archivos al bucket Arela con estructura de carpetas
38
+ - **Resultado**: Archivos organizados según `folderStructure` configurada
39
+
40
+ ## ⚙️ Configuración
41
+
42
+ ### 1. Configurar Directorios en `.env`
43
+
44
+ Usar formato JSON con configuración por directorio:
45
+
46
+ ```env
47
+ WATCH_DIRECTORY_CONFIGS={"../../Documents/2022":"estructura-2022","../../Documents/2023":"estructura-2023"}
48
+ ```
49
+
50
+ **Formato del JSON:**
51
+ - **Clave**: Ruta del directorio a monitorear
52
+ - **Valor**: `folderStructure` a usar en el upload
53
+
54
+ ### 2. Iniciar Watch Mode
55
+
56
+ ```bash
57
+ # Activar watch mode con auto-processing (default)
58
+ arela watch
59
+
60
+ # O especificar directorios:
61
+ arela watch -d "../../Documents/2022,../../Documents/2023"
62
+
63
+ # Deshabilitar auto-processing si lo necesitas:
64
+ arela watch --no-auto-processing
65
+ ```
66
+
67
+ ## 📊 Estadísticas y Logging
68
+
69
+ Cada ejecución del pipeline genera:
70
+
71
+ 1. **ID de Pipeline**: ID único para rastrear la ejecución
72
+ 2. **Logs Detallados**: Cada paso registra su progreso
73
+ 3. **Summary**: Resumen final con estado de éxito/fallo
74
+
75
+ ### Ejemplo de Output:
76
+
77
+ ```
78
+ 🔄 Starting processing pipeline pipeline-1731557400000-abc123def for file: ../../Documents/2022/documento.pdf
79
+ Watch directory: ../../Documents/2022
80
+ Folder structure: estructura-2022
81
+
82
+ 📊 [Step 1/4] Running stats collection (stats-only)...
83
+ ✅ Stats collection completed in 1250ms
84
+
85
+ 🔍 [Step 2/4] Running PDF detection (detect --detect-pdfs)...
86
+ ✅ PDF detection completed in 2340ms
87
+ 📊 Results: 5 detected, 150 processed
88
+
89
+ 🔄 [Step 3/4] Running arela_path propagation (detect --propagate-arela-path)...
90
+ ✅ Arela path propagation completed in 890ms
91
+ 📊 Results: 150 processed, 145 updated
92
+
93
+ 📤 [Step 4/4] Running RFC-based upload with folder structure...
94
+ ✅ RFC upload completed in 5600ms
95
+ 📊 Results: 145 processed, 140 uploaded
96
+
97
+ ✅ Processing pipeline pipeline-1731557400000-abc123def completed in 10080ms
98
+ Summary: ✅ All 4 steps completed successfully!
99
+ ```
100
+
101
+ ## 🎯 Casos de Uso
102
+
103
+ ### Caso 1: Upload Automático de Nuevos Documentos
104
+
105
+ 1. Usuario coloca documento en `Documents/2022`
106
+ 2. WatchService detecta el archivo
107
+ 3. Pipeline se ejecuta automáticamente
108
+ 4. Documento se sube a Arela con estructura definida
109
+
110
+ **Ventaja**: Sin intervención manual
111
+
112
+ ### Caso 2: Validación de Pedimentos
113
+
114
+ 1. Se carga pedimento simplificado
115
+ 2. Step 2 (PDF Detection) lo identifica
116
+ 3. Step 3 (Path Propagation) vincula documentos relacionados
117
+ 4. Step 4 (Upload) sube todo con estructura
118
+
119
+ **Ventaja**: Garantiza integridad de datos
120
+
121
+ ### Caso 3: Múltiples Directorios con Estructuras Diferentes
122
+
123
+ ```env
124
+ WATCH_DIRECTORY_CONFIGS={
125
+ "../../Documents/2022":"estructura-2022",
126
+ "../../Documents/2023":"estructura-2023",
127
+ "../../Invoices":"estructura-facturas"
128
+ }
129
+ ```
130
+
131
+ **Ventaja**: Cada directorio usa su propia estructura
132
+
133
+ ## 🛠️ Componentes Técnicos
134
+
135
+ ### AutoProcessingService (`src/services/AutoProcessingService.js`)
136
+
137
+ **Responsabilidades**:
138
+ - Orquestar la ejecución de 4 pasos
139
+ - Prevenir procesamiento concurrente
140
+ - Generar logs detallados
141
+ - Crear resumen de resultados
142
+
143
+ **Métodos Principales**:
144
+ - `executeProcessingPipeline(options)` - Ejecuta todo el flujo
145
+ - `getStats()` - Obtiene estadísticas
146
+ - `resetStats()` - Reinicia contador
147
+
148
+ ### WatchService (`src/services/WatchService.js`)
149
+
150
+ **Enhancements**:
151
+ - Mapeo de directorios con configuración (`directoryConfigs`)
152
+ - Métodos de auto-processing:
153
+ - `enableAutoProcessing(options)` - Habilita pipeline
154
+ - `disableAutoProcessing()` - Deshabilita pipeline
155
+ - `isAutoProcessingEnabled()` - Verifica estado
156
+
157
+ ### WatchCommand (`src/commands/WatchCommand.js`)
158
+
159
+ **Enhancements**:
160
+ - Parsea configuración JSON de directorios
161
+ - Pasa `directoryConfigs` a `WatchService`
162
+ - Soporta opción CLI `--no-auto-processing`
163
+
164
+ ## 📝 Consideraciones Importantes
165
+
166
+ ### 1. Requisitos de Base de Datos
167
+
168
+ El pipeline requiere que la base de datos esté configurada:
169
+ ```env
170
+ SUPABASE_URL=...
171
+ SUPABASE_KEY=...
172
+ SUPABASE_BUCKET=...
173
+ ```
174
+
175
+ ### 2. Dependencias de Servicios
176
+
177
+ Asegúrate de que están disponibles:
178
+ - `DatabaseService` - Para stats y detection
179
+ - `UploadServiceFactory` - Para RFC upload
180
+ - Logger configurado
181
+
182
+ ### 3. Validación de Directorio
183
+
184
+ El sistema valida:
185
+ - ✅ Directorio existe
186
+ - ✅ Archivo es válido (no temporal)
187
+ - ✅ Configuración está definida
188
+
189
+ ### 4. Manejo de Errores
190
+
191
+ Si algún paso falla:
192
+ - Se loguea el error
193
+ - Pipeline continúa (excepto si falla step 1)
194
+ - Se genera resumen con estado de fallo
195
+
196
+ ## 🔧 Configuración Avanzada
197
+
198
+ ### Desabilitar Pipeline Temporalmente
199
+
200
+ ```bash
201
+ # CLI
202
+ arela watch --no-auto-processing
203
+
204
+ # O en código
205
+ watchService.disableAutoProcessing()
206
+ ```
207
+
208
+ ### Cambiar Batch Size
209
+
210
+ ```bash
211
+ # En CLI
212
+ arela watch -b 20
213
+
214
+ # O en config
215
+ WATCH_BATCH_SIZE=20
216
+ ```
217
+
218
+ ### Ignorar Patrones de Archivos
219
+
220
+ ```env
221
+ WATCH_IGNORE_PATTERNS=*.tmp,*.bak,*.swp,._*
222
+ ```
223
+
224
+ ## 📈 Monitoreo
225
+
226
+ ### Ver Estadísticas en Tiempo Real
227
+
228
+ El WatchService mantiene estadísticas:
229
+ ```javascript
230
+ const stats = watchService.getStats();
231
+ console.log(stats.pipelinesTriggered); // Número de pipelines ejecutados
232
+ ```
233
+
234
+ ### Logs Detallados
235
+
236
+ Habilita verbose logging:
237
+ ```bash
238
+ arela watch -v
239
+ ```
240
+
241
+ O en `.env`:
242
+ ```env
243
+ VERBOSE_LOGGING=true
244
+ ```
245
+
246
+ ## ❓ Troubleshooting
247
+
248
+ ### Pipeline no se ejecuta
249
+
250
+ **Causa**: Auto-processing deshabilitado
251
+ ```bash
252
+ # Verificar estado
253
+ arela watch
254
+
255
+ # Si necesitas habilitar
256
+ arela watch (se habilita por defecto)
257
+ ```
258
+
259
+ ### Errores en Step 2 (PDF Detection)
260
+
261
+ **Causa**: Base de datos no configurada
262
+ ```env
263
+ SUPABASE_URL=...
264
+ SUPABASE_KEY=...
265
+ ```
266
+
267
+ ### Archivos no se suben
268
+
269
+ **Causa**: No hay RFC válido
270
+ ```bash
271
+ # Verificar RFCs configurados
272
+ arela config
273
+ ```
274
+
275
+ ## 📚 Comandos Relacionados
276
+
277
+ ```bash
278
+ # Ver configuración
279
+ arela config
280
+
281
+ # Ejecutar pasos manualmente
282
+ arela stats --stats-only
283
+ arela detect --detect-pdfs
284
+ arela detect --propagate-arela-path
285
+ arela upload --upload-by-rfc --folder-structure estructura-2022
286
+
287
+ # Query
288
+ arela query --ready-files
289
+ ```
290
+
291
+ ## 🎓 Ejemplo Completo
292
+
293
+ ### 1. Configurar `.env`
294
+
295
+ ```env
296
+ WATCH_ENABLED=true
297
+ WATCH_DIRECTORY_CONFIGS={"../../Documents":"estructura-principal"}
298
+ WATCH_STRATEGY=batch
299
+ WATCH_BATCH_SIZE=10
300
+ ```
301
+
302
+ ### 2. Iniciar Watch Mode
303
+
304
+ ```bash
305
+ node src/index.js watch -v
306
+ ```
307
+
308
+ ### 3. Colocar Archivo
309
+
310
+ ```bash
311
+ cp documento.pdf ../../Documents/
312
+ ```
313
+
314
+ ### 4. Observar Pipeline
315
+
316
+ ```
317
+ [AutoPipeline] Triggering 4-step processing pipeline for: ../../Documents/documento.pdf
318
+ [Step 1/4] Running stats collection...
319
+ ✅ Stats collection completed
320
+ [Step 2/4] Running PDF detection...
321
+ ✅ PDF detection completed
322
+ [Step 3/4] Running arela_path propagation...
323
+ ✅ Arela path propagation completed
324
+ [Step 4/4] Running RFC-based upload...
325
+ ✅ RFC upload completed
326
+ ✅ Processing pipeline completed successfully!
327
+ ```
328
+
329
+ ---
330
+
331
+ Para más información, consulta:
332
+ - [WATCH_CONFIGURATION.md](WATCH_CONFIGURATION.md)
333
+ - [PHASE_2_API_INTEGRATION.md](PHASE_2_API_INTEGRATION.md)
334
+ - [PHASE_3_DATABASE_MANAGEMENT.md](PHASE_3_DATABASE_MANAGEMENT.md)
@@ -0,0 +1,267 @@
1
+ # 🔧 Configuración del Watch Mode - Fase 3
2
+
3
+ ## Variables de Ambiente
4
+
5
+ El Watch Mode puede configurarse mediante variables de ambiente en el archivo `.env`:
6
+
7
+ ```bash
8
+ # Habilitar watch mode (opcional, puede usarse el comando CLI directamente)
9
+ WATCH_ENABLED=true
10
+
11
+ # Directorios a observar (separados por coma)
12
+ WATCH_DIRECTORIES=/ruta/carpeta1,/ruta/carpeta2,/ruta/carpeta3
13
+
14
+ # Estrategia de upload (opciones: individual|batch|full-structure)
15
+ # - individual: Sube solo el archivo modificado más reciente
16
+ # - batch: Sube un lote de N archivos recientes
17
+ # - full-structure: Sube la estructura completa de carpetas
18
+ WATCH_STRATEGY=batch
19
+
20
+ # Debouncing en milisegundos (esperar entre eventos antes de procesar)
21
+ WATCH_DEBOUNCE_MS=1000
22
+
23
+ # Tamaño de batch para strategy batch
24
+ WATCH_BATCH_SIZE=10
25
+
26
+ # Usar polling en lugar de eventos nativos del filesystem
27
+ # Útil para sistemas de archivos remotos o NFS
28
+ WATCH_USE_POLLING=false
29
+
30
+ # Interval de polling en milisegundos (solo si WATCH_USE_POLLING=true)
31
+ WATCH_POLL_INTERVAL=100
32
+
33
+ # Umbral de estabilidad en ms (esperar a que el archivo deje de cambiar)
34
+ WATCH_STABILITY_THRESHOLD=300
35
+
36
+ # Patrones a ignorar (separados por coma, se usan como regex)
37
+ WATCH_IGNORE_PATTERNS=*.tmp,*.bak,*.swp
38
+
39
+ # Detección automática de tipos de documento
40
+ WATCH_AUTO_DETECT=false
41
+
42
+ # Organización automática de archivos
43
+ WATCH_AUTO_ORGANIZE=false
44
+ ```
45
+
46
+ ## Opciones de Línea de Comandos
47
+
48
+ ```bash
49
+ arela watch [options]
50
+
51
+ Opciones:
52
+ -d, --directories <paths> Directorios a observar (separados por coma)
53
+ -s, --strategy <strategy> Estrategia: individual|batch|full-structure
54
+ (default: "batch")
55
+ --debounce <ms> Debounce en milisegundos (default: 1000)
56
+ -b, --batch-size <size> Tamaño de batch (default: 10)
57
+ --poll <ms> Usar polling con este intervalo
58
+ --ignore <patterns> Patrones a ignorar (separados por coma)
59
+ --auto-detect Habilitar detección automática
60
+ --auto-organize Habilitar organización automática
61
+ --dry-run Simular cambios sin subir
62
+ --verbose Modo verbose para logging
63
+ -h, --help Mostrar ayuda
64
+ ```
65
+
66
+ ## Prioridad de Configuración
67
+
68
+ La configuración se aplica en este orden (primero gana):
69
+
70
+ 1. **Opciones CLI** (línea de comandos) - Mayor prioridad
71
+ 2. **Variables de Ambiente** (.env)
72
+ 3. **Valores por Defecto** - Menor prioridad
73
+
74
+ Ejemplo: Si especificas `--strategy individual` en CLI pero `WATCH_STRATEGY=batch` en .env, se usará `individual`.
75
+
76
+ ## Ejemplos de Uso
77
+
78
+ ### Ejemplo 1: Configuración Mínima
79
+
80
+ ```bash
81
+ # Solo especificar directorios
82
+ arela watch --directories /ruta/carpeta
83
+
84
+ # O usar variable de ambiente
85
+ export WATCH_DIRECTORIES=/ruta/carpeta
86
+ arela watch
87
+ ```
88
+
89
+ ### Ejemplo 2: Batch Upload con Debouncing
90
+
91
+ ```bash
92
+ arela watch \
93
+ --directories /documentos,/pdfs \
94
+ --strategy batch \
95
+ --batch-size 20 \
96
+ --debounce 2000 \
97
+ --verbose
98
+ ```
99
+
100
+ ### Ejemplo 3: Full Structure Upload
101
+
102
+ ```bash
103
+ arela watch \
104
+ --directories /datos \
105
+ --strategy full-structure \
106
+ --debounce 1000
107
+ ```
108
+
109
+ ### Ejemplo 4: Individual Uploads
110
+
111
+ ```bash
112
+ arela watch \
113
+ --directories /uploads \
114
+ --strategy individual \
115
+ --debounce 500 \
116
+ --auto-detect
117
+ ```
118
+
119
+ ### Ejemplo 5: Usando Polling (Sistemas Remotos)
120
+
121
+ ```bash
122
+ arela watch \
123
+ --directories /mnt/nfs/compartido \
124
+ --poll 1000 \
125
+ --ignore "*.tmp,*.lock,.DS_Store"
126
+ ```
127
+
128
+ ### Ejemplo 6: Dry Run (Prueba sin Subir)
129
+
130
+ ```bash
131
+ arela watch \
132
+ --directories /test \
133
+ --dry-run \
134
+ --verbose
135
+ ```
136
+
137
+ ### Ejemplo 7: Con .env File
138
+
139
+ Crear archivo `.env`:
140
+
141
+ ```bash
142
+ WATCH_DIRECTORIES=/documentos,/pdfs
143
+ WATCH_STRATEGY=batch
144
+ WATCH_DEBOUNCE_MS=1500
145
+ WATCH_BATCH_SIZE=15
146
+ WATCH_IGNORE_PATTERNS=*.tmp,*.bak
147
+ WATCH_AUTO_DETECT=true
148
+ ```
149
+
150
+ Luego ejecutar:
151
+
152
+ ```bash
153
+ arela watch --verbose
154
+ ```
155
+
156
+ ## Configuración en config.js
157
+
158
+ La configuración se carga automáticamente en `src/config/config.js`:
159
+
160
+ ```javascript
161
+ appConfig.watch = {
162
+ enabled: false, // bool
163
+ directories: [], // string[]
164
+ strategy: 'batch', // 'individual'|'batch'|'full-structure'
165
+ debounceMs: 1000, // number
166
+ batchSize: 10, // number
167
+ usePolling: false, // bool
168
+ pollInterval: 100, // number (ms)
169
+ stabilityThreshold: 300, // number (ms)
170
+ ignorePatterns: [], // string[] (regex patterns)
171
+ autoDetect: false, // bool
172
+ autoOrganize: false, // bool
173
+ }
174
+ ```
175
+
176
+ ## Acceso a la Configuración en Código
177
+
178
+ ```javascript
179
+ import appConfig from './config/config.js';
180
+
181
+ // Obtener toda la configuración
182
+ const watchConfig = appConfig.getWatchConfig();
183
+
184
+ // Obtener directorios específicos
185
+ const directories = appConfig.getWatchDirectories(cliDirs);
186
+
187
+ // Validar configuración
188
+ appConfig.validateWatchConfig(directories);
189
+ ```
190
+
191
+ ## Validación de Configuración
192
+
193
+ El sistema valida automáticamente:
194
+
195
+ ✅ Al menos un directorio especificado
196
+ ✅ Estrategia válida (individual|batch|full-structure)
197
+ ✅ Debounce >= 0
198
+ ✅ Batch size >= 1
199
+ ✅ Directorios accesibles
200
+
201
+ ## Casos de Uso Recomendados
202
+
203
+ ### Use Case 1: Monitoreo Simple
204
+ ```bash
205
+ arela watch --directories /upload
206
+ ```
207
+ - Usa estrategia batch (por defecto)
208
+ - Debounce: 1000ms
209
+ - Ideal para: Usuarios ocasionales
210
+
211
+ ### Use Case 2: Monitoreo de Alto Volumen
212
+ ```bash
213
+ arela watch \
214
+ --directories /datos \
215
+ --strategy batch \
216
+ --batch-size 50 \
217
+ --debounce 500
218
+ ```
219
+ - Procesa más archivos por batch
220
+ - Debounce más corto para reactividad
221
+ - Ideal para: Muchos cambios rápidos
222
+
223
+ ### Use Case 3: Sincronización en Tiempo Real
224
+ ```bash
225
+ arela watch \
226
+ --directories /sync \
227
+ --strategy individual \
228
+ --debounce 300
229
+ ```
230
+ - Cada archivo se procesa casi inmediatamente
231
+ - Overhead más alto
232
+ - Ideal para: Cambios críticos
233
+
234
+ ### Use Case 4: Estructura Completa
235
+ ```bash
236
+ arela watch \
237
+ --directories /backup \
238
+ --strategy full-structure
239
+ ```
240
+ - Procesa estructura completa cada vez
241
+ - Ideal para: Backups/snapshots
242
+
243
+ ## Troubleshooting
244
+
245
+ ### El watch no detecta cambios
246
+ - Verificar que el directorio existe: `ls -la /ruta`
247
+ - Intentar usar `--poll` para sistemas remotos
248
+ - Aumentar `--debounce` si hay muchos cambios rápidos
249
+
250
+ ### Memory leak o CPU alto
251
+ - Reducir `--batch-size`
252
+ - Aumentar `--debounce`
253
+ - Usar `--ignore` para excluir patrones innecesarios
254
+
255
+ ### Errores de permisos
256
+ - Verificar permisos: `ls -ld /ruta`
257
+ - Ejecutar con usuario apropiado
258
+
259
+ ### Archivos no se suben
260
+ - Usar `--dry-run --verbose` para debug
261
+ - Verificar patrones de ignore: `--ignore ""`
262
+ - Revisar logs en `arela-upload.log`
263
+
264
+ ---
265
+
266
+ **Documentación de Configuración - Fase 3**
267
+ Última actualización: Nov 14, 2025