@muni-sanfer/types-gestor-documental 0.0.1-beta.3 → 0.0.1-beta.5

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 (41) hide show
  1. package/dist/base/entities.d.ts +295 -1
  2. package/dist/base/entities.js +72 -1
  3. package/dist/contracts/caseFile.contract.d.ts +149 -0
  4. package/dist/contracts/caseFile.contract.js +17 -0
  5. package/dist/contracts/document.contract.d.ts +6 -0
  6. package/dist/contracts/index.d.ts +45 -1
  7. package/dist/contracts/index.js +9 -0
  8. package/dist/contracts/partsOffice.contract.d.ts +171 -0
  9. package/dist/contracts/partsOffice.contract.js +22 -0
  10. package/dist/contracts/procedure.contract.d.ts +50 -0
  11. package/dist/contracts/procedure.contract.js +11 -0
  12. package/dist/entities/caseFile/caseFile.entity.d.ts +169 -0
  13. package/dist/entities/caseFile/caseFile.entity.js +2 -0
  14. package/dist/entities/caseFile/index.d.ts +1 -0
  15. package/dist/entities/caseFile/index.js +17 -0
  16. package/dist/entities/document/document.entity.d.ts +47 -0
  17. package/dist/entities/index.d.ts +3 -0
  18. package/dist/entities/index.js +3 -0
  19. package/dist/entities/partsOffice/index.d.ts +1 -0
  20. package/dist/entities/partsOffice/index.js +17 -0
  21. package/dist/entities/partsOffice/partsOffice.entity.d.ts +98 -0
  22. package/dist/entities/partsOffice/partsOffice.entity.js +2 -0
  23. package/dist/entities/procedure/index.d.ts +1 -0
  24. package/dist/entities/procedure/index.js +17 -0
  25. package/dist/entities/procedure/procedure.entity.d.ts +20 -0
  26. package/dist/entities/procedure/procedure.entity.js +2 -0
  27. package/package.json +1 -1
  28. package/src/base/entities.ts +348 -1
  29. package/src/contracts/caseFile.contract.ts +134 -0
  30. package/src/contracts/document.contract.ts +8 -0
  31. package/src/contracts/index.ts +14 -1
  32. package/src/contracts/partsOffice.contract.ts +120 -0
  33. package/src/contracts/procedure.contract.ts +53 -0
  34. package/src/entities/caseFile/caseFile.entity.ts +196 -0
  35. package/src/entities/caseFile/index.ts +1 -0
  36. package/src/entities/document/document.entity.ts +44 -0
  37. package/src/entities/index.ts +3 -0
  38. package/src/entities/partsOffice/index.ts +1 -0
  39. package/src/entities/partsOffice/partsOffice.entity.ts +103 -0
  40. package/src/entities/procedure/index.ts +1 -0
  41. package/src/entities/procedure/procedure.entity.ts +24 -0
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./procedure.entity"), exports);
@@ -0,0 +1,20 @@
1
+ import { ProcedureEntity } from '../../base/entities';
2
+ export interface ProcedureGetAllResponseEntity {
3
+ id: ProcedureEntity['id'];
4
+ name: ProcedureEntity['name'];
5
+ cpatId: ProcedureEntity['cpatId'];
6
+ cpatCode: ProcedureEntity['cpatCode'];
7
+ description: ProcedureEntity['description'];
8
+ enabled: ProcedureEntity['enabled'];
9
+ /** Cuántos expedientes pertenecen a este procedimiento. */
10
+ caseFiles: number;
11
+ }
12
+ export type ProcedureGetByIdResponseEntity = ProcedureGetAllResponseEntity;
13
+ export interface ProcedureCreateResponseEntity {
14
+ id: ProcedureEntity['id'];
15
+ ok: boolean;
16
+ }
17
+ export interface ProcedureUpdateResponseEntity {
18
+ id: ProcedureEntity['id'];
19
+ ok: boolean;
20
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@muni-sanfer/types-gestor-documental",
3
- "version": "0.0.1-beta.3",
3
+ "version": "0.0.1-beta.5",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -60,7 +60,10 @@ export type DocumentTrackingAction =
60
60
  | 'Annulled'
61
61
  | 'Delivered'
62
62
  | 'Derived'
63
- | 'Reassigned';
63
+ | 'Reassigned'
64
+ | 'Dispatched'
65
+ | 'DispatchReturned'
66
+ | 'Received';
64
67
 
65
68
  export const DocumentTrackingAction = {
66
69
  Created: 'Created',
@@ -77,8 +80,34 @@ export const DocumentTrackingAction = {
77
80
  Delivered: 'Delivered',
78
81
  Derived: 'Derived',
79
82
  Reassigned: 'Reassigned',
83
+ Dispatched: 'Dispatched',
84
+ DispatchReturned: 'DispatchReturned',
85
+ Received: 'Received',
80
86
  } satisfies Record<string, DocumentTrackingAction>;
81
87
 
88
+ export type DocumentOrigin = 'Internal' | 'DocDigital';
89
+
90
+ export const DocumentOrigin = {
91
+ Internal: 'Internal',
92
+ DocDigital: 'DocDigital',
93
+ } satisfies Record<string, DocumentOrigin>;
94
+
95
+ export type DocumentDispatchStatus = 'Pending' | 'Dispatched' | 'Returned';
96
+
97
+ export const DocumentDispatchStatus = {
98
+ Pending: 'Pending',
99
+ Dispatched: 'Dispatched',
100
+ Returned: 'Returned',
101
+ } satisfies Record<string, DocumentDispatchStatus>;
102
+
103
+ export type DocDigitalInboundStatus = 'Pending' | 'Registered' | 'Returned';
104
+
105
+ export const DocDigitalInboundStatus = {
106
+ Pending: 'Pending',
107
+ Registered: 'Registered',
108
+ Returned: 'Returned',
109
+ } satisfies Record<string, DocDigitalInboundStatus>;
110
+
82
111
  export type DocumentFlowStepType = 'Employee' | 'DirectorateHead';
83
112
 
84
113
  export const DocumentFlowStepType = {
@@ -117,6 +146,101 @@ export const DocumentInstruction = {
117
146
  Archive: 'Archive',
118
147
  } satisfies Record<string, DocumentInstruction>;
119
148
 
149
+ export type CaseFileStatus = 'Open' | 'Closed';
150
+
151
+ export const CaseFileStatus = {
152
+ Open: 'Open',
153
+ Closed: 'Closed',
154
+ } satisfies Record<string, CaseFileStatus>;
155
+
156
+ export type CaseFileIncorporationMechanism =
157
+ 'Manual' | 'WebService' | 'Mixed' | 'CitizenRepository' | 'Interoperability';
158
+
159
+ export const CaseFileIncorporationMechanism = {
160
+ Manual: 'Manual',
161
+ WebService: 'WebService',
162
+ Mixed: 'Mixed',
163
+ CitizenRepository: 'CitizenRepository',
164
+ Interoperability: 'Interoperability',
165
+ } satisfies Record<string, CaseFileIncorporationMechanism>;
166
+
167
+ export type CaseFileActuationType =
168
+ | 'AdministrativeAct'
169
+ | 'Notification'
170
+ | 'OfficialCommunication'
171
+ | 'Interoperability'
172
+ | 'RequestReception'
173
+ | 'Subfolder'
174
+ | 'PowerRegistration';
175
+
176
+ export const CaseFileActuationType = {
177
+ AdministrativeAct: 'AdministrativeAct',
178
+ Notification: 'Notification',
179
+ OfficialCommunication: 'OfficialCommunication',
180
+ Interoperability: 'Interoperability',
181
+ RequestReception: 'RequestReception',
182
+ Subfolder: 'Subfolder',
183
+ PowerRegistration: 'PowerRegistration',
184
+ } satisfies Record<string, CaseFileActuationType>;
185
+
186
+ export type CaseFileEntryKind = 'Document' | 'File' | 'CaseFile';
187
+
188
+ export const CaseFileEntryKind = {
189
+ Document: 'Document',
190
+ File: 'File',
191
+ CaseFile: 'CaseFile',
192
+ } satisfies Record<string, CaseFileEntryKind>;
193
+
194
+ export type CaseFileActorRelation =
195
+ 'Responsible' | 'Interested' | 'Author' | 'Referred' | 'Recipient' | 'MinisterOfFaith';
196
+
197
+ export const CaseFileActorRelation = {
198
+ Responsible: 'Responsible',
199
+ Interested: 'Interested',
200
+ Author: 'Author',
201
+ Referred: 'Referred',
202
+ Recipient: 'Recipient',
203
+ MinisterOfFaith: 'MinisterOfFaith',
204
+ } satisfies Record<string, CaseFileActorRelation>;
205
+
206
+ export type CaseFileActorType = 'Citizen' | 'Foreigner' | 'PrivateInstitution' | 'Official';
207
+
208
+ export const CaseFileActorType = {
209
+ Citizen: 'Citizen',
210
+ Foreigner: 'Foreigner',
211
+ PrivateInstitution: 'PrivateInstitution',
212
+ Official: 'Official',
213
+ } satisfies Record<string, CaseFileActorType>;
214
+
215
+ export type CaseFileTrackingAction =
216
+ | 'Created'
217
+ | 'Updated'
218
+ | 'EntryAdded'
219
+ | 'EntryVoided'
220
+ | 'ParticipantAdded'
221
+ | 'ParticipantRemoved'
222
+ | 'Closed'
223
+ | 'Exported';
224
+
225
+ export const CaseFileTrackingAction = {
226
+ Created: 'Created',
227
+ Updated: 'Updated',
228
+ EntryAdded: 'EntryAdded',
229
+ EntryVoided: 'EntryVoided',
230
+ ParticipantAdded: 'ParticipantAdded',
231
+ ParticipantRemoved: 'ParticipantRemoved',
232
+ Closed: 'Closed',
233
+ Exported: 'Exported',
234
+ } satisfies Record<string, CaseFileTrackingAction>;
235
+
236
+ export type CaseFileAccessAction = 'Viewed' | 'FileDownloaded' | 'Exported';
237
+
238
+ export const CaseFileAccessAction = {
239
+ Viewed: 'Viewed',
240
+ FileDownloaded: 'FileDownloaded',
241
+ Exported: 'Exported',
242
+ } satisfies Record<string, CaseFileAccessAction>;
243
+
120
244
  export interface DocumentTypeEntity {
121
245
  id: string;
122
246
  name: string;
@@ -151,6 +275,12 @@ export interface DocumentEntity {
151
275
  annulledAt?: string | null;
152
276
  annulmentReason?: string | null;
153
277
  responseDueAt?: string | null;
278
+ origin: DocumentOrigin;
279
+ intakeNumber?: number | null;
280
+ intakeYear?: number | null;
281
+ externalFolio?: string | null;
282
+ externalSender?: string | null;
283
+ externalDate?: string | null;
154
284
  replyTo?: DocumentEntity | null;
155
285
  replyToDocumentId?: string | null;
156
286
  replies?: DocumentEntity[];
@@ -172,6 +302,10 @@ export interface DocumentEntity {
172
302
  annulledNumbers?: DocumentAnnulledNumberEntity[];
173
303
  recipients?: DocumentRecipientEntity[];
174
304
  deliveries?: DocumentDeliveryEntity[];
305
+ caseFileEntries?: CaseFileEntryEntity[];
306
+ externalRecipients?: DocumentExternalRecipientEntity[];
307
+ dispatch?: DocumentDispatchEntity | null;
308
+ docDigitalInbound?: DocDigitalInboundEntity | null;
175
309
  deleted: boolean;
176
310
  createdAt: string;
177
311
  updatedAt: string;
@@ -278,3 +412,216 @@ export interface DocumentTypeFlowStepEntity {
278
412
  documentTypeId: string;
279
413
  createdAt: string;
280
414
  }
415
+
416
+ export interface ProcedureEntity {
417
+ id: string;
418
+ name: string;
419
+ cpatId?: string | null;
420
+ cpatCode?: string | null;
421
+ description?: string | null;
422
+ enabled: boolean;
423
+ caseFiles?: CaseFileEntity[];
424
+ deleted: boolean;
425
+ createdAt: string;
426
+ updatedAt: string;
427
+ }
428
+
429
+ export interface CaseFileSequenceEntity {
430
+ year: number;
431
+ next: number;
432
+ }
433
+
434
+ export interface CaseFileEntity {
435
+ id: string;
436
+ code: string;
437
+ year: number;
438
+ number: number;
439
+ title: string;
440
+ subject: string;
441
+ summary?: string | null;
442
+ status: CaseFileStatus;
443
+ accessLevel: DocumentAccessLevel;
444
+ hasSensitiveData: boolean;
445
+ incorporationMechanism: CaseFileIncorporationMechanism;
446
+ schemaVersion: string;
447
+ procedure?: ProcedureEntity;
448
+ procedureId: string;
449
+ responsibleEmployeeId: string;
450
+ responsibleFullName: string;
451
+ responsiblePosition?: string | null;
452
+ closedAt?: string | null;
453
+ closedByEmployeeId?: string | null;
454
+ closedByFullName?: string | null;
455
+ closingNote?: string | null;
456
+ participants?: CaseFileParticipantEntity[];
457
+ actors?: CaseFileActorEntity[];
458
+ entries?: CaseFileEntryEntity[];
459
+ linkedFrom?: CaseFileEntryEntity[];
460
+ trackings?: CaseFileTrackingEntity[];
461
+ metadataChanges?: CaseFileMetadataChangeEntity[];
462
+ accesses?: CaseFileAccessEntity[];
463
+ createdAt: string;
464
+ updatedAt: string;
465
+ }
466
+
467
+ export interface CaseFileParticipantEntity {
468
+ id: string;
469
+ employeeId: string;
470
+ fullName: string;
471
+ position?: string | null;
472
+ addedByEmployeeId: string;
473
+ addedByFullName: string;
474
+ caseFile?: CaseFileEntity;
475
+ caseFileId: string;
476
+ createdAt: string;
477
+ }
478
+
479
+ export interface CaseFileActorEntity {
480
+ id: string;
481
+ relation: CaseFileActorRelation;
482
+ actorType: CaseFileActorType;
483
+ identifier?: string | null;
484
+ name: string;
485
+ caseFile?: CaseFileEntity;
486
+ caseFileId: string;
487
+ createdAt: string;
488
+ }
489
+
490
+ export interface CaseFileEntryEntity {
491
+ id: string;
492
+ sequence: number;
493
+ kind: CaseFileEntryKind;
494
+ actuationType: CaseFileActuationType;
495
+ title: string;
496
+ document?: DocumentEntity | null;
497
+ documentId?: string | null;
498
+ fileId?: string | null;
499
+ fileName?: string | null;
500
+ documentTypeName?: string | null;
501
+ originDate?: string | null;
502
+ author?: string | null;
503
+ keywords: string[];
504
+ accessLevel?: DocumentAccessLevel | null;
505
+ hasSensitiveData?: boolean | null;
506
+ linkedCaseFile?: CaseFileEntity | null;
507
+ linkedCaseFileId?: string | null;
508
+ sha256?: string | null;
509
+ size?: number | null;
510
+ hasAdvancedSignature: boolean;
511
+ incorporatedByEmployeeId: string;
512
+ incorporatedByFullName: string;
513
+ voidedAt?: string | null;
514
+ voidedByEmployeeId?: string | null;
515
+ voidedByFullName?: string | null;
516
+ voidReason?: string | null;
517
+ caseFile?: CaseFileEntity;
518
+ caseFileId: string;
519
+ createdAt: string;
520
+ }
521
+
522
+ export interface CaseFileTrackingEntity {
523
+ id: string;
524
+ action: CaseFileTrackingAction;
525
+ observation?: string | null;
526
+ employeeId?: string | null;
527
+ employeeFullName?: string | null;
528
+ caseFile?: CaseFileEntity;
529
+ caseFileId: string;
530
+ createdAt: string;
531
+ }
532
+
533
+ export interface CaseFileMetadataChangeEntity {
534
+ id: string;
535
+ field: string;
536
+ previousValue?: string | null;
537
+ newValue?: string | null;
538
+ employeeId: string;
539
+ employeeFullName: string;
540
+ caseFile?: CaseFileEntity;
541
+ caseFileId: string;
542
+ createdAt: string;
543
+ }
544
+
545
+ export interface CaseFileAccessEntity {
546
+ id: string;
547
+ action: CaseFileAccessAction;
548
+ entryId?: string | null;
549
+ employeeId: string;
550
+ employeeFullName: string;
551
+ caseFile?: CaseFileEntity;
552
+ caseFileId: string;
553
+ createdAt: string;
554
+ }
555
+
556
+ export interface DocumentExternalRecipientEntity {
557
+ id: string;
558
+ entityId: number;
559
+ entityName: string;
560
+ userId?: number | null;
561
+ userName?: string | null;
562
+ userPosition?: string | null;
563
+ document?: DocumentEntity;
564
+ documentId: string;
565
+ createdAt: string;
566
+ }
567
+
568
+ export interface DocumentDispatchEntity {
569
+ id: string;
570
+ status: DocumentDispatchStatus;
571
+ folio?: string | null;
572
+ docDigitalTypeId?: number | null;
573
+ docDigitalTypeName?: string | null;
574
+ docDigitalDocumentId?: string | null;
575
+ docDigitalRequestId?: string | null;
576
+ dispatchedAt?: string | null;
577
+ dispatchedByEmployeeId?: string | null;
578
+ dispatchedByFullName?: string | null;
579
+ returnedAt?: string | null;
580
+ returnedByEmployeeId?: string | null;
581
+ returnedByFullName?: string | null;
582
+ returnReason?: string | null;
583
+ document?: DocumentEntity;
584
+ documentId: string;
585
+ createdAt: string;
586
+ updatedAt: string;
587
+ }
588
+
589
+ export interface DocDigitalInboundEntity {
590
+ id: string;
591
+ docDigitalDocumentId: string;
592
+ docDigitalRequestId?: string | null;
593
+ status: DocDigitalInboundStatus;
594
+ subject: string;
595
+ description?: string | null;
596
+ folio?: string | null;
597
+ folioDate?: string | null;
598
+ typeName?: string | null;
599
+ reserved: boolean;
600
+ senderEntityId?: number | null;
601
+ senderEntityName?: string | null;
602
+ senderName?: string | null;
603
+ senderPosition?: string | null;
604
+ fileId?: string | null;
605
+ fileName?: string | null;
606
+ attachments: JsonValue;
607
+ registeredAt?: string | null;
608
+ registeredByEmployeeId?: string | null;
609
+ registeredByFullName?: string | null;
610
+ acknowledgedAt?: string | null;
611
+ acknowledgeError?: string | null;
612
+ returnedAt?: string | null;
613
+ returnedByEmployeeId?: string | null;
614
+ returnedByFullName?: string | null;
615
+ returnReason?: string | null;
616
+ document?: DocumentEntity | null;
617
+ documentId?: string | null;
618
+ createdAt: string;
619
+ updatedAt: string;
620
+ }
621
+
622
+ export interface IntakeSequenceEntity {
623
+ year: number;
624
+ next: number;
625
+ }
626
+
627
+ type JsonValue = string | number | boolean | { [key in string]?: JsonValue } | Array<JsonValue> | null;
@@ -0,0 +1,134 @@
1
+ import {
2
+ type CaseFileActorRelation,
3
+ type CaseFileActorType,
4
+ type CaseFileActuationType,
5
+ type CaseFileEntity,
6
+ type CaseFileStatus,
7
+ type DocumentAccessLevel,
8
+ } from '../base/entities';
9
+ import {
10
+ type CaseFileAddEntryResponseEntity,
11
+ type CaseFileCreateResponseEntity,
12
+ type CaseFileEntryFileResponseEntity,
13
+ type CaseFileExportResponseEntity,
14
+ type CaseFileGetAllResponseEntity,
15
+ type CaseFileGetByIdResponseEntity,
16
+ type CaseFileUpdateResponseEntity,
17
+ } from '../entities';
18
+ import { type RpcPage } from './contract';
19
+ import { type DocumentActor } from './document.contract';
20
+
21
+ /** Patrones NATS de `caseFile`: `<servicio>.<recurso>.<acción>`. */
22
+ export const CaseFilePatterns = {
23
+ getAll: 'gestorDocumental.caseFile.getAll',
24
+ getById: 'gestorDocumental.caseFile.getById',
25
+ create: 'gestorDocumental.caseFile.create',
26
+ update: 'gestorDocumental.caseFile.update',
27
+ addEntry: 'gestorDocumental.caseFile.addEntry',
28
+ voidEntry: 'gestorDocumental.caseFile.voidEntry',
29
+ share: 'gestorDocumental.caseFile.share',
30
+ unshare: 'gestorDocumental.caseFile.unshare',
31
+ close: 'gestorDocumental.caseFile.close',
32
+ getEntryFile: 'gestorDocumental.caseFile.getEntryFile',
33
+ getExport: 'gestorDocumental.caseFile.getExport',
34
+ } as const;
35
+
36
+ /** Persona u organización relacionada con el expediente (MGDEE54). */
37
+ export interface CaseFileActorInput {
38
+ relation: CaseFileActorRelation;
39
+ actorType: CaseFileActorType;
40
+ identifier?: string | null;
41
+ name: string;
42
+ }
43
+
44
+ /** Metadatos del expediente que se ingresan a mano. */
45
+ export interface CaseFileWritePayload {
46
+ title: string;
47
+ subject: string;
48
+ summary?: string | null;
49
+ procedureId: string;
50
+ accessLevel: DocumentAccessLevel;
51
+ hasSensitiveData: boolean;
52
+ actors?: CaseFileActorInput[];
53
+ }
54
+
55
+ /** Actuación que se incorpora al índice: un documento del gestor, un archivo subido u otro expediente. */
56
+ export type CaseFileEntryInput =
57
+ | { kind: 'Document'; actuationType: CaseFileActuationType; documentId: string }
58
+ | {
59
+ kind: 'File';
60
+ actuationType: CaseFileActuationType;
61
+ fileId: string;
62
+ fileName: string;
63
+ title: string;
64
+ documentTypeName?: string | null;
65
+ originDate?: string | null;
66
+ author?: string | null;
67
+ keywords: string[];
68
+ accessLevel: DocumentAccessLevel;
69
+ hasSensitiveData: boolean;
70
+ }
71
+ | { kind: 'CaseFile'; actuationType: CaseFileActuationType; linkedCaseFileId: string };
72
+
73
+ /** Quién hace la operación (de la sesión) y si puede ver todos los expedientes. */
74
+ interface CaseFileActorPayload {
75
+ actor: DocumentActor;
76
+ viewAll?: boolean;
77
+ }
78
+
79
+ /** Ámbito del listado: los expedientes del funcionario (responsable o compartidos con él) o todos. */
80
+ export type CaseFileScope = 'mine' | 'all';
81
+
82
+ export interface CaseFileContract {
83
+ [CaseFilePatterns.getAll]: {
84
+ payload: {
85
+ pagination?: { page?: number; limit?: number };
86
+ filters?: { search?: string; status?: CaseFileStatus; procedureId?: string; scope?: CaseFileScope };
87
+ } & CaseFileActorPayload;
88
+ response: RpcPage<CaseFileGetAllResponseEntity[]>;
89
+ };
90
+ /** Por id o por su identificador (`EXP-2026-00001`), que es el del enlace persistente. Queda en el registro de accesos. */
91
+ [CaseFilePatterns.getById]: {
92
+ payload: { id: string } & CaseFileActorPayload;
93
+ response: CaseFileGetByIdResponseEntity;
94
+ };
95
+ [CaseFilePatterns.create]: {
96
+ payload: CaseFileWritePayload & { actor: DocumentActor };
97
+ response: CaseFileCreateResponseEntity;
98
+ };
99
+ [CaseFilePatterns.update]: {
100
+ payload: CaseFileWritePayload & Pick<CaseFileEntity, 'id'> & { actor: DocumentActor };
101
+ response: CaseFileUpdateResponseEntity;
102
+ };
103
+ [CaseFilePatterns.addEntry]: {
104
+ payload: Pick<CaseFileEntity, 'id'> & { entry: CaseFileEntryInput } & CaseFileActorPayload;
105
+ response: CaseFileAddEntryResponseEntity;
106
+ };
107
+ /** Deja una actuación sin efecto, con su motivo. No se elimina del índice. */
108
+ [CaseFilePatterns.voidEntry]: {
109
+ payload: Pick<CaseFileEntity, 'id'> & { entryId: string; reason: string; actor: DocumentActor };
110
+ response: CaseFileUpdateResponseEntity;
111
+ };
112
+ [CaseFilePatterns.share]: {
113
+ payload: Pick<CaseFileEntity, 'id'> & { employeeIds: string[]; actor: DocumentActor };
114
+ response: CaseFileUpdateResponseEntity;
115
+ };
116
+ [CaseFilePatterns.unshare]: {
117
+ payload: Pick<CaseFileEntity, 'id'> & { participantId: string; actor: DocumentActor };
118
+ response: CaseFileUpdateResponseEntity;
119
+ };
120
+ [CaseFilePatterns.close]: {
121
+ payload: Pick<CaseFileEntity, 'id'> & { note?: string | null; actor: DocumentActor };
122
+ response: CaseFileUpdateResponseEntity;
123
+ };
124
+ /** Archivo de una actuación del índice. Queda en el registro de accesos. */
125
+ [CaseFilePatterns.getEntryFile]: {
126
+ payload: Pick<CaseFileEntity, 'id'> & { entryId: string } & CaseFileActorPayload;
127
+ response: CaseFileEntryFileResponseEntity;
128
+ };
129
+ /** Metadatos y archivos para exportar el expediente completo. Queda en la trazabilidad y en el registro de accesos. */
130
+ [CaseFilePatterns.getExport]: {
131
+ payload: Pick<CaseFileEntity, 'id'> & CaseFileActorPayload;
132
+ response: CaseFileExportResponseEntity;
133
+ };
134
+ }
@@ -102,10 +102,18 @@ export interface DocumentWritePayload extends Pick<DocumentEntity, 'subject' | '
102
102
  responseDueAt?: string | null;
103
103
  // Documento al que este responde.
104
104
  replyToDocumentId?: string | null;
105
+ // Instituciones (y usuarios) de DocDigital a quienes va: al terminar la firma pasa a Oficina de Partes.
106
+ externalRecipients?: DocumentExternalRecipientInput[];
105
107
  action?: 'Submit';
106
108
  actor: DocumentActor;
107
109
  }
108
110
 
111
+ /** Destinatario externo: una institución de DocDigital y, si se indica, uno de sus usuarios. */
112
+ export interface DocumentExternalRecipientInput {
113
+ entityId: number;
114
+ userId?: number | null;
115
+ }
116
+
109
117
  /**
110
118
  * Qué se envía y qué se responde en cada patrón. Generado desde los handlers y los DTO del microservicio.
111
119
  */
@@ -1,15 +1,28 @@
1
+ import { CaseFilePatterns, type CaseFileContract } from './caseFile.contract';
1
2
  import { DocumentPatterns, type DocumentContract } from './document.contract';
2
3
  import { DocumentTypePatterns, type DocumentTypeContract } from './documentType.contract';
4
+ import { PartsOfficePatterns, type PartsOfficeContract } from './partsOffice.contract';
5
+ import { ProcedurePatterns, type ProcedureContract } from './procedure.contract';
3
6
 
4
7
  export * from './contract';
5
8
  export * from './document.contract';
6
9
  export * from './documentType.contract';
10
+ export * from './procedure.contract';
11
+ export * from './caseFile.contract';
12
+ export * from './partsOffice.contract';
7
13
 
8
14
  /** Patrones NATS de gestor-documental-ms, por recurso: `gestorDocumental.<recurso>.<acción>`. */
9
15
  export const GestorDocumentalPatterns = {
10
16
  documentType: DocumentTypePatterns,
11
17
  document: DocumentPatterns,
18
+ procedure: ProcedurePatterns,
19
+ caseFile: CaseFilePatterns,
20
+ partsOffice: PartsOfficePatterns,
12
21
  } as const;
13
22
 
14
23
  /** Contrato completo de gestor-documental-ms: la unión de los contratos de sus recursos. */
15
- export type GestorDocumentalContract = DocumentTypeContract & DocumentContract;
24
+ export type GestorDocumentalContract = DocumentTypeContract &
25
+ DocumentContract &
26
+ ProcedureContract &
27
+ CaseFileContract &
28
+ PartsOfficeContract;