Skip to content

feat(juridico/contencioso): Dashboard Contencioso con pestañas en la OAE...

Jose Luis Flores requested to merge qa into main

feat(juridico/contencioso): Dashboard Contencioso con pestañas en la OAE (Juicios, Convenios, Extrajudiciales)

La OAE (/oae/juridico/contencioso) montaba solo JuiciosDashboardEmbed. Ahora monta ContenciosoDashboard con el mismo patrón que CorporativoDashboard: tabs en --primary, montaje perezoso + keep-alive, refrescar por pestaña y liga al módulo activo del portal jurídico. Sin montajes nuevos: todo vive en components/juicios/, ya montado en la OAE con el alias juridico-juicios.

  • Embeds autocontenidos: ConveniosDashboardEmbed (stats + ConveniosListaModal) y ExtrajudicialesDashboardEmbed (barra Portafolio/Empresa/Año/Mes/Carácter/Estatus, filtrado client-side idéntico a la página del módulo). 403 -> "Sin acceso"; error distinto de 403 -> aviso en vez de tablero en ceros (también en Juicios).
  • Piezas movidas al árbol portable con re-export en la ruta vieja: BarrasCanonicas, ConveniosDashboard, ExtrajudicialesDashboard y badges (ExtrajudicialesBadges). ExtrajudicialesDashboard ya no usa useRouter (props onAbrirFicha/onVerRegistros).
  • Navegación embed-aware (portalJuridico.ts): dentro de la OAE las fichas de juicio/convenio/asunto se abren en el portal jurídico en pestaña nueva, siempre bajo /juridico (router.push resolvía a /oae/convenios/:id -> 404). La liga externa de Corporativo adopta el mismo criterio.
  • Backend: los endpoints de SOLO LECTURA que consumen las pestañas aceptan módulo O sub-área juridico-contencioso (require_modulo_o_subarea), como Corporativo. La escritura sigue exigiendo módulo.
  • Espejos en la OAE: lib/extrajudiciales.api.ts y parseFechaLocal en lib/utils.ts.
  • Barras de filtros sticky en los embeds (canon §6).

Verificado: tsc portal_juridico y OAE (contenedor), check_lookandfeel 0 hallazgos, ci_validate_models OK, lecturas 200 / POST 403 con usuario de solo sub-área.

Merge request reports

Loading