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:
@@ -0,0 +1,86 @@
|
||||
-- ============================================================
|
||||
-- Donna — Schema 004: Control de Trámites Legales
|
||||
-- ============================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tramites_legales (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
codigo VARCHAR(20) NOT NULL UNIQUE,
|
||||
departamento ENUM('adm','corp','mig','lit') NOT NULL,
|
||||
|
||||
-- Comunes
|
||||
cliente VARCHAR(255) NOT NULL DEFAULT '',
|
||||
abogado VARCHAR(100) NOT NULL DEFAULT '',
|
||||
estatus VARCHAR(50) NOT NULL DEFAULT 'Solicitado',
|
||||
instrucciones TEXT NOT NULL,
|
||||
fecha_solicitud DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
-- adm + corp
|
||||
nombre VARCHAR(255) NOT NULL DEFAULT '',
|
||||
-- adm
|
||||
institucion VARCHAR(255) NOT NULL DEFAULT '',
|
||||
-- corp
|
||||
tipo_documento VARCHAR(255) NOT NULL DEFAULT '',
|
||||
-- mig
|
||||
tipo_tramite VARCHAR(255) NOT NULL DEFAULT '',
|
||||
doc_completa ENUM('Sí','No') NULL,
|
||||
permiso_trabajo ENUM('Sí','No') NULL,
|
||||
dependientes ENUM('Sí','No') NULL,
|
||||
fecha_vencimiento DATE NULL,
|
||||
-- lit
|
||||
esfera ENUM('Civil','Penal') NULL,
|
||||
instancia ENUM('Primera','Segunda','CSJ') NULL,
|
||||
circuito VARCHAR(100) NOT NULL DEFAULT '',
|
||||
juzgado VARCHAR(255) NOT NULL DEFAULT '',
|
||||
tipo_proceso VARCHAR(255) NOT NULL DEFAULT '',
|
||||
incidentes ENUM('Sí','No') NULL,
|
||||
amparo ENUM('Sí','No') NULL,
|
||||
fecha_termino DATE NULL,
|
||||
|
||||
-- Auditoría
|
||||
creado_por VARCHAR(255) NOT NULL DEFAULT '',
|
||||
actualizado_por VARCHAR(255) NOT NULL DEFAULT '',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
|
||||
INDEX idx_dept (departamento),
|
||||
INDEX idx_estatus (estatus),
|
||||
INDEX idx_abogado (abogado),
|
||||
INDEX idx_cliente (cliente),
|
||||
INDEX idx_fecha (fecha_solicitud DESC)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tramites_obs (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
tramite_id INT NOT NULL,
|
||||
texto TEXT NOT NULL,
|
||||
abogado VARCHAR(100) NOT NULL DEFAULT '',
|
||||
autor_email VARCHAR(255) NOT NULL DEFAULT '',
|
||||
fecha DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_tramite (tramite_id),
|
||||
INDEX idx_fecha (fecha DESC),
|
||||
CONSTRAINT fk_tramites_obs FOREIGN KEY (tramite_id)
|
||||
REFERENCES tramites_legales(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tramites_hours (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
tramite_id INT NOT NULL,
|
||||
abogado VARCHAR(100) NOT NULL DEFAULT '',
|
||||
hrs DECIMAL(6,2) NOT NULL DEFAULT 0,
|
||||
descripcion VARCHAR(500) NOT NULL DEFAULT '',
|
||||
autor_email VARCHAR(255) NOT NULL DEFAULT '',
|
||||
fecha DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_tramite (tramite_id),
|
||||
INDEX idx_fecha (fecha DESC),
|
||||
CONSTRAINT fk_tramites_hours FOREIGN KEY (tramite_id)
|
||||
REFERENCES tramites_legales(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- Contador para generar códigos ADM-001 / CRP-001 / MIG-001 / LIT-001
|
||||
CREATE TABLE IF NOT EXISTS tramites_seq (
|
||||
departamento VARCHAR(10) PRIMARY KEY,
|
||||
next_seq INT NOT NULL DEFAULT 1
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
INSERT IGNORE INTO tramites_seq (departamento, next_seq) VALUES
|
||||
('adm', 1), ('corp', 1), ('mig', 1), ('lit', 1);
|
||||
Reference in New Issue
Block a user