# Padrón v2 ## Alcance Padrón conserva el modelo actual: la persona es el registro maestro, los proyectos son asignaciones y el estado de expediente/gafete se deriva de documentos, impresiones y asignaciones. Esta fase no cambia la nómina ni el generador fijo de gafetes. ## Arquitectura - `web-panel/pages/padron/index.vue`: orquesta carga, selección, árbol y comandos de cinta. - `web-panel/components/padron/PadronTable.vue`: tabla, filtros y acciones por persona. - `web-panel/components/padron/WorkerFormDialog.vue`: alta y edición de datos maestros. - `web-panel/components/padron/WorkerImportDialog.vue`: importación de Excel y reporte. - `web-panel/components/WorkerFicha.vue`: ficha lateral y navegación por secciones. - `web-panel/components/padron/WorkerDocuments.vue`: expediente obligatorio/opcional. - `web-panel/components/padron/WorkerAssignments.vue`: altas, reactivaciones y bajas de asignación. - `web-panel/types/padron.ts`: contratos del frontend para persona, proyecto, riesgo e importación. - `api/main.ts`: reglas HTTP; `api/db.ts` conserva el cálculo de pipeline. ## Invariantes 1. Una persona no se elimina: `status=baja` conserva su historial. 2. Solo se asigna o importa personal a proyectos activos. 3. Una asignación repetida se reactiva; al finalizarla se conserva su fecha de fin. 4. `pipeline_status` no es un dato editable. Solo la baja es manual; el resto se recalcula. 5. CURP, RFC y NSS son únicos. 6. Foto, INE, CURP, NSS/IMSS y RFC forman el expediente obligatorio. 7. El código exacto de riesgo se conserva porque define el color del gafete; Alto/Medio/Bajo es una lectura semántica para la interfaz. ## Contratos usados por Padrón - `GET /v1/workers`: lista maestra con proyectos activos agregados, faltantes y saldo. - `GET /v1/workers/:id`: persona, documentos, checklist, asignaciones y préstamos. - `POST /v1/workers/validate`: validación de formato y unicidad. - `POST /v1/workers` / `PATCH /v1/workers/:id`: alta y edición. - `POST /v1/workers/:id/assign`: asignar, reactivar o finalizar. - `POST /v1/workers/:id/documents`: guardar una nueva versión cifrada. - `PATCH /v1/workers/:id/pipeline`: baja manual o recálculo/reactivación. ## Verificación ```bash cd api deno task check deno task test cd ../web-panel npm run build ``` La siguiente fase puede reutilizar estos contratos para el editor de plantillas; no debe acoplar el layout del gafete a la ficha de Padrón.