# Deuda Técnica Pendiente - CTNetOSP
**Última actualización:** 2026-06-03

## 🔴 Alta Prioridad

### 1. Migración finance-os → finance-v2
**Estado:** ~80% completado (Fases 1-3 ✅, Fase 4 parcial)  
**Problema original:** Coexisten `/finance-os/` (103 archivos PHP) y `/finance-v2/` con lógica duplicada.

**Progreso:**
- ✅ Fase 1: 13 archivos obsoletos eliminados (103 → 90), BalanceService extraído, dependencia circular rota
- ✅ Fase 2: 5 servicios + 5 APIs migradas (Collection, CashFlow, Exchange, Budget, KPIs proxy)
- ✅ Fase 3: operations.php con 5 tabs, management.php nuevo, nav actualizado
- ⚠️ Fase 4 (parcial): .htaccess con redirects creados

**finance-v2 ahora incluye (36 archivos PHP):**
- 7 páginas: index, operations (5 tabs), treasury, accounting, management (2 tabs), closing
- 11 APIs: dashboard, income, expenses, treasury, ledger, close, collection, cashflow, exchange, budget, kpis
- 9 servicios: Income, Expense, Treasury, Balance, Collection, CashFlow, Exchange, Budget + más

**Pendiente (no migrar aún — integraciones externas):**
- `webhook_macrodroid.php` (923 LOC) — webhook recibe pagos de MacroDroid
- `credit_callback.php` (213 LOC) — callback desde RM remoto
- `BinanceSync.php` + `PayPalSync.php` (702 LOC) — sincronización con APIs externas
- `cfo_kpis_service.php` (708 LOC) — proxy temporal, migrar cuando se pueda probar

**Esfuerzo restante:** ~3 horas (integraciones externas, requiere coordinación)

---

### ✅ 2. Refactorizar Validaciones de Nivel Hardcodeadas
**Estado:** 100% completado ✅  
**Migrado:** Todos los archivos en `ctnetosp/modules/tecnicos/` ahora usan `AuthService::hasLevel()` con constantes semánticas (`LEVEL_EXECUTIVE`, `LEVEL_SUPERVISOR`, `LEVEL_MAX`).

---

## 🟡 Media Prioridad

### ✅ 3. Documentación de Niveles en UI
**Estado:** 100% completado ✅  
**Implementado:** Tooltips en badges de nivel (tabla de staff) + texto de ayuda dinámico en modal de acceso web con código de color para niveles altos.

---

### ✅ 4. Configurar `TELEGRAM_CHAT_ID` en upstream_monitor
**Estado:** 100% completado ✅  
**Implementado:** `upstream_monitor.php` ahora carga el `.env` automáticamente al inicio para contexto cron. Variables `TELEGRAM_BOT_TOKEN` y `TELEGRAM_CHAT_ID` se leen correctamente.

---

## 🟢 Baja Prioridad

### ✅ 5. Optimización de Índices SQL
**Estado:** 100% completado ✅  
**Índices creados:**
- `technician_locations(technician_id, timestamp)` — consultas de mapa/historial (19K filas)
- `technician_locations(technician_id, id DESC)` — última ubicación
- `gestion_bot(cedula, status_user)` — autenticación
- `login_attempts(ip_address, attempt_time)` — rate limiting
- `login_attempts(username, attempt_time)` — rate limiting por usuario

---

### ✅ 6. Limpieza de Código Legacy
**Estado:** 100% completado ✅  
**Limpiado:** Eliminados `debug/`, `archived_debug/`, `logs/`, `obsolete/` de `/archived/`. Se agregó `README.md` documentando qué queda (`ipg2-bdv-demo/`, `webhook_legacy_20260127/`).

---

### 7. Estandarizar Nombres de Variables
**Problema:** Inconsistencia en nombres

**Ejemplos:**
- `$nivel` vs `$userNivel` vs `$userLevel`
- `$cedula` vs `$ci` vs `$id_empleado`

**Solución:** Definir estándar y refactorizar gradualmente

**Esfuerzo estimado:** 8-10 horas (bajo impacto, puede hacerse gradualmente)

---

## 📊 Resumen de Esfuerzo

| Prioridad | Tareas | Completadas | Pendientes |
|-----------|--------|-------------|------------|
| 🔴 Alta | 2 | 1 | 1 (finance-os) |
| 🟡 Media | 2 | 2 | 0 |
| 🟢 Baja | 3 | 3 | 0 |
| **Total** | **7** | **6** | **1** |

---

## 🎯 Plan de Acción

### Sprint 1 (Completado ✅ — Feb 2026)
1. ✅ Refactorizar validaciones hardcodeadas en módulos críticos
2. ✅ Migrar casos especiales de `session_start()`
3. ✅ Poblar RBAC con permisos base (script SQL creado)

### Sprint 2 (Completado ✅ — Feb-Mar 2026)
4. ✅ Crear vista de auditoría en panel admin
5. ✅ Implementar TODOs críticos (`api_subscriber_request.php` eliminado)

### Sprint 3 (Completado ✅ — Mayo 2026)
6. ✅ Documentación de 12 módulos actualizada
7. ✅ Limpieza de `.pre_recovery` (0 archivos restantes)
8. ✅ Refactorizar `upstream_monitor.php` para usar env vars

### Sprint 4 (Actual — Junio 2026)
9. ✅ Cerrar TODO(security) en APIs de sensores
10. ✅ Implementar ruta histórica de técnicos en mapa
11. ✅ Refactorizar 7 archivos con `userNivel` hardcodeado → AuthService
12. ✅ Tooltips de niveles en panel de staff
13. ✅ Limpieza de `/archived/` (debug/obsolete eliminados, README agregado)
14. ✅ Configurar env loader para TELEGRAM en cron
15. ✅ Optimización de índices SQL (5 índices en 3 tablas)
16. 🔄 Migración finance-os → finance-v2

### Sprint 5 (Siguiente)
17. Estandarizar nombres de variables (bajo impacto)

---

## 📝 Notas

- La mayoría de TODOs en `/vendor/` son de librerías externas y no requieren acción
- El sistema de auditoría ya está implementado ✅
- La nomenclatura de niveles ya está corregida ✅
- La migración a AuthService está 100% completa ✅
- ✅ **2026-05-07:** Errores Java/Gradle en VS Code resueltos
- ✅ **2026-05-07:** Dependencia `setasign/fpdi-tcpdf` eliminada
- ✅ **2026-05-07:** Documentación del proyecto actualizada
- ✅ **2026-06-03:** Auditoría completa verificada contra código real. Items fantasma eliminados del backlog.
- ✅ **2026-06-03:** TODO(security) en sensors API cerrados (receive, get-history, get-status)
- ✅ **2026-06-03:** Ruta histórica de técnicos implementada en mapa Leaflet
- ✅ **2026-06-03:** 7 archivos tecnicos/ refactorizados de `$userNivel` hardcodeado → `AuthService::hasLevel()`
- ✅ **2026-06-03:** Tooltips de niveles en panel de staff + helper dinámico en modal
- ✅ **2026-06-03:** Limpieza de `/archived/` (4 dirs eliminados, README agregado)
- ✅ **2026-06-03:** Env loader para cron en upstream_monitor.php (Telegram alertas operativas)
- ✅ **2026-06-03:** 5 índices SQL creados en 3 tablas (technician_locations, gestion_bot, login_attempts)
