@muni-sanfer/types-gestor-documental 0.0.1-beta.14 → 0.0.1-beta.16

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.
Files changed (42) hide show
  1. package/dist/base/entities.d.ts +78 -3
  2. package/dist/base/entities.js +9 -1
  3. package/dist/contracts/archivalSeries.contract.d.ts +50 -0
  4. package/dist/contracts/archivalSeries.contract.js +11 -0
  5. package/dist/contracts/caseFile.contract.d.ts +63 -1
  6. package/dist/contracts/caseFile.contract.js +6 -0
  7. package/dist/contracts/document.contract.d.ts +34 -1
  8. package/dist/contracts/document.contract.js +3 -0
  9. package/dist/contracts/documentType.contract.d.ts +1 -0
  10. package/dist/contracts/index.d.ts +29 -1
  11. package/dist/contracts/index.js +6 -0
  12. package/dist/contracts/scan.contract.d.ts +63 -0
  13. package/dist/contracts/scan.contract.js +12 -0
  14. package/dist/entities/archivalSeries/archivalSeries.entity.d.ts +27 -0
  15. package/dist/entities/archivalSeries/archivalSeries.entity.js +2 -0
  16. package/dist/entities/archivalSeries/index.d.ts +1 -0
  17. package/dist/entities/archivalSeries/index.js +17 -0
  18. package/dist/entities/caseFile/caseFile.entity.d.ts +85 -0
  19. package/dist/entities/document/document.entity.d.ts +47 -0
  20. package/dist/entities/documentType/documentType.entity.d.ts +5 -0
  21. package/dist/entities/index.d.ts +2 -0
  22. package/dist/entities/index.js +2 -0
  23. package/dist/entities/scan/index.d.ts +1 -0
  24. package/dist/entities/scan/index.js +17 -0
  25. package/dist/entities/scan/scan.entity.d.ts +29 -0
  26. package/dist/entities/scan/scan.entity.js +2 -0
  27. package/package.json +1 -1
  28. package/src/base/entities.ts +88 -3
  29. package/src/contracts/archivalSeries.contract.ts +53 -0
  30. package/src/contracts/caseFile.contract.ts +54 -0
  31. package/src/contracts/document.contract.ts +32 -0
  32. package/src/contracts/documentType.contract.ts +2 -0
  33. package/src/contracts/index.ts +9 -1
  34. package/src/contracts/scan.contract.ts +52 -0
  35. package/src/entities/archivalSeries/archivalSeries.entity.ts +32 -0
  36. package/src/entities/archivalSeries/index.ts +1 -0
  37. package/src/entities/caseFile/caseFile.entity.ts +83 -0
  38. package/src/entities/document/document.entity.ts +45 -0
  39. package/src/entities/documentType/documentType.entity.ts +2 -0
  40. package/src/entities/index.ts +2 -0
  41. package/src/entities/scan/index.ts +1 -0
  42. package/src/entities/scan/scan.entity.ts +32 -0
@@ -33,7 +33,7 @@ export declare const DocumentParticipantStatus: {
33
33
  Resolved: "Resolved";
34
34
  Rejected: "Rejected";
35
35
  };
