01
Métricas de Análisis
Mes 1 completado
161
Archivos Dart analizados
71,134 líneas de código fuente
128+
Campos Firestore mapeados
9 colecciones · 27 docs técnicos
11
Bugs identificados
3 críticos · 4 medios · 4 bajos
34
Puntos de cambio México
10 campos RUT · 24 labels UI
02
Estado de Implementación por Componente
implementation_status.json
Sprint 1 — en curso
| Componente | Descripción | Archivos afectados | Estado |
|---|---|---|---|
| firestore_schema_MX | Esquema completo de Firestore para México documentado: CURP, ID_CENATRA, RFC, cédulas, guía aérea AWB | solicitudes_record.dart, directorio_record.dart | ✓ completado |
| multi_tenant_design | Arquitectura de separación Chile/México por campo country: 'CL' | 'MX' en todas las colecciones |
6 colecciones principales | ✓ completado |
| importaciones_entity | Nueva colección Firestore para agrupar N córneas por carta CENATRA. Diferencia arquitectónica clave vs Chile (1:1 → 1:N) | importaciones_record.dart (nuevo) | → en implementación |
| country_field_migration | Inserción de campo country en colecciones existentes. Migración de datos Chile a country: 'CL' sin downtime |
batch_update_solicitudes.dart | → en implementación |
| roles_system_v2 | Sistema de 5 roles (super_admin, admin_pais, operador, auditor, doctor) reemplaza flag binario isAdmin | usuarios_record.dart, nav.dart | → en implementación |
| firestore_security_rules | Cierre de reglas abiertas (allow read, write: if true). Seguridad por auth + país + rol |
firestore.rules | → en implementación |
| UI_labels_MX | 24 cambios de texto en UI: RUT → CURP/RFC/Cédula Profesional en 10 archivos Dart | primera_solicitud, datos_solicitudes, directorio (+8) | ○ mes 2 |
| pdf_templates_MX | 5 templates adaptados + 2 nuevos: Carta CENATRA (multi-córnea) y Constancia de Entrega-Recepción | descarga_cartas_widget.dart, api_calls.dart | ○ mes 3 |
| logistics_module | Campos: guía aérea AWB, número de vuelo, aerolínea, ruta, persona autorizada retiro CENATRA. Validación estricta (tejido perecedero) | primera_solicitud_widget.dart | ○ mes 2 |
| bug_fixes_critical | 3 bugs críticos: TissuedetailsDoctor sin auth, EditarRegistroHistorico solo print(), GenerateReport no funcional | tissue_details_doctor_widget.dart (+2) | → en resolución |
03
Schema Diff — Chile vs México
Colección: Solicitudes
🇨🇱
Chile — Schema actual
producción
RUT_pacienteString · ISP
RUT_cirujanoString · ISP
RUT_centroString · ISP
rut_representanteString
estatusString
fecha_cirugiaDateTime
nombre_cirujanoString
instalacion_quirurgicaString
🇲🇽
México — Schema propuesto
en implementación
CURP + id_cenatraString × 2 · CENATRA
cedula_profesional + cedula_especialidadString × 2 · SEP
RFC_centroString · 13 chars · SAT
RFC_representanteString · SAT
estatusString
fecha_cirugiaDateTime
nombre_cirujanoString
instalacion_quirurgicaString
country'MX' — multi-tenant key
guia_aerea_awbString · crítico logística
numero_vueloString
importacion_refRef → Importaciones
importaciones_record.dart — Nueva entidad México
nuevo · en desarrollo
/// Nueva colección exclusiva México /// 1 importación agrupa N córneas → 1 Carta CENATRA /// Diferencia arquitectónica fundamental vs Chile (1 solicitud = 1 córnea) class ImportacionesRecord extends FirestoreRecord { final String importacion_id; final List<DocumentReference> solicitudes; // N córneas final String guia_aerea_awb; // ⚠️ crítico — error bloquea tejido final String numero_vuelo; final String aerolinea; final String persona_retiro; // autorizado por CENATRA final String estado_cenatra; // pendiente|enviada|aprobada final String carta_cenatra_url; // PDF generado final String permiso_cofepris; final String country = 'MX'; }
04
Bugs Identificados — Auditoría Sistema Chile
11 total · 3 críticos
| # | Archivo | Descripción | Severidad | Estado |
|---|---|---|---|---|
| BUG-001 | tissue_details_doctor_widget.dart | Página accesible sin autenticación — vulnerabilidad de seguridad | crítico | → en resolución |
| BUG-002 | editar_registro_historico_widget.dart | Botón "Actualizar datos" solo ejecuta print() — sin funcionalidad real | crítico | → en resolución |
| BUG-003 | generate_report_widget.dart | Ambos botones de reporte solo ejecutan print() | crítico | → en resolución |
| BUG-004 | batch_delete.dart | sublist(i, i+500) genera RangeError en último batch con <500 items | medio | ○ mes 2 |
| BUG-005 | api_calls.dart | Double-quotes en JSON de ExportXLSXCall causan parsing error | medio | ○ mes 2 |
| BUG-006 | nuevo_documento_widget.dart | Botón "Subir documento" solo ejecuta print() — uploads no funcionales | medio | ○ mes 2 |
05
Roadmap Técnico
3 meses
Mes 1 — Cierre
Análisis & Fundamentos
campo country implementado en 6 colecciones
sistema de roles v2 (5 niveles) en Usuarios
Firestore Security Rules iniciales
migración datos Chile → country='CL'
bugs críticos BUG-001/002/003 resueltos
Mes 2
Funcionalidad Core MX
campos CURP, RFC, cédulas en Solicitudes
colección Importaciones + UI completa
módulo logístico AWB · vuelo · aerolínea
24 cambios labels UI aplicados
validación RFC (13) · CURP (18 chars)
bugs medios BUG-004/005/006 resueltos
Mes 3
PDFs CENATRA & Deploy
5 templates PDF adaptados a México
Carta CENATRA multi-córnea (nueva)
Constancia Entrega-Recepción (nueva)
QA con equipo operativo México (Damián)
capacitación · deploy · México live
06
Risk Register
6 riesgos activos
ALTO
Guía aérea AWB — dato crítico perecedero
Un dígito erróneo en el AWB bloquea el tejido corneal en aduana (perecedero). El operador ingresa el dato manualmente sin validación actual.
Mitigación: validación estricta de formato AWB + campo read-only post-confirmación · mes 2
ALTO
Auth bypass en TissuedetailsDoctor
Página accesible sin autenticación. Exposición de datos de pacientes y tejidos sin credenciales.
Mitigación: guard de autenticación implementándose · BUG-001 · semana actual
MEDIO
Formularios hospitalarios externos — dependencia bloqueante
Cada clínica mexicana usa formatos distintos. AMG no puede avanzar sin el formulario del hospital — proceso externo no controlable por el sistema.
Mitigación: plantilla estandarizada + sistema de seguimiento de entrega · mes 2
MEDIO
Typos en campos Firestore de producción
Campos
Dirrecion y referecia_solicitud en producción con datos reales. Corrección directa destruiría datos existentes.Mitigación: alias de campo en capa de aplicación · sin migración destructiva