feat: enrich piece assignment labels and document previews

This commit is contained in:
Matthieu
2025-10-23 09:01:38 +02:00
parent 553600c34b
commit 417b34b45e
11 changed files with 364 additions and 51 deletions

View File

@@ -202,11 +202,27 @@ const sanitizePieces = (pieces: any[]): ComponentModelPiece[] => {
? piece.reference.trim()
: undefined
if (!typePieceId && !typePieceLabel && !reference) {
const rawFamilyCode = typeof piece?.familyCode === 'string'
? piece.familyCode.trim()
: typeof piece?.typePiece?.code === 'string'
? piece.typePiece.code.trim()
: ''
const familyCode = rawFamilyCode.length > 0 ? rawFamilyCode : undefined
const rawRole = typeof piece?.role === 'string' ? piece.role.trim() : ''
const role = rawRole.length > 0 ? rawRole : undefined
if (!typePieceId && !typePieceLabel && !reference && !familyCode) {
return null
}
const result: ComponentModelPiece = {}
if (role) {
result.role = role
}
if (familyCode) {
result.familyCode = familyCode
}
if (reference !== undefined) {
result.reference = reference
}
@@ -519,6 +535,8 @@ const hydratePieces = (pieces: any[]): ComponentModelPiece[] => {
typePieceId: piece?.typePieceId ?? piece?.typePiece?.id ?? '',
typePieceLabel: piece?.typePieceLabel ?? piece?.typePiece?.name ?? '',
reference: piece?.reference ?? '',
familyCode: piece?.familyCode ?? piece?.typePiece?.code ?? '',
role: piece?.role ?? '',
}))
}
@@ -590,6 +608,8 @@ const mapComponentPieces = (pieces: any[]): ComponentModelPiece[] => {
reference: piece?.reference ?? '',
typePieceId: piece?.typePieceId ?? piece?.typePiece?.id ?? '',
typePieceLabel: piece?.typePieceLabel ?? piece?.typePiece?.name ?? '',
familyCode: piece?.familyCode ?? piece?.typePiece?.code ?? '',
role: piece?.role ?? '',
}))
}

View File

@@ -15,6 +15,8 @@ export interface ComponentModelPiece {
typePieceId?: string
typePieceLabel?: string
reference?: string
familyCode?: string
role?: string
}
export interface ComponentModelStructureNode {
@@ -119,9 +121,11 @@ const validatePiece = (
const typePieceId = ensureString(value.typePieceId)
const typePieceLabel = ensureString(value.typePieceLabel)
const reference = ensureString(value.reference)
const familyCode = ensureString((value as any).familyCode)
const role = ensureString((value as any).role)
if (!typePieceId && !typePieceLabel && !reference) {
issues.push(`${path}: au moins un identifiant ou libellé de pièce est requis`)
if (!typePieceId && !typePieceLabel && !reference && !familyCode) {
issues.push(`${path}: au moins un identifiant, une famille ou une référence de pièce est requis`)
return null
}
@@ -129,6 +133,8 @@ const validatePiece = (
...(typePieceId ? { typePieceId } : {}),
...(typePieceLabel ? { typePieceLabel } : {}),
...(reference ? { reference } : {}),
...(familyCode ? { familyCode } : {}),
...(role ? { role } : {}),
}
}