36
- export type DocumentTrackingAction = 'Created' | 'Updated' | 'Submitted' | 'Visaed' | 'Signed' | 'Rejected' | 'Finished' | 'Discarded' | 'Numbered' | 'NumberAnnulled' | 'Annulled' | 'Delivered' | 'Derived' | 'Reassigned' | 'Dispatched' | 'DispatchReturned' | 'Received';
36
+ export type DocumentTrackingAction = 'Created' | 'Updated' | 'Submitted' | 'Visaed' | 'Signed' | 'Rejected' | 'Finished' | 'Discarded' | 'Numbered' | 'NumberAnnulled' | 'Annulled' | 'Delivered' | 'Derived' | 'Reassigned' | 'Dispatched' | 'DispatchReturned' | 'Received' | 'EmailCopySent' | 'EmailCopyOpened';
37
37
  export declare const DocumentTrackingAction: {
38
38
  Created: "Created";
39
39
  Updated: "Updated";
@@ -52,6 +52,8 @@ export declare const DocumentTrackingAction: {
52
52
  Dispatched: "Dispatched";
53
53
  DispatchReturned: "DispatchReturned";
54
54
  Received: "Received";
55
+ EmailCopySent: "EmailCopySent";
56
+ EmailCopyOpened: "EmailCopyOpened";
55
57
  };
56
58
  export type DocumentOrigin = 'Internal' | 'DocDigital';
57
59
  export declare const DocumentOrigin: {
@@ -144,7 +146,7 @@ export declare const CaseFileActorType: {
144
146
  PrivateInstitution: "PrivateInstitution";
145
147
  Official: "Official";
146
148
  };
147
- export type CaseFileTrackingAction = 'Created' | 'Updated' | 'EntryAdded' | 'EntryVoided' | 'EntryMoved' | 'ParticipantAdded' | 'ParticipantRemoved' | 'Closed' | 'Exported';
149
+ export type CaseFileTrackingAction = 'Created' | 'Updated' | 'EntryAdded' | 'EntryVoided' | 'EntryMoved' | 'ParticipantAdded' | 'ParticipantRemoved' | 'Closed' | 'Exported' | 'ShareLinkCreated' | 'ShareLinkRevoked';
148
150
  export declare const CaseFileTrackingAction: {
149
151
  Created: "Created";
150
152
  Updated: "Updated";
@@ -155,6 +157,8 @@ export declare const CaseFileTrackingAction: {
155
157
  ParticipantRemoved: "ParticipantRemoved";
156
158
  Closed: "Closed";
157
159
  Exported: "Exported";
160
+ ShareLinkCreated: "ShareLinkCreated";
161
+ ShareLinkRevoked: "ShareLinkRevoked";
158
162
  };
159
163
  export type CaseFileAccessAction = 'Viewed' | 'FileDownloaded' | 'Exported';
160
164
  export declare const CaseFileAccessAction: {
@@ -162,6 +166,11 @@ export declare const CaseFileAccessAction: {
162
166
  FileDownloaded: "FileDownloaded";
163
167
  Exported: "Exported";
164
168
  };
169
+ export type ScanSessionStatus = 'Open' | 'Ready';
170
+ export declare const ScanSessionStatus: {
171
+ Open: "Open";
172
+ Ready: "Ready";
173
+ };
165
174
  export type WorkFolderItemKind = 'Document' | 'File';
166
175
  export declare const WorkFolderItemKind: {
167
176
  Document: "Document";
@@ -178,6 +187,8 @@ export interface DocumentTypeEntity {
178
187
  resetsYearly: boolean;
179
188
  numbered: boolean;
180
189
  directorateCodeReference?: number | null;
190
+ archivalSeries?: ArchivalSeriesEntity | null;
191
+ archivalSeriesId?: string | null;
181
192
  issuingEntity?: IssuingEntityEntity | null;
182
193
  issuingEntityId?: string | null;
183
194
  sharesNumberingWith?: DocumentTypeEntity | null;
@@ -198,6 +209,7 @@ export interface DocumentEntity {
198
209
  keywords: string[];
199
210
  accessLevel: DocumentAccessLevel;
200
211
  hasSensitiveData: boolean;
212
+ restrictionEndsAt?: string | null;
201
213
  status: DocumentStatus;
202
214
  correlative?: number | null;
203
215
  correlativeYear?: number | null;
@@ -242,6 +254,7 @@ export interface DocumentEntity {
242
254
  caseFileEntries?: CaseFileEntryEntity[];
243
255
  workFolderItems?: WorkFolderItemEntity[];
244
256
  externalRecipients?: DocumentExternalRecipientEntity[];
257
+ emailCopies?: DocumentEmailCopyEntity[];
245
258
  dispatch?: DocumentDispatchEntity | null;
246
259
  docDigitalInbound?: DocDigitalInboundEntity | null;
247
260
  deleted: boolean;
@@ -385,6 +398,9 @@ export interface CaseFileEntity {
385
398
  status: CaseFileStatus;
386
399
  accessLevel: DocumentAccessLevel;
387
400
  hasSensitiveData: boolean;
401
+ restrictionEndsAt?: string | null;
402
+ archivalSeries?: ArchivalSeriesEntity | null;
403
+ archivalSeriesId?: string | null;
388
404
  incorporationMechanism: CaseFileIncorporationMechanism;
389
405
  schemaVersion: string;
390
406
  procedure?: ProcedureEntity;
@@ -403,6 +419,7 @@ export interface CaseFileEntity {
403
419
  trackings?: CaseFileTrackingEntity[];
404
420
  metadataChanges?: CaseFileMetadataChangeEntity[];
405
421
  accesses?: CaseFileAccessEntity[];
422
+ shareLinks?: CaseFileShareLinkEntity[];
406
423
  createdAt: string;
407
424
  updatedAt: string;
408
425
  workFolder?: WorkFolderEntity | null;
@@ -488,10 +505,55 @@ export interface CaseFileAccessEntity {
488
505
  id: string;
489
506
  action: CaseFileAccessAction;
490
507
  entryId?: string | null;
491
- employeeId: string;
508
+ employeeId?: string | null;
492
509
  employeeFullName: string;
510
+ shareLink?: CaseFileShareLinkEntity | null;
511
+ shareLinkId?: string | null;
512
+ caseFile?: CaseFileEntity;
513
+ caseFileId: string;
514
+ createdAt: string;
515
+ }
516
+ export interface CaseFileShareLinkEntity {
517
+ id: string;
518
+ tokenHash: string;
519
+ recipient: string;
520
+ recipientEmail?: string | null;
521
+ purpose?: string | null;
522
+ allowExport: boolean;
523
+ expiresAt: string;
524
+ createdByEmployeeId: string;
525
+ createdByFullName: string;
526
+ revokedAt?: string | null;
527
+ revokedByEmployeeId?: string | null;
528
+ revokedByFullName?: string | null;
493
529
  caseFile?: CaseFileEntity;
494
530
  caseFileId: string;
531
+ accesses?: CaseFileAccessEntity[];
532
+ createdAt: string;
533
+ }
534
+ export interface DocumentEmailCopyEntity {
535
+ id: string;
536
+ name: string;
537
+ email: string;
538
+ tokenHash?: string | null;
539
+ expiresAt?: string | null;
540
+ issuedAt?: string | null;
541
+ openedAt?: string | null;
542
+ downloadCount: number;
543
+ document?: DocumentEntity;
544
+ documentId: string;
545
+ createdAt: string;
546
+ }
547
+ export interface ScanSessionEntity {
548
+ id: string;
549
+ tokenHash: string;
550
+ status: ScanSessionStatus;
551
+ employeeId: string;
552
+ pages: JsonValue;
553
+ fileId?: string | null;
554
+ fileName?: string | null;
555
+ expiresAt: string;
556
+ finishedAt?: string | null;
495
557
  createdAt: string;
496
558
  }
497
559
  export interface DocumentExternalRecipientEntity {
@@ -559,6 +621,19 @@ export interface DocDigitalInboundEntity {
559
621
  createdAt: string;
560
622
  updatedAt: string;
561
623
  }
624
+ export interface ArchivalSeriesEntity {
625
+ id: string;
626
+ code: string;
627
+ name: string;
628
+ section?: string | null;
629
+ description?: string | null;
630
+ enabled: boolean;
631
+ documentTypes?: DocumentTypeEntity[];
632
+ caseFiles?: CaseFileEntity[];
633
+ deleted: boolean;
634
+ createdAt: string;
635
+ updatedAt: string;
636
+ }
562
637
  export interface IssuingEntityEntity {
563
638
  id: string;
564
639
  name: string;
@@ -1,7 +1,7 @@
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.WorkFolderItemKind = 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.DocumentOrigin = exports.DocumentTrackingAction = exports.DocumentParticipantStatus = exports.DocumentParticipantRole = exports.DocumentAccessLevel = exports.DocumentStatus = exports.DocumentCategory = void 0;
4
+ exports.WorkFolderItemKind = 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.DocumentOrigin = exports.DocumentTrackingAction = exports.DocumentParticipantStatus = exports.DocumentParticipantRole = exports.DocumentAccessLevel = exports.DocumentStatus = exports.DocumentCategory = void 0;
5
5
  exports.DocumentCategory = {
6
6
  Decree: 'Decree',
7
7
  Communication: 'Communication',
@@ -50,6 +50,8 @@ exports.DocumentTrackingAction = {
50
50
  Dispatched: 'Dispatched',
51
51
  DispatchReturned: 'DispatchReturned',
52
52
  Received: 'Received',
53
+ EmailCopySent: 'EmailCopySent',
54
+ EmailCopyOpened: 'EmailCopyOpened',
53
55
  };
54
56
  exports.DocumentOrigin = {
55
57
  Internal: 'Internal',
@@ -138,12 +140,18 @@ exports.CaseFileTrackingAction = {
138
140
  ParticipantRemoved: 'ParticipantRemoved',
139
141
  Closed: 'Closed',
140
142
  Exported: 'Exported',
143
+ ShareLinkCreated: 'ShareLinkCreated',
144
+ ShareLinkRevoked: 'ShareLinkRevoked',
141
145
  };
142
146
  exports.CaseFileAccessAction = {
143
147
  Viewed: 'Viewed',
144
148
  FileDownloaded: 'FileDownloaded',
145
149
  Exported: 'Exported',
146
150
  };
151
+ exports.ScanSessionStatus = {
152
+ Open: 'Open',
153
+ Ready: 'Ready',
154
+ };
147
155
  exports.WorkFolderItemKind = {
148
156
  Document: 'Document',
149
157
  File: 'File',
@@ -0,0 +1,50 @@
1
+ import { type ArchivalSeriesEntity } from '../base/entities';
2
+ import { type ArchivalSeriesCreateResponseEntity, type ArchivalSeriesGetAllResponseEntity, type ArchivalSeriesGetByIdResponseEntity, type ArchivalSeriesUpdateResponseEntity } from '../entities';
3
+ import { type RpcPage } from './contract';
4
+ /** Patrones NATS de `archivalSeries` (series del Cuadro de Clasificación): `<servicio>.<recurso>.<acción>`. */
5
+ export declare const ArchivalSeriesPatterns: {
6
+ readonly getAll: "gestorDocumental.archivalSeries.getAll";
7
+ readonly getById: "gestorDocumental.archivalSeries.getById";
8
+ readonly create: "gestorDocumental.archivalSeries.create";
9
+ readonly update: "gestorDocumental.archivalSeries.update";
10
+ readonly setEnabled: "gestorDocumental.archivalSeries.setEnabled";
11
+ };
12
+ /** Datos de una serie documental al crearla o editarla. */
13
+ export interface ArchivalSeriesWritePayload {
14
+ code: string;
15
+ name: string;
16
+ section?: string | null;
17
+ description?: string | null;
18
+ enabled?: boolean;
19
+ }
20
+ export interface ArchivalSeriesContract {
21
+ [ArchivalSeriesPatterns.getAll]: {
22
+ payload: {
23
+ pagination?: {
24
+ page?: number;
25
+ limit?: number;
26
+ };
27
+ filters?: {
28
+ search?: string;
29
+ enabled?: boolean;
30
+ };
31
+ };
32
+ response: RpcPage<ArchivalSeriesGetAllResponseEntity[]>;
33
+ };
34
+ [ArchivalSeriesPatterns.getById]: {
35
+ payload: Pick<ArchivalSeriesEntity, 'id'>;
36
+ response: ArchivalSeriesGetByIdResponseEntity;
37
+ };
38
+ [ArchivalSeriesPatterns.create]: {
39
+ payload: ArchivalSeriesWritePayload;
40
+ response: ArchivalSeriesCreateResponseEntity;
41
+ };
42
+ [ArchivalSeriesPatterns.update]: {
43
+ payload: ArchivalSeriesWritePayload & Pick<ArchivalSeriesEntity, 'id'>;
44
+ response: ArchivalSeriesUpdateResponseEntity;
45
+ };
46
+ [ArchivalSeriesPatterns.setEnabled]: {
47
+ payload: Pick<ArchivalSeriesEntity, 'id' | 'enabled'>;
48
+ response: ArchivalSeriesUpdateResponseEntity;
49
+ };
50
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArchivalSeriesPatterns = void 0;
4
+ /** Patrones NATS de `archivalSeries` (series del Cuadro de Clasificación): `<servicio>.<recurso>.<acción>`. */
5
+ exports.ArchivalSeriesPatterns = {
6
+ getAll: 'gestorDocumental.archivalSeries.getAll',
7
+ getById: 'gestorDocumental.archivalSeries.getById',
8
+ create: 'gestorDocumental.archivalSeries.create',
9
+ update: 'gestorDocumental.archivalSeries.update',
10
+ setEnabled: 'gestorDocumental.archivalSeries.setEnabled',
11
+ };
@@ -1,5 +1,5 @@
1
1
  import { type CaseFileActorRelation, type CaseFileActorType, type CaseFileActuationType, type CaseFileEntity, type CaseFileStatus, type DocumentAccessLevel } from '../base/entities';
2
- import { type CaseFileAddBatchResponseEntity, type CaseFileAddEntryResponseEntity, type CaseFileCreateResponseEntity, type CaseFileEntryFileResponseEntity, type CaseFileExportResponseEntity, type CaseFileGetAllResponseEntity, type CaseFileGetByIdResponseEntity, type CaseFileUpdateResponseEntity } from '../entities';
2
+ import { type CaseFileAddBatchResponseEntity, type CaseFileAddEntryResponseEntity, type CaseFileCreateResponseEntity, type CaseFileEntryFileResponseEntity, type CaseFileExportResponseEntity, type CaseFileGetAllResponseEntity, type CaseFileGetByIdResponseEntity, type CaseFileShareLinkCreateResponseEntity, type CaseFileShareLinkResponseEntity, type CaseFileSharedResponseEntity, type CaseFileUpdateResponseEntity } from '../entities';
3
3
  import { type RpcPage } from './contract';
4
4
  import { type DocumentActor } from './document.contract';
5
5
  /** Patrones NATS de `caseFile`: `<servicio>.<recurso>.<acción>`. */
@@ -17,7 +17,25 @@ export declare const CaseFilePatterns: {
17
17
  readonly close: "gestorDocumental.caseFile.close";
18
18
  readonly getEntryFile: "gestorDocumental.caseFile.getEntryFile";
19
19
  readonly getExport: "gestorDocumental.caseFile.getExport";
20
+ readonly createShareLink: "gestorDocumental.caseFile.createShareLink";
21
+ readonly getShareLinks: "gestorDocumental.caseFile.getShareLinks";
22
+ readonly revokeShareLink: "gestorDocumental.caseFile.revokeShareLink";
23
+ readonly getShared: "gestorDocumental.caseFile.getShared";
24
+ readonly getSharedEntryFile: "gestorDocumental.caseFile.getSharedEntryFile";
25
+ readonly getSharedExport: "gestorDocumental.caseFile.getSharedExport";
20
26
  };
27
+ /** Enlace temporal para que alguien de fuera consulte el expediente sin sesión. */
28
+ export interface CaseFileShareLinkPayload {
29
+ /** A quién se entrega. Ej: «Contraloría Regional». */
30
+ recipient: string;
31
+ /** Si se indica, el gateway le envía el enlace por correo. */
32
+ recipientEmail?: string | null;
33
+ purpose?: string | null;
34
+ /** Cuántos días dura: de 1 a 30. */
35
+ days: number;
36
+ /** Puede descargar el expediente completo (ZIP). Por omisión, sí. */
37
+ allowExport?: boolean;
38
+ }
21
39
  /** Persona u organización relacionada con el expediente (MGDEE54). */
22
40
  export interface CaseFileActorInput {
23
41
  relation: CaseFileActorRelation;
@@ -33,6 +51,10 @@ export interface CaseFileWritePayload {
33
51
  procedureId: string;
34
52
  accessLevel: DocumentAccessLevel;
35
53
  hasSensitiveData: boolean;
54
+ /** MGDEE8_2: fin de la restricción de acceso (ISO 8601), si no es público. */
55
+ restrictionEndsAt?: string | null;
56
+ /** MGDEE1_2: serie del Cuadro de Clasificación. */
57
+ archivalSeriesId?: string | null;
36
58
  actors?: CaseFileActorInput[];
37
59
  }
38
60
  /** Actuación que se incorpora al índice: un documento del gestor, un archivo subido u otro expediente. */
@@ -181,5 +203,45 @@ export interface CaseFileContract {
181
203
  payload: Pick<CaseFileEntity, 'id'> & CaseFileActorPayload;
182
204
  response: CaseFileExportResponseEntity;
183
205
  };
206
+ /** Crea un enlace temporal: solo su responsable. El token viaja solo en esta respuesta. */
207
+ [CaseFilePatterns.createShareLink]: {
208
+ payload: Pick<CaseFileEntity, 'id'> & CaseFileShareLinkPayload & {
209
+ actor: DocumentActor;
210
+ };
211
+ response: CaseFileShareLinkCreateResponseEntity;
212
+ };
213
+ /** Enlaces del expediente, vigentes o no, con cuántas veces se usaron: su responsable o quien ve todos. */
214
+ [CaseFilePatterns.getShareLinks]: {
215
+ payload: Pick<CaseFileEntity, 'id'> & CaseFileActorPayload;
216
+ response: CaseFileShareLinkResponseEntity[];
217
+ };
218
+ [CaseFilePatterns.revokeShareLink]: {
219
+ payload: Pick<CaseFileEntity, 'id'> & {
220
+ linkId: string;
221
+ actor: DocumentActor;
222
+ };
223
+ response: CaseFileUpdateResponseEntity;
224
+ };
225
+ /** Sin sesión, con el token del enlace: metadatos e índice. Queda en el registro de accesos. */
226
+ [CaseFilePatterns.getShared]: {
227
+ payload: {
228
+ token: string;
229
+ };
230
+ response: CaseFileSharedResponseEntity;
231
+ };
232
+ [CaseFilePatterns.getSharedEntryFile]: {
233
+ payload: {
234
+ token: string;
235
+ entryId: string;
236
+ };
237
+ response: CaseFileEntryFileResponseEntity;
238
+ };
239
+ /** El expediente completo, si el enlace lo permite. Queda en la trazabilidad y en el registro de accesos. */
240
+ [CaseFilePatterns.getSharedExport]: {
241
+ payload: {
242
+ token: string;
243
+ };
244
+ response: CaseFileExportResponseEntity;
245
+ };
184
246
  }
185
247
  export {};
@@ -16,4 +16,10 @@ exports.CaseFilePatterns = {
16
16
  close: 'gestorDocumental.caseFile.close',
17
17
  getEntryFile: 'gestorDocumental.caseFile.getEntryFile',
18
18
  getExport: 'gestorDocumental.caseFile.getExport',
19
+ createShareLink: 'gestorDocumental.caseFile.createShareLink',
20
+ getShareLinks: 'gestorDocumental.caseFile.getShareLinks',
21
+ revokeShareLink: 'gestorDocumental.caseFile.revokeShareLink',
22
+ getShared: 'gestorDocumental.caseFile.getShared',
23
+ getSharedEntryFile: 'gestorDocumental.caseFile.getSharedEntryFile',
24
+ getSharedExport: 'gestorDocumental.caseFile.getSharedExport',
19
25
  };
@@ -1,5 +1,5 @@
1
1
  import { 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 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 } from '../entities';
2
+ import { type DocumentAnnulResponseEntity, type DocumentCloseDeliveryResponseEntity, type DocumentCreateResponseEntity, type DocumentDeriveResponseEntity, type DocumentDiscardResponseEntity, type DocumentEmailCopyIssuedEntity, type DocumentEmailCopyViewEntity, 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 } 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: {
@@ -22,6 +22,9 @@ export declare const DocumentPatterns: {
22
22
  readonly getAgenda: "gestorDocumental.document.getAgenda";
23
23
  readonly exportTrail: "gestorDocumental.document.exportTrail";
24
24
  readonly compose: "gestorDocumental.document.compose";
25
+ readonly issueEmailCopies: "gestorDocumental.document.issueEmailCopies";
26
+ readonly getEmailCopy: "gestorDocumental.document.getEmailCopy";
27
+ readonly getEmailCopyFile: "gestorDocumental.document.getEmailCopyFile";
25
28
  };
26
29
  /**
27
30
  * Funcionario que hace la operación y sus áreas (direcciones y departamentos a los que pertenece o que dirige). Lo
@@ -81,9 +84,16 @@ export interface DocumentWritePayload extends Pick<DocumentEntity, 'subject' | '
81
84
  responseDueAt?: string | null;
82
85
  replyToDocumentId?: string | null;
83
86
  externalRecipients?: DocumentExternalRecipientInput[];
87
+ restrictionEndsAt?: string | null;
88
+ emailCopies?: DocumentEmailCopyInput[];
84
89
  action?: 'Submit';
85
90
  actor: DocumentActor;
86
91
  }
92
+ /** Persona u organización fuera del Estado que recibe una copia por correo. */
93
+ export interface DocumentEmailCopyInput {
94
+ name: string;
95
+ email: string;
96
+ }
87
97
  /** Destinatario externo: una institución de DocDigital y, si se indica, uno de sus usuarios. */
88
98
  export interface DocumentExternalRecipientInput {
89
99
  entityId: number;
@@ -295,6 +305,29 @@ export interface DocumentContract {
295
305
  };
296
306
  response: DocumentPublicFileResponseEntity;
297
307
  };
308
+ /**
309
+ * Emite las copias por correo pendientes de estos documentos, si ya corresponde (finalizado y, si va por DocDigital,
310
+ * despachado): genera el enlace de cada una. Se puede pedir de más: lo ya emitido no se repite.
311
+ */
312
+ [DocumentPatterns.issueEmailCopies]: {
313
+ payload: {
314
+ documentIds: string[];
315
+ };
316
+ response: DocumentEmailCopyIssuedEntity[];
317
+ };
318
+ /** Sin sesión, con el token de la copia: el documento y quién lo emitió. */
319
+ [DocumentPatterns.getEmailCopy]: {
320
+ payload: {
321
+ token: string;
322
+ };
323
+ response: DocumentEmailCopyViewEntity;
324
+ };
325
+ [DocumentPatterns.getEmailCopyFile]: {
326
+ payload: {
327
+ token: string;
328
+ };
329
+ response: DocumentPublicFileResponseEntity;
330
+ };
298
331
  /** Carpeta de Drive de los documentos y sus anexos: el gateway la pide antes de subir cada archivo. */
299
332
  [DocumentPatterns.getFilesFolder]: {
300
333
  payload: Record<string, never>;
@@ -22,4 +22,7 @@ exports.DocumentPatterns = {
22
22
  getAgenda: 'gestorDocumental.document.getAgenda',
23
23
  exportTrail: 'gestorDocumental.document.exportTrail',
24
24
  compose: 'gestorDocumental.document.compose',
25
+ issueEmailCopies: 'gestorDocumental.document.issueEmailCopies',
26
+ getEmailCopy: 'gestorDocumental.document.getEmailCopy',
27
+ getEmailCopyFile: 'gestorDocumental.document.getEmailCopyFile',
25
28
  };
@@ -36,6 +36,7 @@ export interface DocumentTypeWritePayload {
36
36
  resetsYearly?: boolean;
37
37
  numbered?: boolean;
38
38
  directorateCodeReference?: number | null;
39
+ archivalSeriesId?: string | null;
39
40
  issuingEntityId?: string | null;
40
41
  sharesNumberingWithId?: string | null;
41
42
  enabled?: boolean;
@@ -2,6 +2,8 @@ import { type CaseFileContract } from './caseFile.contract';
2
2
  import { type DocumentContract } from './document.contract';
3
3
  import { type DocumentTypeContract } from './documentType.contract';
4
4
  import { type IssuingEntityContract } from './issuingEntity.contract';
5
+ import { type ArchivalSeriesContract } from './archivalSeries.contract';
6
+ import { type ScanContract } from './scan.contract';
5
7
  import { type PartsOfficeContract } from './partsOffice.contract';
6
8
  import { type ProcedureContract } from './procedure.contract';
7
9
  import { type RegisterBookContract } from './registerBook.contract';
@@ -17,6 +19,8 @@ export * from './partsOffice.contract';
17
19
  export * from './registerBook.contract';
18
20
  export * from './signatureBatch.contract';
19
21
  export * from './workFolder.contract';
22
+ export * from './scan.contract';
23
+ export * from './archivalSeries.contract';
20
24
  /** Patrones NATS de gestor-documental-ms, por recurso: `gestorDocumental.<recurso>.<acción>`. */
21
25
  export declare const GestorDocumentalPatterns: {
22
26
  readonly documentType: {
@@ -46,6 +50,9 @@ export declare const GestorDocumentalPatterns: {
46
50
  readonly getAgenda: "gestorDocumental.document.getAgenda";
47
51
  readonly exportTrail: "gestorDocumental.document.exportTrail";
48
52
  readonly compose: "gestorDocumental.document.compose";
53
+ readonly issueEmailCopies: "gestorDocumental.document.issueEmailCopies";
54
+ readonly getEmailCopy: "gestorDocumental.document.getEmailCopy";
55
+ readonly getEmailCopyFile: "gestorDocumental.document.getEmailCopyFile";
49
56
  };
50
57
  readonly procedure: {
51
58
  readonly getAll: "gestorDocumental.procedure.getAll";
@@ -75,6 +82,12 @@ export declare const GestorDocumentalPatterns: {
75
82
  readonly close: "gestorDocumental.caseFile.close";
76
83
  readonly getEntryFile: "gestorDocumental.caseFile.getEntryFile";
77
84
  readonly getExport: "gestorDocumental.caseFile.getExport";
85
+ readonly createShareLink: "gestorDocumental.caseFile.createShareLink";
86
+ readonly getShareLinks: "gestorDocumental.caseFile.getShareLinks";
87
+ readonly revokeShareLink: "gestorDocumental.caseFile.revokeShareLink";
88
+ readonly getShared: "gestorDocumental.caseFile.getShared";
89
+ readonly getSharedEntryFile: "gestorDocumental.caseFile.getSharedEntryFile";
90
+ readonly getSharedExport: "gestorDocumental.caseFile.getSharedExport";
78
91
  };
79
92
  readonly partsOffice: {
80
93
  readonly getStatus: "gestorDocumental.partsOffice.getStatus";
@@ -119,6 +132,21 @@ export declare const GestorDocumentalPatterns: {
119
132
  readonly remove: "gestorDocumental.workFolder.remove";
120
133
  readonly convert: "gestorDocumental.workFolder.convert";
121
134
  };
135
+ readonly scan: {
136
+ readonly create: "gestorDocumental.scan.create";
137
+ readonly getById: "gestorDocumental.scan.getById";
138
+ readonly getFile: "gestorDocumental.scan.getFile";
139
+ readonly getByToken: "gestorDocumental.scan.getByToken";
140
+ readonly addPage: "gestorDocumental.scan.addPage";
141
+ readonly finish: "gestorDocumental.scan.finish";
142
+ };
143
+ readonly archivalSeries: {
144
+ readonly getAll: "gestorDocumental.archivalSeries.getAll";
145
+ readonly getById: "gestorDocumental.archivalSeries.getById";
146
+ readonly create: "gestorDocumental.archivalSeries.create";
147
+ readonly update: "gestorDocumental.archivalSeries.update";
148
+ readonly setEnabled: "gestorDocumental.archivalSeries.setEnabled";
149
+ };
122
150
  };
123
151
  /** Contrato completo de gestor-documental-ms: la unión de los contratos de sus recursos. */
124
- export type GestorDocumentalContract = DocumentTypeContract & DocumentContract & ProcedureContract & IssuingEntityContract & CaseFileContract & PartsOfficeContract & RegisterBookContract & SignatureBatchContract & WorkFolderContract;
152
+ export type GestorDocumentalContract = DocumentTypeContract & DocumentContract & ProcedureContract & IssuingEntityContract & CaseFileContract & PartsOfficeContract & RegisterBookContract & SignatureBatchContract & WorkFolderContract & ScanContract & ArchivalSeriesContract;
@@ -19,6 +19,8 @@ const caseFile_contract_1 = require("./caseFile.contract");
19
19
  const document_contract_1 = require("./document.contract");
20
20
  const documentType_contract_1 = require("./documentType.contract");
21
21
  const issuingEntity_contract_1 = require("./issuingEntity.contract");
22
+ const archivalSeries_contract_1 = require("./archivalSeries.contract");
23
+ const scan_contract_1 = require("./scan.contract");
22
24
  const partsOffice_contract_1 = require("./partsOffice.contract");
23
25
  const procedure_contract_1 = require("./procedure.contract");
24
26
  const registerBook_contract_1 = require("./registerBook.contract");
@@ -34,6 +36,8 @@ __exportStar(require("./partsOffice.contract"), exports);
34
36
  __exportStar(require("./registerBook.contract"), exports);
35
37
  __exportStar(require("./signatureBatch.contract"), exports);
36
38
  __exportStar(require("./workFolder.contract"), exports);
39
+ __exportStar(require("./scan.contract"), exports);
40
+ __exportStar(require("./archivalSeries.contract"), exports);
37
41
  /** Patrones NATS de gestor-documental-ms, por recurso: `gestorDocumental.<recurso>.<acción>`. */
38
42
  exports.GestorDocumentalPatterns = {
39
43
  documentType: documentType_contract_1.DocumentTypePatterns,
@@ -45,4 +49,6 @@ exports.GestorDocumentalPatterns = {
45
49
  registerBook: registerBook_contract_1.RegisterBookPatterns,
46
50
  signatureBatch: signatureBatch_contract_1.SignatureBatchPatterns,
47
51
  workFolder: workFolder_contract_1.WorkFolderPatterns,
52
+ scan: scan_contract_1.ScanPatterns,
53
+ archivalSeries: archivalSeries_contract_1.ArchivalSeriesPatterns,
48
54
  };
@@ -0,0 +1,63 @@
1
+ import { type ScanSessionCreateResponseEntity, type ScanSessionFileResponseEntity, type ScanSessionPublicEntity, type ScanSessionResponseEntity } from '../entities';
2
+ import { type DocumentActor } from './document.contract';
3
+ /** Patrones NATS de `scan`: escanear con el celular. */
4
+ export declare const ScanPatterns: {
5
+ readonly create: "gestorDocumental.scan.create";
6
+ readonly getById: "gestorDocumental.scan.getById";
7
+ readonly getFile: "gestorDocumental.scan.getFile";
8
+ readonly getByToken: "gestorDocumental.scan.getByToken";
9
+ readonly addPage: "gestorDocumental.scan.addPage";
10
+ readonly finish: "gestorDocumental.scan.finish";
11
+ };
12
+ export interface ScanContract {
13
+ /**
14
+ * Abre una sesión de escaneo para el funcionario. `url` es la dirección pública del celular (sin el token): con ella
15
+ * se arma el QR que se muestra en el escritorio.
16
+ */
17
+ [ScanPatterns.create]: {
18
+ payload: {
19
+ url: string;
20
+ actor: DocumentActor;
21
+ };
22
+ response: ScanSessionCreateResponseEntity;
23
+ };
24
+ /** Estado de la sesión, para quien la abrió: el escritorio la consulta hasta que el PDF esté listo. */
25
+ [ScanPatterns.getById]: {
26
+ payload: {
27
+ id: string;
28
+ actor: DocumentActor;
29
+ };
30
+ response: ScanSessionResponseEntity;
31
+ };
32
+ [ScanPatterns.getFile]: {
33
+ payload: {
34
+ id: string;
35
+ actor: DocumentActor;
36
+ };
37
+ response: ScanSessionFileResponseEntity;
38
+ };
39
+ /** Sin sesión, desde el celular, con el token del QR. */
40
+ [ScanPatterns.getByToken]: {
41
+ payload: {
42
+ token: string;
43
+ };
44
+ response: ScanSessionPublicEntity;
45
+ };
46
+ /** Agrega una foto ya subida al gestor de archivos (la sube el gateway). */
47
+ [ScanPatterns.addPage]: {
48
+ payload: {
49
+ token: string;
50
+ fileId: string;
51
+ contentType: string;
52
+ size: number;
53
+ };
54
+ response: ScanSessionPublicEntity;
55
+ };
56
+ /** Junta las fotos en un PDF y cierra la sesión. */
57
+ [ScanPatterns.finish]: {
58
+ payload: {
59
+ token: string;
60
+ };
61
+ response: ScanSessionPublicEntity;
62
+ };
63
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScanPatterns = void 0;
4
+ /** Patrones NATS de `scan`: escanear con el celular. */
5
+ exports.ScanPatterns = {
6
+ create: 'gestorDocumental.scan.create',
7
+ getById: 'gestorDocumental.scan.getById',
8
+ getFile: 'gestorDocumental.scan.getFile',
9
+ getByToken: 'gestorDocumental.scan.getByToken',
10
+ addPage: 'gestorDocumental.scan.addPage',
11
+ finish: 'gestorDocumental.scan.finish',
12
+ };
@@ -0,0 +1,27 @@
1
+ import { ArchivalSeriesEntity } from '../../base/entities';
2
+ export interface ArchivalSeriesGetAllResponseEntity {
3
+ id: ArchivalSeriesEntity['id'];
4
+ code: ArchivalSeriesEntity['code'];
5
+ name: ArchivalSeriesEntity['name'];
6
+ section: ArchivalSeriesEntity['section'];
7
+ description: ArchivalSeriesEntity['description'];
8
+ enabled: ArchivalSeriesEntity['enabled'];
9
+ /** Cuántos tipos documentales y expedientes la usan. */
10
+ documentTypes: number;
11
+ caseFiles: number;
12
+ }
13
+ export type ArchivalSeriesGetByIdResponseEntity = ArchivalSeriesGetAllResponseEntity;
14
+ /** Cómo se cita una serie donde se usa: código y nombre. */
15
+ export interface ArchivalSeriesSummaryEntity {
16
+ id: string;
17
+ code: string;
18
+ name: string;
19
+ }
20
+ export interface ArchivalSeriesCreateResponseEntity {
21
+ id: ArchivalSeriesEntity['id'];
22
+ ok: boolean;
23
+ }
24
+ export interface ArchivalSeriesUpdateResponseEntity {
25
+ id: ArchivalSeriesEntity['id'];
26
+ ok: boolean;
27
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export * from './archivalSeries.entity';