From b3125b51adaf62bb6b32f64ceb5cbcff76cc714f Mon Sep 17 00:00:00 2001 From: enlineawork Date: Tue, 8 Sep 2026 10:26:13 -0300 Subject: [PATCH] fix(f4): use locked sealed lifecycle in act detail --- web-v2/src/pages/InspectionActEditorPage.tsx | 23 +++++++++++--------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/web-v2/src/pages/InspectionActEditorPage.tsx b/web-v2/src/pages/InspectionActEditorPage.tsx index e57e9f4..d9199fa 100644 --- a/web-v2/src/pages/InspectionActEditorPage.tsx +++ b/web-v2/src/pages/InspectionActEditorPage.tsx @@ -9,14 +9,15 @@ import { } from '../features/inspections/inspectionActPresentation'; import { InspectionClosurePanel } from '../features/inspections/InspectionClosurePanel'; import { InspectionFindingsPanel } from '../features/inspections/InspectionFindingsPanel'; -import { getInspectionAct, getInspectionVisit } from '../lib/api'; -import type { InspectionAct, InspectionVisit } from '../lib/api'; +import { getInspectionVisit } from '../lib/api'; +import type { InspectionVisit } from '../lib/api'; +import { getInspectionActF4, type InspectionActF4 } from '../lib/inspectionActF4Api'; import { formatDate } from '../lib/format'; export function InspectionActEditorPage() { const { actId } = useParams(); const [visit, setVisit] = useState(null); - const [act, setAct] = useState(null); + const [act, setAct] = useState(null); const [loading, setLoading] = useState(Boolean(actId)); const [error, setError] = useState(''); @@ -24,7 +25,7 @@ export function InspectionActEditorPage() { if (!actId) return; setLoading(true); setError(''); - getInspectionAct(actId) + getInspectionActF4(actId) .then(async (value) => { setAct(value); setVisit(await getInspectionVisit(value.visitId)); @@ -36,22 +37,24 @@ export function InspectionActEditorPage() { if (!actId) { return
Inspecciones/Acta
-
OPERACIÓN EXCLUSIVA EN APK

Crear acta de inspección

Las actas sólo pueden generarse durante la visita física desde la aplicación móvil.

-

Usá la APK con un usuario inspector. El dashboard recibirá el acta, sus hallazgos y firmas cuando la aplicación sincronice.

+
OPERACIÓN EXCLUSIVA EN APK

Crear acta de inspección

Las actas sólo pueden generarse durante la inspección física desde la aplicación móvil.

+

Usá la APK con un usuario inspector. El dashboard recibirá el Acta, sus Hallazgos y constancias cuando la aplicación sincronice.

Volver a inspecciones
; } if (loading) return ; + const isSealed = act?.status === 'SEALED' || act?.status === 'CLOSED'; + return
Inspecciones/{visit && <>{visit.code}/}{act?.code ?? 'Acta'}
ACTA DE INSPECCIÓN · SÓLO LECTURA

{act?.title ?? 'Acta'}

{act ? `${act.code} · versión ${act.currentVersion}` : 'Consulta del documento sincronizado desde la APK.'}

{act && {inspectionActStatusLabel(act.status)}}
{error && {error}} - {visit &&

{visit.code} El contenido constatado, los hallazgos y el cierre se registran exclusivamente desde la APK. Este dashboard permite consultarlos y gestionar el seguimiento posterior.

} + {visit &&

{visit.code} El contenido constatado y los Hallazgos se registran desde la APK. Una vez bloqueada, el Acta ya no vuelve a borrador; la manifestación de empresa puede completarse posteriormente por enlace seguro.

} {act?.report &&

Informe relacionado: {act.report.code}. {act.report.pdfStatus === 'READY' ? 'El documento PDF está disponible.' : 'El contenido está congelado y el PDF continúa pendiente de composición.'}

} - {act?.status === 'CLOSED' && !act.report &&

Informe pendiente de emisión. La solicitud se realiza desde la APK por un inspector asignado a la visita.

} + {isSealed && act && !act.report &&

Informe pendiente de emisión. El Acta ya está sellada y habilita el circuito documental del INF.

} {act?.status === 'CANCELLED' && Cancelada: {act.cancellationReason}} {act &&
@@ -59,7 +62,7 @@ export function InspectionActEditorPage() {
Fecha y hora{formatDate(act.occurredAt)}
Título{act.title}
-
Registros{act.assets.length}
+
Urgencia{act.urgency === 'URGENT' ? 'Urgente' : 'No urgente'}
Hallazgos{act.findingCount}
DESCRIPCIÓN DE LO ACTUADO

{act.summary}

{act.observations && <>OBSERVACIONES

{act.observations}

}
@@ -71,7 +74,7 @@ export function InspectionActEditorPage() { {act && } {act &&
-
VERSIONES INMUTABLES

Historial exacto del acta

Cada sincronización conserva el contenido y las versiones de los registros referenciados.

{act.versions.length}
+
VERSIONES INMUTABLES

Historial exacto del acta

Cada transición conserva el contenido y las versiones de los registros referenciados.

{act.versions.length}
{act.versions.map((version) =>
v{version.versionNumber}{inspectionActVersionEventLabel(version.event)}{formatDate(version.createdAt)} · {version.actorUsername ?? 'sistema'}
{JSON.stringify(version.snapshot, null, 2)}
)}
}
;