diff --git a/app/composables/useMachineHierarchy.ts b/app/composables/useMachineHierarchy.ts index 8d883d1..bf09f94 100644 --- a/app/composables/useMachineHierarchy.ts +++ b/app/composables/useMachineHierarchy.ts @@ -5,7 +5,7 @@ */ import { resolveIdentifier, resolveProductReference, getProductDisplay } from '~/shared/utils/productDisplayUtils' -import { resolveConstructeurs, uniqueConstructeurIds } from '~/shared/constructeurUtils' +import { resolveConstructeurs, uniqueConstructeurIds, type ConstructeurSummary } from '~/shared/constructeurUtils' type AnyRecord = Record @@ -28,7 +28,9 @@ const collectConstructeurs = ( }) .filter(Boolean) as AnyRecord[][] - return resolveConstructeurs(ids, ...pools, allConstructeurs) + // ConstructeurSummary and AnyRecord are structurally compatible at runtime + const allPools = [...pools, allConstructeurs] as unknown as Array + return resolveConstructeurs(ids, ...allPools) as unknown as AnyRecord[] } // --------------------------------------------------------------------------- @@ -56,7 +58,7 @@ export function mergePieceLists(existing: AnyRecord[] = [], updates: AnyRecord[] return existing.map((piece) => ({ ...piece, constructeurs: piece.constructeurs || [] })) } - const updateMap = new Map( + const updateMap = new Map( updates.map((piece) => [piece.id, { ...piece, constructeurs: piece.constructeurs || [] }]), ) const merged = existing.map((piece) => { @@ -86,7 +88,7 @@ export function mergeComponentTrees(existing: AnyRecord[] = [], updates: AnyReco } if (!updates.length) return existing - const updateMap = new Map( + const updateMap = new Map( updates.map((component) => [ component.id, { @@ -100,7 +102,7 @@ export function mergeComponentTrees(existing: AnyRecord[] = [], updates: AnyReco }, ]), ) - const merged = existing.map((component) => { + const merged: AnyRecord[] = existing.map((component) => { const update = updateMap.get(component.id) if (!update) { return { @@ -156,13 +158,15 @@ export const buildMachineHierarchyFromLinks = ( const machinePieceLinkId = normalizePieceLinkId(link) const pieceId = resolveIdentifier(appliedPiece.id, appliedPiece.pieceId, link.pieceId) + const overrides = (link.overrides || null) as AnyRecord | null + const basePiece: AnyRecord = { ...appliedPiece, id: appliedPiece.id || pieceId || machinePieceLinkId || `piece-${machinePieceLinkId}`, pieceId, - name: link.overrides?.name || appliedPiece.name || (appliedPiece.definition as AnyRecord)?.name || (appliedPiece.definition as AnyRecord)?.role || originalPiece?.name || 'Pièce', - reference: link.overrides?.reference || appliedPiece.reference || (appliedPiece.definition as AnyRecord)?.reference || originalPiece?.reference || null, - prix: link.overrides?.prix ?? appliedPiece.prix ?? originalPiece?.prix ?? null, + name: overrides?.name || appliedPiece.name || (appliedPiece.definition as AnyRecord)?.name || (appliedPiece.definition as AnyRecord)?.role || originalPiece?.name || 'Pièce', + reference: overrides?.reference || appliedPiece.reference || (appliedPiece.definition as AnyRecord)?.reference || originalPiece?.reference || null, + prix: overrides?.prix ?? appliedPiece.prix ?? originalPiece?.prix ?? null, constructeur: appliedPiece.constructeur || originalPiece?.constructeur || null, constructeurId: appliedPiece.constructeurId || (appliedPiece.constructeur as AnyRecord)?.id || originalPiece?.constructeurId || null, documents: Array.isArray(appliedPiece.documents) ? appliedPiece.documents : Array.isArray(originalPiece?.documents) ? originalPiece!.documents : [], @@ -171,7 +175,7 @@ export const buildMachineHierarchyFromLinks = ( typeMachinePieceRequirement: requirement, typeMachinePieceRequirementId: requirement?.id || null, requirementId: requirement?.id || null, - overrides: link.overrides || null, + overrides, originalPiece, machinePieceLink: link, machinePieceLinkId, @@ -216,7 +220,9 @@ export const buildMachineHierarchyFromLinks = ( const machineComponentLinkId = normalizeComponentLinkId(link) const composantId = resolveIdentifier(appliedComponent.id, appliedComponent.composantId, link.composantId) - const componentName = (link.overrides?.name || appliedComponent.name || (appliedComponent.definition as AnyRecord)?.alias || (appliedComponent.definition as AnyRecord)?.name || originalComponent?.name || 'Composant') as string + const compOverrides = (link.overrides || null) as AnyRecord | null + + const componentName = (compOverrides?.name || appliedComponent.name || (appliedComponent.definition as AnyRecord)?.alias || (appliedComponent.definition as AnyRecord)?.name || originalComponent?.name || 'Composant') as string const pieces = Array.isArray(link.pieceLinks) ? (link.pieceLinks as AnyRecord[]).map((pl) => createPieceNode(pl, componentName)).filter(Boolean) as AnyRecord[] @@ -234,8 +240,8 @@ export const buildMachineHierarchyFromLinks = ( id: appliedComponent.id || composantId || machineComponentLinkId || `component-${machineComponentLinkId}`, composantId, name: componentName, - reference: link.overrides?.reference || appliedComponent.reference || (appliedComponent.definition as AnyRecord)?.reference || originalComponent?.reference || null, - prix: link.overrides?.prix ?? appliedComponent.prix ?? originalComponent?.prix ?? null, + reference: compOverrides?.reference || appliedComponent.reference || (appliedComponent.definition as AnyRecord)?.reference || originalComponent?.reference || null, + prix: compOverrides?.prix ?? appliedComponent.prix ?? originalComponent?.prix ?? null, constructeur: appliedComponent.constructeur || originalComponent?.constructeur || null, constructeurId: appliedComponent.constructeurId || (appliedComponent.constructeur as AnyRecord)?.id || originalComponent?.constructeurId || null, documents: Array.isArray(appliedComponent.documents) ? appliedComponent.documents : Array.isArray(originalComponent?.documents) ? originalComponent!.documents : [], @@ -244,9 +250,9 @@ export const buildMachineHierarchyFromLinks = ( typeMachineComponentRequirement: requirement, typeMachineComponentRequirementId: requirement?.id || null, requirementId: requirement?.id || null, - overrides: link.overrides || null, - machineComponentLinkOverrides: link.overrides || null, - definitionOverrides: link.overrides || null, + overrides: compOverrides, + machineComponentLinkOverrides: compOverrides, + definitionOverrides: compOverrides, originalComposant: originalComponent, machineComponentLink: link, machineComponentLinkId, diff --git a/app/composables/useMachinePrint.ts b/app/composables/useMachinePrint.ts index cd9252b..d62d0d3 100644 --- a/app/composables/useMachinePrint.ts +++ b/app/composables/useMachinePrint.ts @@ -88,7 +88,8 @@ export function useMachinePrint() { ) => { if (typeof window === 'undefined') return - const context = buildMachinePrintContext({ + // machineReport.js has no type annotations; cast to avoid inferred never[] params + const context = (buildMachinePrintContext as unknown as (config: Record) => Record)({ machine, machineName, machineReference, diff --git a/app/pages/machine/[id].vue b/app/pages/machine/[id].vue index b177531..5491abd 100644 --- a/app/pages/machine/[id].vue +++ b/app/pages/machine/[id].vue @@ -689,7 +689,7 @@