diff --git a/web-v2/src/lib/findingWorklistF4Api.ts b/web-v2/src/lib/findingWorklistF4Api.ts new file mode 100644 index 0000000..abe1491 --- /dev/null +++ b/web-v2/src/lib/findingWorklistF4Api.ts @@ -0,0 +1,96 @@ +import { apiRequest } from './api'; + +export type FindingWorklistWorkflowF4 = + | 'OPEN' + | 'TO_SCHEDULE_VERIFICATION' + | 'TO_VERIFY' + | 'VERIFICATION_OVERDUE' + | 'READY_TO_CLOSE' + | 'CLOSED' + | 'ALL'; + +export interface FindingWorklistItemF4 { + id: string; + actId: string; + assetId: string; + code: string; + status: 'OPEN' | 'CLOSED' | 'VOIDED'; + title: string; + description: string; + severity: number | null; + nextControlOn: string | null; + closedAt: string | null; + closureNotes: string | null; + asset: { + id: string; + code: string; + name: string; + commonName: string | null; + typeName: string; + operatorCompany: { id: string; code: string; name: string } | null; + operationalArea: { id: string; code: string; name: string } | null; + }; + document: { + actId: string; + actCode: string; + actStatus: string; + visitId: string; + visitCode: string; + visitStatus: string; + }; + verificationVisit: { + id: string; + code: string; + title: string; + status: string; + plannedStartAt: string | null; + } | null; + latestVerification: { + visitId: string; + visitCode: string; + visitStatus: string; + targetControlOn: string | null; + outcome: 'RESOLVED' | 'NOT_RESOLVED' | 'REQUIRES_NEW_DATE' | null; + resultNotes: string | null; + verifiedAt: string | null; + resultRecordedAt: string | null; + rescheduledControlOn: string | null; + evidenceCount: number; + } | null; + createdAt: string; + updatedAt: string; +} + +export interface FindingWorklistCountersF4 { + open: number; + withoutControlDate: number; + toVerify: number; + verificationOverdue: number; + verificationNext30Days: number; + readyToClose: number; + closed: number; +} + +export interface FindingWorklistPageF4 { + data: FindingWorklistItemF4[]; + meta: { page: number; pageSize: number; total: number; totalPages: number }; + counters: FindingWorklistCountersF4; +} + +export function listFindingWorklistF4(query: { + page?: number; + pageSize?: number; + search?: string; + workflow?: FindingWorklistWorkflowF4; + companyId?: string; + areaId?: string; + inspectorId?: string; + dateFrom?: string; + dateTo?: string; +}) { + const params = new URLSearchParams(); + Object.entries(query).forEach(([key, value]) => { + if (value !== undefined && value !== '') params.set(key, String(value)); + }); + return apiRequest(`/inspection-findings?${params.toString()}`); +}