diff --git a/CHANGELOG.md b/CHANGELOG.md index 489b9b2..f464478 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog - project.linkedcorp.net +## [4.2.2] - 2026-10-26 +### Fixed +- Equipos: guardar cambios (usuario asignado, departamento, estado, notas) siempre mostraba "El + registro cambió" aunque nadie más lo hubiera editado. La verificación previa al guardado + comparaba los datos sin la versión de edición contra un borrador que sí la tenía; ahora ambos + usan el mismo formato. + ## [4.2.1] - 2026-10-23 ### Changed - La IA ya no está orientada solo a TI: planifica e informa proyectos de cualquier área diff --git a/VERSION b/VERSION index fae6e3d..af8c8ec 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.2.1 +4.2.2 diff --git a/backend/package.json b/backend/package.json index ba27afe..680ba4a 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "project-linkedcorp-backend", - "version": "4.2.1", + "version": "4.2.2", "private": true, "type": "module", "main": "src/server.js", diff --git a/frontend/package.json b/frontend/package.json index e4454f7..ff0bc4b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "project-linkedcorp-frontend", "private": true, - "version": "4.2.1", + "version": "4.2.2", "type": "module", "scripts": { "dev": "vite", diff --git a/frontend/src/pages/Equipos/EquiposPage.jsx b/frontend/src/pages/Equipos/EquiposPage.jsx index 4281e41..e408455 100644 --- a/frontend/src/pages/Equipos/EquiposPage.jsx +++ b/frontend/src/pages/Equipos/EquiposPage.jsx @@ -56,6 +56,10 @@ function SimpleTable({ columns, rows, empty }) { ); } +// Valores editables del equipo; el mismo formato para `initial` y para `fetchCurrent` (incluida +// editVersion: si falta en uno de los dos, las huellas nunca coinciden y todo guardado da conflicto). +const toForm = (d) => ({ status: d.status, assignedUserId: d.assigned_user_id || '', departmentId: d.department_id || '', notes: d.notes || '', editVersion: d.edit_version }); + function DeviceDetail({ id, onClose, onChanged, canEdit, tab = 'general', onTabChange }) { const { t, pushToast } = useUi(); const runAction = useAction(); @@ -69,7 +73,7 @@ function DeviceDetail({ id, onClose, onChanged, canEdit, tab = 'general', onTabC // Borrador de los datos editables del equipo (estado, asignado, departamento, notas). const draft = useDraftForm({ formId: 'device-edit', entityId: id, - initial: device ? { status: device.status, assignedUserId: device.assigned_user_id || '', departmentId: device.department_id || '', notes: device.notes || '', editVersion: device.edit_version } : {}, + initial: device ? toForm(device) : {}, label: `${t('eq_detail')}: ${device?.hostname || id}`, enabled: !!device && canEdit && tab === 'general', onDiscard: () => setEditing(false), }); const form = draft.values; @@ -99,7 +103,7 @@ function DeviceDetail({ id, onClose, onChanged, canEdit, tab = 'general', onTabC await reload(); onChanged(); pushToast({ tone: 'success', message: t('common_saved') }); - }), { fetchCurrent: async () => { const d = await getDevice(id); return { status: d.status, assignedUserId: d.assigned_user_id || '', departmentId: d.department_id || '', notes: d.notes || '' }; } }); + }), { fetchCurrent: async () => toForm(await getDevice(id)) }); } if (!device) return
{t('common_loading')}
;