feat(comercial/actividad): renderer humano para entity_type metas_lock
Cierra el cabo suelto heredado del cierre del 2026-05-26: en el panel /ventas-admin/actividad los eventos del feature de lock de metas caian al fallback generico (Cierre de captura de metas - Creacion). Ahora se leen como acciones legibles derivadas del snapshot.
Cambios:
-
lib/ventas.api.ts: AuditEntityType incluye 'metas_lock'. ENTITY_LABEL agrega 'Cierre de captura de metas' como label de fallback (la frase humana se compone en describeAuditEvent a partir del snapshot, igual que linea_negocio y usuario_rol).
-
components/ventas-admin/audit_view.tsx: nuevo bloque en describeAuditEvent para entity_type 'metas_lock':
- action 'create' (lock): Cerro captura de metas para EMPRESA (ANO) + reason si se capturo (after.reason).
- action 'delete' (unlock): Reabrio captura de metas para EMPRESA (ANO) + unlock_reason del context si se capturo.
El snapshot consumido coincide con lo que escribe routers/ventas_metas.py lineas 1011-1018 (lock) y 1059-1075 (unlock): after.empresa, after.ano, after.reason para lock; before.empresa, before.ano + context.unlock_reason para unlock.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com