From 7a41ce25ad6d8d0a2e1c6f534df0ff27e1a3a220 Mon Sep 17 00:00:00 2001 From: enlineawork Date: Mon, 7 Sep 2026 20:43:55 -0300 Subject: [PATCH] feat(f4): add finding recurrence linkage --- .../src/database/entities/inspection-finding.entity.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/api-v3/src/database/entities/inspection-finding.entity.ts b/api-v3/src/database/entities/inspection-finding.entity.ts index e1f5a69..67e3631 100644 --- a/api-v3/src/database/entities/inspection-finding.entity.ts +++ b/api-v3/src/database/entities/inspection-finding.entity.ts @@ -1,6 +1,7 @@ import { Column, Entity, Index, PrimaryGeneratedColumn } from 'typeorm'; import { TimestampedEntity } from './timestamped.entity'; +/** @deprecated Los plazos de respuesta pasan al nivel Acta/Informe en F4. */ export enum InspectionFindingResponseDueBasis { FINDING_DATE = 'FINDING_DATE', REPORT_NOTIFICATION = 'REPORT_NOTIFICATION', @@ -18,6 +19,7 @@ export enum InspectionFindingStatus { @Index('idx_inspection_findings_status_control', ['status', 'nextControlOn']) @Index('idx_inspection_findings_asset_status', ['assetId', 'status']) @Index('idx_inspection_findings_catalog_item', ['catalogItemId']) +@Index('idx_inspection_findings_recurrence_of', ['recurrenceOfFindingId']) export class InspectionFinding extends TimestampedEntity { @PrimaryGeneratedColumn('uuid') id!: string; @@ -61,9 +63,16 @@ export class InspectionFinding extends TimestampedEntity { @Column({ type: 'smallint', nullable: true }) severity!: number | null; + @Column({ name: 'is_recurrence', type: 'boolean', default: false }) + isRecurrence!: boolean; + + @Column({ name: 'recurrence_of_finding_id', type: 'uuid', nullable: true }) + recurrenceOfFindingId!: string | null; + @Column({ name: 'correction_due_on', type: 'date', nullable: true }) correctionDueOn!: string | null; + // Campos legacy conservados temporalmente para migrar datos sin pérdida. @Column({ name: 'response_due_basis', type: 'varchar', length: 32, nullable: true }) responseDueBasis!: InspectionFindingResponseDueBasis | null;