@arela/uploader 1.0.24 → 1.1.0
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.
- package/docs/AUTO_PROCESSING_PIPELINE.md +258 -0
- package/docs/COMPLETE_USAGE_GUIDE.md +1363 -0
- package/docs/DATABASESERVICE_IMPROVEMENTS.md +546 -0
- package/docs/PASO_2_TEST_RESULTS.md +298 -0
- package/docs/PASO_3_PLAN.md +385 -0
- package/docs/PHASE_1_FILE_DETECTION.md +366 -0
- package/docs/PHASE_2_API_INTEGRATION.md +426 -0
- package/docs/PHASE_3_DATABASE_MANAGEMENT.md +480 -0
- package/docs/PHASE_4_FILE_OPERATIONS.md +448 -0
- package/docs/PHASE_5_WATCH_MODE.md +450 -0
- package/docs/PHASE_6_SIGNAL_HANDLING.md +472 -0
- package/docs/PHASE_7_ADVANCED_FEATURES.md +560 -0
- package/docs/PLAN_WATCH_FEATURE.md +417 -0
- package/docs/README.md +480 -0
- package/docs/SCHEMA_ALIGNMENT_SUMMARY.md +301 -0
- package/docs/SMARTWATCH_DATABASE_REFACTORING.md +181 -0
- package/docs/SMART_WATCH_DATABASE_CHANGES.md +502 -0
- package/docs/TESTING_WATCH_MODE.md +212 -0
- package/docs/WATCHER_API_IMPLEMENTATION.md +520 -0
- package/docs/WATCHER_API_INTEGRATION.md +562 -0
- package/docs/WATCHER_SETUP_GUIDE.md +614 -0
- package/docs/WATCH_ARCHITECTURE.md +395 -0
- package/docs/WATCH_AUTO_PIPELINE.md +334 -0
- package/docs/WATCH_CONFIGURATION.md +267 -0
- package/docs/WATCH_USAGE_GUIDE.md +567 -0
- package/docs/commands.md +14 -0
- package/package.json +1 -1
- package/src/commands/IdentifyCommand.js +8 -0
- package/src/config/config.js +2 -2
- package/src/file-detection.js +42 -1
- package/src/scoring/scoring-engine.js +35 -7
- package/.vscode/settings.json +0 -1
- package/coverage/IdentifyCommand.js.html +0 -1462
- package/coverage/PropagateCommand.js.html +0 -1507
- package/coverage/PushCommand.js.html +0 -1504
- package/coverage/ScanCommand.js.html +0 -1654
- package/coverage/UploadCommand.js.html +0 -1846
- package/coverage/WatchCommand.js.html +0 -4111
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -191
- package/coverage/lcov-report/IdentifyCommand.js.html +0 -1462
- package/coverage/lcov-report/PropagateCommand.js.html +0 -1507
- package/coverage/lcov-report/PushCommand.js.html +0 -1504
- package/coverage/lcov-report/ScanCommand.js.html +0 -1654
- package/coverage/lcov-report/UploadCommand.js.html +0 -1846
- package/coverage/lcov-report/WatchCommand.js.html +0 -4111
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -191
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov.info +0 -1937
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/docs/API_ENDPOINTS_FOR_DETECTION.md +0 -647
- package/docs/API_RETRY_MECHANISM.md +0 -338
- package/docs/ARELA_IDENTIFY_IMPLEMENTATION.md +0 -489
- package/docs/ARELA_IDENTIFY_QUICKREF.md +0 -186
- package/docs/ARELA_PROPAGATE_IMPLEMENTATION.md +0 -581
- package/docs/ARELA_PROPAGATE_QUICKREF.md +0 -272
- package/docs/ARELA_PUSH_IMPLEMENTATION.md +0 -577
- package/docs/ARELA_PUSH_QUICKREF.md +0 -322
- package/docs/ARELA_SCAN_IMPLEMENTATION.md +0 -373
- package/docs/ARELA_SCAN_QUICKREF.md +0 -139
- package/docs/CROSS_PLATFORM_PATH_HANDLING.md +0 -597
- package/docs/DETECTION_ATTEMPT_TRACKING.md +0 -414
- package/docs/MIGRATION_UPLOADER_TO_FILE_STATS.md +0 -1020
- package/docs/MULTI_LEVEL_DIRECTORY_SCANNING.md +0 -494
- package/docs/QUICK_REFERENCE_API_DETECTION.md +0 -264
- package/docs/REFACTORING_SUMMARY_DETECT_PEDIMENTOS.md +0 -200
- package/docs/STATS_COMMAND_SEQUENCE_DIAGRAM.md +0 -287
- 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
|