Módulo Soporte: visor de documentación con renderizado Markdown y buscador

Nuevo módulo `soporte` con la documentación del proyecto en cuatro secciones:
manual de usuario (visible para todos), y documentación técnica, arquitectura
y operación (solo administradores).

- Markdown.php: renderizador propio del subconjunto que usa la documentación
  (encabezados, listas anidadas, tablas, código, citas). Escapa todo el texto
  antes de aplicar formato, así que los .md no pueden inyectar HTML. Se
  prefirió un archivo auditable a incorporar una dependencia externa.
- DocIndex.php: descubre los .md, arma el árbol, resuelve acceso por sección
  y construye el índice del buscador.
- Generadores.php: expande marcadores {{modulos}}, {{endpoints}}, {{tablas}},
  {{roles}} y {{servicios}} leyendo el código y la base en cada carga, para
  que los inventarios no puedan quedar desactualizados.

Se registra en SYSTEM_MODULES y se concede a los 12 roles con permission=read.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-04 10:07:06 -05:00
co-authored by Claude Opus 5
parent 8948ea67d1
commit 018fb13332
13 changed files with 1644 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
<?php
/**
* Descriptor del módulo Soporte — documentación del proyecto.
* El manual de usuario es visible para cualquier usuario autenticado; el resto
* de secciones (técnica, arquitectura, operación) solo para administradores.
*/
$_sopEsAdmin = in_array($_SESSION['admin_user']['role'] ?? '', ['admin', 'superadmin'], true);
$_sopLinks = [
['name' => 'Documentación', 'icon' => 'fas fa-book', 'route' => '/erp.php?m=soporte&v=documentacion'],
['name' => 'Manual de usuario', 'icon' => 'fas fa-book-reader',
'route' => '/erp.php?m=soporte&v=documentacion&s=manual'],
];
if ($_sopEsAdmin) {
$_sopLinks[] = ['name' => 'Documentación técnica', 'icon' => 'fas fa-code',
'route' => '/erp.php?m=soporte&v=documentacion&s=tecnica'];
$_sopLinks[] = ['name' => 'Arquitectura', 'icon' => 'fas fa-sitemap',
'route' => '/erp.php?m=soporte&v=documentacion&s=arquitectura'];
$_sopLinks[] = ['name' => 'Operación y soporte', 'icon' => 'fas fa-life-ring',
'route' => '/erp.php?m=soporte&v=documentacion&s=operacion'];
}
return [
'slug' => 'soporte',
'name' => 'Soporte',
'icon' => 'fas fa-life-ring',
'category' => 'sistema',
'route' => '/erp.php?m=soporte&v=documentacion',
'is_active' => true,
'sort_order' => 90,
'oleada' => 1,
'description' => 'Documentación del proyecto: manual de usuario, técnica, arquitectura y operación',
'links' => $_sopLinks,
];