@muni-sanfer/types-gestor-documental 0.0.1-beta.54 → 0.0.1-beta.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,7 +38,7 @@ export declare const DocumentParticipantStatus: {
38
38
  Resolved: "Resolved";
39
39
  Rejected: "Rejected";
40
40
  };
41
- export type DocumentTrackingAction = 'Created' | 'Updated' | 'Submitted' | 'Visaed' | 'Signed' | 'Rejected' | 'Finished' | 'Discarded' | 'Numbered' | 'NumberAnnulled' | 'Annulled' | 'Delivered' | 'Derived' | 'Reassigned' | 'Dispatched' | 'DispatchReturned' | 'DispatchedByContingency' | 'Received' | 'EmailCopySent' | 'EmailCopyOpened' | 'DispositionRecorded' | 'TransparencyRedacted' | 'TransparencyPublished' | 'TransparencyExcluded' | 'TransparencyWithdrawn' | 'DraftReviewRequested' | 'DraftReviewApproved' | 'DraftReviewRejected' | 'DraftReviewCancelled';
41
+ export type DocumentTrackingAction = 'Created' | 'Updated' | 'Submitted' | 'Visaed' | 'Signed' | 'Rejected' | 'Finished' | 'Discarded' | 'Numbered' | 'NumberAnnulled' | 'Annulled' | 'Delivered' | 'Derived' | 'Reassigned' | 'Dispatched' | 'DispatchReturned' | 'DispatchedByContingency' | 'Received' | 'EmailCopySent' | 'EmailCopyOpened' | 'DispositionRecorded' | 'TransparencyRedacted' | 'TransparencyPublished' | 'TransparencyExcluded' | 'TransparencyWithdrawn' | 'DraftReviewRequested' | 'DraftReviewApproved' | 'DraftReviewRejected' | 'DraftReviewCancelled' | 'DraftCorrected';
42
42
  export declare const DocumentTrackingAction: {
43
43
  Created: "Created";
44
44
  Updated: "Updated";
@@ -69,6 +69,12 @@ export declare const DocumentTrackingAction: {
69
69
  DraftReviewApproved: "DraftReviewApproved";
70
70
  DraftReviewRejected: "DraftReviewRejected";
71
71
  DraftReviewCancelled: "DraftReviewCancelled";
72
+ DraftCorrected: "DraftCorrected";
73
+ };
74
+ export type DraftReviewStage = 'Draft' | 'Official';
75
+ export declare const DraftReviewStage: {
76
+ Draft: "Draft";
77
+ Official: "Official";
72
78
  };
73
79
  export type DraftReviewStatus = 'Pending' | 'Approved' | 'Rejected' | 'Cancelled';
74
80
  export declare const DraftReviewStatus: {
@@ -512,6 +518,8 @@ export interface DocumentEntity {
512
518
  departmentId?: string | null;
513
519
  issuingUnitName?: string | null;
514
520
  issuingDirectorateName?: string | null;
521
+ selfValidated: boolean;
522
+ selfValidationNote?: string | null;
515
523
  createdByEmployeeId: string;
516
524
  createdByFullName: string;
517
525
  originalFileId: string;
@@ -1023,6 +1031,7 @@ export interface DocumentDraftReviewEntity {
1023
1031
  documentId: string;
1024
1032
  document?: DocumentEntity;
1025
1033
  round: number;
1034
+ stage: DraftReviewStage;
1026
1035
  versionNumber: number;
1027
1036
  directorateCodeReference: number;
1028
1037
  directorateName: string;
@@ -1430,6 +1439,7 @@ export interface DocumentVersionEntity {
1430
1439
  composition?: JsonValue | null;
1431
1440
  note?: string | null;
1432
1441
  status: DocumentStatus;
1442
+ correction: boolean;
1433
1443
  createdByEmployeeId: string;
1434
1444
  createdByFullName: string;
1435
1445
  createdAt: string;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  // This file was auto-generated by prisma-generator-typescript-interfaces
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.DataBreachEventAction = exports.DataBreachStatus = exports.DataBreachKind = exports.DataRightsEventAction = exports.DataRightsResolution = exports.DataRightsRequestStatus = exports.DataRightsChannel = exports.DataRight = exports.DataLegalBasis = exports.TransparencyStatus = exports.AccessRequestEventAction = exports.AccessRequestResolution = exports.AccessRequestStatus = exports.AccessRequestChannel = exports.DispositionKind = exports.FinalDisposition = exports.AuditAction = exports.AuditEntity = exports.DocumentAccessAction = exports.QualityMetricKey = exports.ServiceOutageKind = exports.WorkFolderItemKind = exports.HolidaySource = exports.TextSnippetSection = exports.ScanSessionStatus = exports.CaseFileAccessAction = exports.CaseFileTrackingAction = exports.CaseFileActorType = exports.CaseFileActorRelation = exports.CaseFileEntryKind = exports.CaseFileActuationType = exports.CaseFileIncorporationMechanism = exports.CaseFileStatus = exports.DocumentInstruction = exports.DocumentDeliveryOrigin = exports.DocumentRecipientType = exports.DocumentAttachmentType = exports.DocumentFlowStepType = exports.DocDigitalInboundStatus = exports.DocumentDispatchStatus = exports.CommunicationMeans = exports.DocumentOrigin = exports.DraftReviewStatus = exports.DocumentTrackingAction = exports.DocumentParticipantStatus = exports.DocumentParticipantRole = exports.DocumentAccessLevel = exports.DocumentStatus = exports.DocumentNumberingScope = exports.DocumentCategory = void 0;
5
- exports.DraftingRequestEventAction = exports.DraftingRequestStatus = exports.MailAuthentication = exports.MailIntakeStatus = exports.DeskFileTarget = exports.DeskFileSource = exports.DataBreachNoticeMeans = void 0;
4
+ exports.DataBreachStatus = exports.DataBreachKind = exports.DataRightsEventAction = exports.DataRightsResolution = exports.DataRightsRequestStatus = exports.DataRightsChannel = exports.DataRight = exports.DataLegalBasis = exports.TransparencyStatus = exports.AccessRequestEventAction = exports.AccessRequestResolution = exports.AccessRequestStatus = exports.AccessRequestChannel = exports.DispositionKind = exports.FinalDisposition = exports.AuditAction = exports.AuditEntity = exports.DocumentAccessAction = exports.QualityMetricKey = exports.ServiceOutageKind = exports.WorkFolderItemKind = exports.HolidaySource = exports.TextSnippetSection = exports.ScanSessionStatus = exports.CaseFileAccessAction = exports.CaseFileTrackingAction = exports.CaseFileActorType = exports.CaseFileActorRelation = exports.CaseFileEntryKind = exports.CaseFileActuationType = exports.CaseFileIncorporationMechanism = exports.CaseFileStatus = exports.DocumentInstruction = exports.DocumentDeliveryOrigin = exports.DocumentRecipientType = exports.DocumentAttachmentType = exports.DocumentFlowStepType = exports.DocDigitalInboundStatus = exports.DocumentDispatchStatus = exports.CommunicationMeans = exports.DocumentOrigin = exports.DraftReviewStatus = exports.DraftReviewStage = exports.DocumentTrackingAction = exports.DocumentParticipantStatus = exports.DocumentParticipantRole = exports.DocumentAccessLevel = exports.DocumentStatus = exports.DocumentNumberingScope = exports.DocumentCategory = void 0;
5
+ exports.DraftingRequestEventAction = exports.DraftingRequestStatus = exports.MailAuthentication = exports.MailIntakeStatus = exports.DeskFileTarget = exports.DeskFileSource = exports.DataBreachNoticeMeans = exports.DataBreachEventAction = void 0;
6
6
  exports.DocumentCategory = {
7
7
  Decree: 'Decree',
8
8
  Communication: 'Communication',
@@ -67,6 +67,11 @@ exports.DocumentTrackingAction = {
67
67
  DraftReviewApproved: 'DraftReviewApproved',
68
68
  DraftReviewRejected: 'DraftReviewRejected',
69
69
  DraftReviewCancelled: 'DraftReviewCancelled',
70
+ DraftCorrected: 'DraftCorrected',
71
+ };
72
+ exports.DraftReviewStage = {
73
+ Draft: 'Draft',
74
+ Official: 'Official',
70
75
  };
71
76
  exports.DraftReviewStatus = {
72
77
  Pending: 'Pending',
@@ -1,5 +1,5 @@
1
1
  import { type DocumentAccessAction, type DocumentAccessLevel, type DocumentAttachmentEntity, type DocumentDeliveryEntity, type DocumentEntity, type DocumentInstruction, type DocumentParticipantEntity, type DocumentStatus } from '../base/entities';
2
- import { type DocumentAnnulResponseEntity, type DocumentCloseDeliveryResponseEntity, type DocumentCreateResponseEntity, type DocumentDeriveResponseEntity, type DocumentDiscardResponseEntity, type DocumentEmailCopyIssuedEntity, type DocumentEmailCopyViewEntity, type DocumentReminderEntity, type DocumentGetAllResponseEntity, type DocumentGetByIdResponseEntity, type DocumentGetSummaryResponseEntity, type DocumentInboxItemEntity, type DocumentPublicFileResponseEntity, type DocumentReassignResponseEntity, type DocumentReviewResponseEntity, type DocumentSignManyResponseEntity, type DocumentAgendaResponseEntity, type DocumentComposeResponseEntity, type DocumentComposition, type DocumentTrailExportEntity, type DocumentUpdateResponseEntity, type DocumentVerifyResponseEntity, type DocumentCommentResponseEntity, type DocumentCommentsResponseEntity, type DocumentVersionResponseEntity, type DocumentDraftReviewResponseEntity } from '../entities';
2
+ import { type DocumentAnnulResponseEntity, type DocumentCloseDeliveryResponseEntity, type DocumentCreateResponseEntity, type DocumentDeriveResponseEntity, type DocumentDiscardResponseEntity, type DocumentEmailCopyIssuedEntity, type DocumentEmailCopyViewEntity, type DocumentReminderEntity, type DocumentGetAllResponseEntity, type DocumentGetByIdResponseEntity, type DocumentGetSummaryResponseEntity, type DocumentInboxItemEntity, type DocumentPublicFileResponseEntity, type DocumentReassignResponseEntity, type DocumentReviewResponseEntity, type DocumentSignManyResponseEntity, type DocumentAgendaResponseEntity, type DocumentComposeResponseEntity, type DocumentComposition, type DocumentTrailExportEntity, type DocumentUpdateResponseEntity, type DocumentVerifyResponseEntity, type DocumentCommentResponseEntity, type DocumentCommentsResponseEntity, type DocumentVersionResponseEntity, type DocumentDraftCorrectionResponseEntity, type DocumentDraftReviewResponseEntity } from '../entities';
3
3
  import { type RpcPage } from './contract';
4
4
  /** Patrones NATS de `document`: `<servicio>.<recurso>.<acción>`. */
5
5
  export declare const DocumentPatterns: {
@@ -14,6 +14,7 @@ export declare const DocumentPatterns: {
14
14
  readonly reassign: "gestorDocumental.document.reassign";
15
15
  readonly requestDraftReview: "gestorDocumental.document.requestDraftReview";
16
16
  readonly resolveDraftReview: "gestorDocumental.document.resolveDraftReview";
17
+ readonly correctDraft: "gestorDocumental.document.correctDraft";
17
18
  readonly discard: "gestorDocumental.document.discard";
18
19
  readonly annul: "gestorDocumental.document.annul";
19
20
  readonly derive: "gestorDocumental.document.derive";
@@ -92,6 +93,8 @@ export interface DocumentWritePayload extends Pick<DocumentEntity, 'subject' | '
92
93
  departmentId?: string | null;
93
94
  issuingUnitName?: string | null;
94
95
  issuingDirectorateName?: string | null;
96
+ selfValidated?: boolean;
97
+ selfValidationNote?: string | null;
95
98
  externalCorrelative?: number | null;
96
99
  externalCorrelativeYear?: number | null;
97
100
  file: {
@@ -296,6 +299,20 @@ export interface DocumentContract {
296
299
  };
297
300
  response: DocumentDraftReviewResponseEntity;
298
301
  };
302
+ /**
303
+ * La jefatura que tiene la revisión pendiente corrige el texto redactado con la plantilla, sin devolverlo: el sistema
304
+ * arma el PDF y guarda una versión nueva a su nombre con la justificación. La revisión sigue pendiente, ahora de esa
305
+ * versión.
306
+ */
307
+ [DocumentPatterns.correctDraft]: {
308
+ payload: Pick<DocumentEntity, 'id'> & {
309
+ subject: string;
310
+ composition: DocumentComposition;
311
+ reason: string;
312
+ actor: DocumentActor;
313
+ };
314
+ response: DocumentDraftCorrectionResponseEntity;
315
+ };
299
316
  [DocumentPatterns.reassign]: {
300
317
  payload: Pick<DocumentEntity, 'id'> & {
301
318
  participantId: DocumentParticipantEntity['id'];
@@ -14,6 +14,7 @@ exports.DocumentPatterns = {
14
14
  reassign: 'gestorDocumental.document.reassign',
15
15
  requestDraftReview: 'gestorDocumental.document.requestDraftReview',
16
16
  resolveDraftReview: 'gestorDocumental.document.resolveDraftReview',
17
+ correctDraft: 'gestorDocumental.document.correctDraft',
17
18
  discard: 'gestorDocumental.document.discard',
18
19
  annul: 'gestorDocumental.document.annul',
19
20
  derive: 'gestorDocumental.document.derive',
@@ -78,6 +78,7 @@ export declare const GestorDocumentalPatterns: {
78
78
  readonly reassign: "gestorDocumental.document.reassign";
79
79
  readonly requestDraftReview: "gestorDocumental.document.requestDraftReview";
80
80
  readonly resolveDraftReview: "gestorDocumental.document.resolveDraftReview";
81
+ readonly correctDraft: "gestorDocumental.document.correctDraft";
81
82
  readonly discard: "gestorDocumental.document.discard";
82
83
  readonly annul: "gestorDocumental.document.annul";
83
84
  readonly derive: "gestorDocumental.document.derive";
@@ -211,6 +211,8 @@ export interface DocumentGetByIdResponseEntity {
211
211
  * más reciente primero) y si la versión vigente ya está aprobada. `null` si el tipo no la exige.
212
212
  */
213
213
  draftReview: DocumentDraftReviewInfoEntity | null;
214
+ /** Se subió como validado: no pasó por la revisión del tipo. */
215
+ selfValidation: DocumentSelfValidationEntity | null;
214
216
  /** Solicitud de redacción que atiende, si se redactó a pedido de otra área. */
215
217
  draftingRequest: DocumentDraftingRequestEntity | null;
216
218
  replies: DocumentLinkEntity[];
@@ -304,6 +306,8 @@ export interface DocumentCreateResponseEntity {
304
306
  export interface DocumentUpdateResponseEntity {
305
307
  id: DocumentEntity['id'];
306
308
  ok: boolean;
309
+ /** Se envió con el borrador aprobado: el documento oficial quedó en revisión (hay que avisar a quien lo revisa). */
310
+ officialReview?: DocumentDraftReviewResponseEntity;
307
311
  }
308
312
  export interface DocumentReviewResponseEntity {
309
313
  id: DocumentEntity['id'];
@@ -650,6 +654,8 @@ export interface DocumentVersionResponseEntity {
650
654
  composition: DocumentComposition | null;
651
655
  note: string | null;
652
656
  status: DocumentStatus;
657
+ /** La guardó la jefatura revisora al corregir el texto; `note` es su justificación. */
658
+ correction: boolean;
653
659
  createdByFullName: string;
654
660
  createdAt: string;
655
661
  /** Visaciones, firmas y rechazos mientras fue la versión vigente. */
@@ -683,6 +689,8 @@ export interface DocumentCommentsResponseEntity {
683
689
  export interface DocumentDraftReviewRoundEntity {
684
690
  id: string;
685
691
  round: number;
692
+ /** Qué se revisó: el borrador (su contenido) o el documento oficial, antes de entrar a tramitación. */
693
+ stage: 'Draft' | 'Official';
686
694
  /** Versión del borrador que se revisó. */
687
695
  versionNumber: number;
688
696
  directorateName: string;
@@ -699,20 +707,42 @@ export interface DocumentDraftReviewInfoEntity {
699
707
  directorateCodeReference: number;
700
708
  directorateName: string;
701
709
  rounds: DocumentDraftReviewRoundEntity[];
702
- /** La versión vigente del borrador está aprobada: se puede enviar a tramitación. */
710
+ /**
711
+ * La versión vigente del borrador está aprobada: quien redacta completa visación, firma y destinatarios y lo envía,
712
+ * y el documento oficial va a revisión de quien aprobó el borrador.
713
+ */
703
714
  approved: boolean;
704
715
  /** Hay una ronda esperando respuesta: el borrador no se edita mientras tanto. */
705
716
  pending: boolean;
717
+ /** Qué espera la ronda pendiente, si la hay. */
718
+ pendingStage: DocumentDraftReviewRoundEntity['stage'] | null;
719
+ }
720
+ /** PDF subido que quien redacta declaró validado, con su justificación: se saltó la revisión que exige el tipo. */
721
+ export interface DocumentSelfValidationEntity {
722
+ note: string;
706
723
  }
707
724
  /** Resultado de pedir, resolver o retirar una revisión del borrador. */
708
725
  export interface DocumentDraftReviewResponseEntity {
709
726
  id: string;
710
727
  ok: boolean;
711
728
  round: number;
729
+ stage: DocumentDraftReviewRoundEntity['stage'];
712
730
  status: DocumentDraftReviewRoundEntity['status'];
713
731
  /** A quién avisar: la jefatura revisora (al pedirla) o el redactor (al resolverla). */
714
732
  notify: {
715
733
  employeeId: string;
716
734
  fullName: string;
717
735
  } | null;
736
+ /** Al aprobar el oficial, el documento entró a tramitación: hay que avisar a quien tiene el primer turno. */
737
+ submitted?: boolean;
738
+ }
739
+ /** Resultado de la corrección de la jefatura revisora: la versión nueva y a quién avisar (quien redacta). */
740
+ export interface DocumentDraftCorrectionResponseEntity {
741
+ id: string;
742
+ ok: boolean;
743
+ versionNumber: number;
744
+ notify: {
745
+ employeeId: string;
746
+ fullName: string;
747
+ } | null;
718
748
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@muni-sanfer/types-gestor-documental",
3
- "version": "0.0.1-beta.54",
3
+ "version": "0.0.1-beta.56",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -82,7 +82,8 @@ export type DocumentTrackingAction =
82
82
  | 'DraftReviewRequested'
83
83
  | 'DraftReviewApproved'
84
84
  | 'DraftReviewRejected'
85
- | 'DraftReviewCancelled';
85
+ | 'DraftReviewCancelled'
86
+ | 'DraftCorrected';
86
87
 
87
88
  export const DocumentTrackingAction = {
88
89
  Created: 'Created',
@@ -114,8 +115,16 @@ export const DocumentTrackingAction = {
114
115
  DraftReviewApproved: 'DraftReviewApproved',
115
116
  DraftReviewRejected: 'DraftReviewRejected',
116
117
  DraftReviewCancelled: 'DraftReviewCancelled',
118
+ DraftCorrected: 'DraftCorrected',
117
119
  } satisfies Record<string, DocumentTrackingAction>;
118
120
 
121
+ export type DraftReviewStage = 'Draft' | 'Official';
122
+
123
+ export const DraftReviewStage = {
124
+ Draft: 'Draft',
125
+ Official: 'Official',
126
+ } satisfies Record<string, DraftReviewStage>;
127
+
119
128
  export type DraftReviewStatus = 'Pending' | 'Approved' | 'Rejected' | 'Cancelled';
120
129
 
121
130
  export const DraftReviewStatus = {
@@ -722,6 +731,8 @@ export interface DocumentEntity {
722
731
  departmentId?: string | null;
723
732
  issuingUnitName?: string | null;
724
733
  issuingDirectorateName?: string | null;
734
+ selfValidated: boolean;
735
+ selfValidationNote?: string | null;
725
736
  createdByEmployeeId: string;
726
737
  createdByFullName: string;
727
738
  originalFileId: string;
@@ -1264,6 +1275,7 @@ export interface DocumentDraftReviewEntity {
1264
1275
  documentId: string;
1265
1276
  document?: DocumentEntity;
1266
1277
  round: number;
1278
+ stage: DraftReviewStage;
1267
1279
  versionNumber: number;
1268
1280
  directorateCodeReference: number;
1269
1281
  directorateName: string;
@@ -1696,6 +1708,7 @@ export interface DocumentVersionEntity {
1696
1708
  composition?: JsonValue | null;
1697
1709
  note?: string | null;
1698
1710
  status: DocumentStatus;
1711
+ correction: boolean;
1699
1712
  createdByEmployeeId: string;
1700
1713
  createdByFullName: string;
1701
1714
  createdAt: string;
@@ -34,6 +34,7 @@ import {
34
34
  type DocumentCommentResponseEntity,
35
35
  type DocumentCommentsResponseEntity,
36
36
  type DocumentVersionResponseEntity,
37
+ type DocumentDraftCorrectionResponseEntity,
37
38
  type DocumentDraftReviewResponseEntity,
38
39
  } from '../entities';
39
40
  import { type RpcPage } from './contract';
@@ -51,6 +52,7 @@ export const DocumentPatterns = {
51
52
  reassign: 'gestorDocumental.document.reassign',
52
53
  requestDraftReview: 'gestorDocumental.document.requestDraftReview',
53
54
  resolveDraftReview: 'gestorDocumental.document.resolveDraftReview',
55
+ correctDraft: 'gestorDocumental.document.correctDraft',
54
56
  discard: 'gestorDocumental.document.discard',
55
57
  annul: 'gestorDocumental.document.annul',
56
58
  derive: 'gestorDocumental.document.derive',
@@ -134,6 +136,9 @@ export interface DocumentWritePayload extends Pick<DocumentEntity, 'subject' | '
134
136
  // Nombres del área responsable y de su dirección: los pone el gateway, no el navegador.
135
137
  issuingUnitName?: string | null;
136
138
  issuingDirectorateName?: string | null;
139
+ // PDF subido que quien redacta declara validado, con su justificación: no pasa por la revisión que exige el tipo.
140
+ selfValidated?: boolean;
141
+ selfValidationNote?: string | null;
137
142
  // El documento llegó ya numerado (su tipo lo admite): su número y año.
138
143
  externalCorrelative?: number | null;
139
144
  externalCorrelativeYear?: number | null;
@@ -328,6 +333,20 @@ export interface DocumentContract {
328
333
  };
329
334
  response: DocumentDraftReviewResponseEntity;
330
335
  };
336
+ /**
337
+ * La jefatura que tiene la revisión pendiente corrige el texto redactado con la plantilla, sin devolverlo: el sistema
338
+ * arma el PDF y guarda una versión nueva a su nombre con la justificación. La revisión sigue pendiente, ahora de esa
339
+ * versión.
340
+ */
341
+ [DocumentPatterns.correctDraft]: {
342
+ payload: Pick<DocumentEntity, 'id'> & {
343
+ subject: string;
344
+ composition: DocumentComposition;
345
+ reason: string;
346
+ actor: DocumentActor;
347
+ };
348
+ response: DocumentDraftCorrectionResponseEntity;
349
+ };
331
350
  [DocumentPatterns.reassign]: {
332
351
  payload: Pick<DocumentEntity, 'id'> & {
333
352
  participantId: DocumentParticipantEntity['id'];
@@ -244,6 +244,8 @@ export interface DocumentGetByIdResponseEntity {
244
244
  * más reciente primero) y si la versión vigente ya está aprobada. `null` si el tipo no la exige.
245
245
  */
246
246
  draftReview: DocumentDraftReviewInfoEntity | null;
247
+ /** Se subió como validado: no pasó por la revisión del tipo. */
248
+ selfValidation: DocumentSelfValidationEntity | null;
247
249
  /** Solicitud de redacción que atiende, si se redactó a pedido de otra área. */
248
250
  draftingRequest: DocumentDraftingRequestEntity | null;
249
251
  replies: DocumentLinkEntity[];
@@ -338,6 +340,8 @@ export interface DocumentCreateResponseEntity {
338
340
  export interface DocumentUpdateResponseEntity {
339
341
  id: DocumentEntity['id'];
340
342
  ok: boolean;
343
+ /** Se envió con el borrador aprobado: el documento oficial quedó en revisión (hay que avisar a quien lo revisa). */
344
+ officialReview?: DocumentDraftReviewResponseEntity;
341
345
  }
342
346
 
343
347
  export interface DocumentReviewResponseEntity {
@@ -685,6 +689,8 @@ export interface DocumentVersionResponseEntity {
685
689
  composition: DocumentComposition | null;
686
690
  note: string | null;
687
691
  status: DocumentStatus;
692
+ /** La guardó la jefatura revisora al corregir el texto; `note` es su justificación. */
693
+ correction: boolean;
688
694
  createdByFullName: string;
689
695
  createdAt: string;
690
696
  /** Visaciones, firmas y rechazos mientras fue la versión vigente. */
@@ -721,6 +727,8 @@ export interface DocumentCommentsResponseEntity {
721
727
  export interface DocumentDraftReviewRoundEntity {
722
728
  id: string;
723
729
  round: number;
730
+ /** Qué se revisó: el borrador (su contenido) o el documento oficial, antes de entrar a tramitación. */
731
+ stage: 'Draft' | 'Official';
724
732
  /** Versión del borrador que se revisó. */
725
733
  versionNumber: number;
726
734
  directorateName: string;
@@ -738,10 +746,20 @@ export interface DocumentDraftReviewInfoEntity {
738
746
  directorateCodeReference: number;
739
747
  directorateName: string;
740
748
  rounds: DocumentDraftReviewRoundEntity[];
741
- /** La versión vigente del borrador está aprobada: se puede enviar a tramitación. */
749
+ /**
750
+ * La versión vigente del borrador está aprobada: quien redacta completa visación, firma y destinatarios y lo envía,
751
+ * y el documento oficial va a revisión de quien aprobó el borrador.
752
+ */
742
753
  approved: boolean;
743
754
  /** Hay una ronda esperando respuesta: el borrador no se edita mientras tanto. */
744
755
  pending: boolean;
756
+ /** Qué espera la ronda pendiente, si la hay. */
757
+ pendingStage: DocumentDraftReviewRoundEntity['stage'] | null;
758
+ }
759
+
760
+ /** PDF subido que quien redacta declaró validado, con su justificación: se saltó la revisión que exige el tipo. */
761
+ export interface DocumentSelfValidationEntity {
762
+ note: string;
745
763
  }
746
764
 
747
765
  /** Resultado de pedir, resolver o retirar una revisión del borrador. */
@@ -749,7 +767,18 @@ export interface DocumentDraftReviewResponseEntity {
749
767
  id: string;
750
768
  ok: boolean;
751
769
  round: number;
770
+ stage: DocumentDraftReviewRoundEntity['stage'];
752
771
  status: DocumentDraftReviewRoundEntity['status'];
753
772
  /** A quién avisar: la jefatura revisora (al pedirla) o el redactor (al resolverla). */
754
773
  notify: { employeeId: string; fullName: string } | null;
774
+ /** Al aprobar el oficial, el documento entró a tramitación: hay que avisar a quien tiene el primer turno. */
775
+ submitted?: boolean;
776
+ }
777
+
778
+ /** Resultado de la corrección de la jefatura revisora: la versión nueva y a quién avisar (quien redacta). */
779
+ export interface DocumentDraftCorrectionResponseEntity {
780
+ id: string;
781
+ ok: boolean;
782
+ versionNumber: number;
783
+ notify: { employeeId: string; fullName: string } | null;
755
784
  }