feat(tramites): app "Control de Trámites Legales" + backend

Migración del frontend localStorage a backend autenticado bajo Donna.

* SQL 004: tramites_legales (todos los campos por dept en columnas
  nullable + ENUMs Sí/No), tramites_obs (bitácora N:1), tramites_hours
  (registro de horas N:1), tramites_seq (contador por departamento).
  IDs server-side tipo ADM-001 / CRP-001 / MIG-001 / LIT-001 con
  SELECT FOR UPDATE para atomicidad.
* public/tramites/api.php: list/create/update/delete + set_status +
  add_obs + add_hours. Valida departamento y estatus contra los enums
  del frontend. Audita creado_por / actualizado_por con el email
  autenticado.
* views/tramites.html: artifact original adaptado. Quitado backup/restore
  localStorage (mysqldump diario ya hace ese trabajo). Cada mutación
  va vía fetch con manejo de 401 → redirect a login. Mapeo
  id<->codigo para preservar el contrato del artifact.
* Apps.php: la card "Gestión de Casos" placeholder se reemplaza por
  "Control de Trámites Legales" en estado live.
This commit is contained in:
Soporte ZH Consultores
2026-05-11 20:03:28 +00:00
parent da08e01f28
commit 1bb63f12f6
5 changed files with 1037 additions and 5 deletions
+5 -5
View File
@@ -13,12 +13,12 @@ final class Apps {
'status' => 'live',
],
[
'slug' => 'casos',
'title' => 'Gestión de Casos',
'description' => 'Expedientes, plazos procesales y notas de cada asunto.',
'slug' => 'tramites',
'title' => 'Control de Trámites Legales',
'description' => 'Administrativo, corporativo, migración y litigios. Estado, observaciones, horas e historial por trámite.',
'icon' => 'briefcase',
'href' => '#',
'status' => 'coming-soon',
'href' => '/tramites/',
'status' => 'live',
],
[
'slug' => 'agenda',