refacto(F1.1) : wire [id].vue to use extracted modules and fix TS errors

Wire machine/[id].vue to import from extracted utility modules
(customFieldUtils, productDisplayUtils, useMachineHierarchy, useMachinePrint).
Remove ~1400 LOC of inline functions replaced by imports.
Fix TypeScript errors in extracted composables (AnyRecord/ConstructeurSummary
boundary casts, Map generics, optional chaining on unknown).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Matthieu
2026-02-04 08:58:42 +01:00
parent 649f8ca9cc
commit 1f2d6c78e8
3 changed files with 93 additions and 1405 deletions

View File

@@ -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<string, unknown>
@@ -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<ConstructeurSummary[]>
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<unknown, AnyRecord>(
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<unknown, AnyRecord>(
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,

View File

@@ -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<string, unknown>) => Record<string, unknown>)({
machine,
machineName,
machineReference,

File diff suppressed because it is too large Load Diff