feat(f6.8): harden offline field flow and act documents
Android CI / RC / Android · lint, tests, debug APK, release compile (push) Successful in 3m41s
DH V2 CI / API · typecheck, tests, build (push) Successful in 31s
DH V2 CI / WEB · typecheck, build (push) Successful in 19s
Production dependency audit / API · production dependencies (push) Successful in 9s
Production dependency audit / WEB · production dependencies (push) Successful in 8s
DH V2 CI / Docker / scripts contract (push) Successful in 1m14s

This commit is contained in:
DH V2
2026-09-15 15:56:50 -03:00
parent 47cd985931
commit 079728aa6d
62 changed files with 2240 additions and 338 deletions
+33 -2
View File
@@ -933,10 +933,12 @@ export interface InspectionVisit extends InspectionVisitListItem {
}
export type InspectionActStatus =
| 'DRAFT' | 'READY' | 'CLOSED' | 'CANCELLED' | 'RECTIFIED';
| 'DRAFT' | 'LOCKED' | 'SEALED' | 'CANCELLED'
| 'READY' | 'CLOSED' | 'RECTIFIED';
export type InspectionActVersionEvent =
| 'CREATED' | 'UPDATED' | 'READY' | 'REOPENED' | 'CLOSED' | 'CANCELLED';
| 'CREATED' | 'UPDATED' | 'LOCKED' | 'SEALED' | 'CANCELLED'
| 'READY' | 'REOPENED' | 'CLOSED';
export interface InspectionActListItem {
id: string;
@@ -992,6 +994,27 @@ export interface InspectionAct extends InspectionActListItem {
versions: InspectionActVersion[];
}
export interface InspectionActFieldMedia {
id: string;
assetId: string;
assetCode: string;
assetName: string;
kind: AssetMediaKind;
originalName: string;
mimeType: string;
sizeBytes: number;
sha256: string;
title: string | null;
description: string | null;
capturedAt: string | null;
latitude: number | null;
longitude: number | null;
accuracyM: number | null;
source: 'WEB' | 'ANDROID' | 'IMPORT';
fieldCapturedAt: string;
createdAt: string;
}
export type InspectionReportStatus = 'FROZEN' | 'CANCELLED';
export type InspectionReportPdfStatus = 'PENDING' | 'READY' | 'FAILED';
export type InspectionReportWordStatus = 'PENDING' | 'READY' | 'FAILED';
@@ -2684,6 +2707,14 @@ export function getInspectionAct(id: string) {
return apiRequest<InspectionAct>(`/inspection-acts/${id}`);
}
export function getInspectionActPdfBlob(actId: string) {
return apiBlobRequest(`/inspection-acts/${actId}/pdf`);
}
export async function listInspectionActFieldMedia(actId: string) {
return (await apiRequest<{ data: InspectionActFieldMedia[] }>(`/inspection-acts/${actId}/field-media`)).data;
}
export function getInspectionClosure(actId: string) {
return apiRequest<InspectionClosure>(`/inspection-acts/${actId}/closure`);
}