@muni-sanfer/types-gestor-documental 0.0.1-beta.11 → 0.0.1-beta.13

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.
@@ -121,11 +121,12 @@ export declare const CaseFileActuationType: {
121
121
  Subfolder: "Subfolder";
122
122
  PowerRegistration: "PowerRegistration";
123
123
  };
124
- export type CaseFileEntryKind = 'Document' | 'File' | 'CaseFile';
124
+ export type CaseFileEntryKind = 'Document' | 'File' | 'CaseFile' | 'Physical';
125
125
  export declare const CaseFileEntryKind: {
126
126
  Document: "Document";
127
127
  File: "File";
128
128
  CaseFile: "CaseFile";
129
+ Physical: "Physical";
129
130
  };
130
131
  export type CaseFileActorRelation = 'Responsible' | 'Interested' | 'Author' | 'Referred' | 'Recipient' | 'MinisterOfFaith';
131
132
  export declare const CaseFileActorRelation: {
@@ -143,12 +144,13 @@ export declare const CaseFileActorType: {
143
144
  PrivateInstitution: "PrivateInstitution";
144
145
  Official: "Official";
145
146
  };
146
- export type CaseFileTrackingAction = 'Created' | 'Updated' | 'EntryAdded' | 'EntryVoided' | 'ParticipantAdded' | 'ParticipantRemoved' | 'Closed' | 'Exported';
147
+ export type CaseFileTrackingAction = 'Created' | 'Updated' | 'EntryAdded' | 'EntryVoided' | 'EntryMoved' | 'ParticipantAdded' | 'ParticipantRemoved' | 'Closed' | 'Exported';
147
148
  export declare const CaseFileTrackingAction: {
148
149
  Created: "Created";
149
150
  Updated: "Updated";
150
151
  EntryAdded: "EntryAdded";
151
152
  EntryVoided: "EntryVoided";
153
+ EntryMoved: "EntryMoved";
152
154
  ParticipantAdded: "ParticipantAdded";
153
155
  ParticipantRemoved: "ParticipantRemoved";
154
156
  Closed: "Closed";
@@ -285,6 +287,7 @@ export interface DocumentTrackingEntity {
285
287
  id: string;
286
288
  action: DocumentTrackingAction;
287
289
  observation?: string | null;
290
+ sha256?: string | null;
288
291
  employeeId?: string | null;
289
292
  employeeFullName?: string | null;
290
293
  document?: DocumentEntity;
@@ -345,6 +348,7 @@ export interface DocumentTypeFlowStepEntity {
345
348
  directorateCodeReference?: number | null;
346
349
  name: string;
347
350
  position?: string | null;
351
+ withPrevious: boolean;
348
352
  documentType?: DocumentTypeEntity;
349
353
  documentTypeId: string;
350
354
  createdAt: string;
@@ -425,6 +429,7 @@ export interface CaseFileEntryEntity {
425
429
  kind: CaseFileEntryKind;
426
430
  actuationType: CaseFileActuationType;
427
431
  title: string;
432
+ folder?: string | null;
428
433
  document?: DocumentEntity | null;
429
434
  documentId?: string | null;
430
435
  fileId?: string | null;
@@ -435,6 +440,9 @@ export interface CaseFileEntryEntity {
435
440
  keywords: string[];
436
441
  accessLevel?: DocumentAccessLevel | null;
437
442
  hasSensitiveData?: boolean | null;
443
+ physicalLocation?: string | null;
444
+ physicalReason?: string | null;
445
+ pageCount?: number | null;
438
446
  linkedCaseFile?: CaseFileEntity | null;
439
447
  linkedCaseFileId?: string | null;
440
448
  sha256?: string | null;
@@ -112,6 +112,7 @@ exports.CaseFileEntryKind = {
112
112
  Document: 'Document',
113
113
  File: 'File',
114
114
  CaseFile: 'CaseFile',
115
+ Physical: 'Physical',
115
116
  };
116
117
  exports.CaseFileActorRelation = {
117
118
  Responsible: 'Responsible',
@@ -132,6 +133,7 @@ exports.CaseFileTrackingAction = {
132
133
  Updated: 'Updated',
133
134
  EntryAdded: 'EntryAdded',
134
135
  EntryVoided: 'EntryVoided',
136
+ EntryMoved: 'EntryMoved',
135
137
  ParticipantAdded: 'ParticipantAdded',
136
138
  ParticipantRemoved: 'ParticipantRemoved',
137
139
  Closed: 'Closed',
@@ -11,6 +11,7 @@ export declare const CaseFilePatterns: {
11
11
  readonly addEntry: "gestorDocumental.caseFile.addEntry";
12
12
  readonly addBatch: "gestorDocumental.caseFile.addBatch";
13
13
  readonly voidEntry: "gestorDocumental.caseFile.voidEntry";
14
+ readonly moveEntry: "gestorDocumental.caseFile.moveEntry";
14
15
  readonly share: "gestorDocumental.caseFile.share";
15
16
  readonly unshare: "gestorDocumental.caseFile.unshare";
16
17
  readonly close: "gestorDocumental.caseFile.close";
@@ -55,6 +56,21 @@ export type CaseFileEntryInput = {
55
56
  kind: 'CaseFile';
56
57
  actuationType: CaseFileActuationType;
57
58
  linkedCaseFileId: string;
59
+ } | {
60
+ kind: 'Physical';
61
+ actuationType: CaseFileActuationType;
62
+ title: string;
63
+ documentTypeName?: string | null;
64
+ originDate?: string | null;
65
+ author?: string | null;
66
+ /** Dónde está el papel: oficina, archivador, caja (MGDDE5_5). */
67
+ physicalLocation: string;
68
+ /** Por qué no se pudo digitalizar. */
69
+ physicalReason: string;
70
+ pageCount?: number | null;
71
+ keywords: string[];
72
+ accessLevel: DocumentAccessLevel;
73
+ hasSensitiveData: boolean;
58
74
  };
59
75
  /** Quién hace la operación (de la sesión) y si puede ver todos los expedientes. */
60
76
  interface CaseFileActorPayload {
@@ -110,10 +126,20 @@ export interface CaseFileContract {
110
126
  [CaseFilePatterns.addEntry]: {
111
127
  payload: Pick<CaseFileEntity, 'id'> & {
112
128
  entry: CaseFileEntryInput;
129
+ folder?: string | null;
113
130
  } & CaseFileActorPayload;
114
131
  response: CaseFileAddEntryResponseEntity;
115
132
  };
116
133
  /** Deja una actuación sin efecto, con su motivo. No se elimina del índice. */
134
+ /** Pasa una actuación a otra subcarpeta del índice (`null`: a la raíz). El orden de incorporación no cambia. */
135
+ [CaseFilePatterns.moveEntry]: {
136
+ payload: {
137
+ id: string;
138
+ entryId: string;
139
+ folder: string | null;
140
+ } & CaseFileActorPayload;
141
+ response: CaseFileUpdateResponseEntity;
142
+ };
117
143
  [CaseFilePatterns.voidEntry]: {
118
144
  payload: Pick<CaseFileEntity, 'id'> & {
119
145
  entryId: string;
@@ -10,6 +10,7 @@ exports.CaseFilePatterns = {
10
10
  addEntry: 'gestorDocumental.caseFile.addEntry',
11
11
  addBatch: 'gestorDocumental.caseFile.addBatch',
12
12
  voidEntry: 'gestorDocumental.caseFile.voidEntry',
13
+ moveEntry: 'gestorDocumental.caseFile.moveEntry',
13
14
  share: 'gestorDocumental.caseFile.share',
14
15
  unshare: 'gestorDocumental.caseFile.unshare',
15
16
  close: 'gestorDocumental.caseFile.close',
@@ -14,7 +14,7 @@ export declare const DocumentTypePatterns: {
14
14
  * momento de redactar (su jefatura o, con subrogancia activa, el subrogante). El nombre de la dirección lo resuelve
15
15
  * el gateway; el navegador solo indica cuál es.
16
16
  */
17
- export type DocumentFlowStepInput = {
17
+ export type DocumentFlowStepInput = ({
18
18
  role: DocumentParticipantRole;
19
19
  type: 'Employee';
20
20
  employeeId: string;
@@ -23,6 +23,8 @@ export type DocumentFlowStepInput = {
23
23
  type: 'DirectorateHead';
24
24
  directorateCodeReference: number;
25
25
  name: string;
26
+ }) & {
27
+ withPrevious?: boolean;
26
28
  };
27
29
  /** Datos de un tipo documental al crearlo o editarlo. */
28
30
  export interface DocumentTypeWritePayload {
@@ -51,6 +53,7 @@ export interface DocumentTypeContract {
51
53
  search?: string;
52
54
  enabled?: boolean;
53
55
  category?: DocumentCategory;
56
+ usableByDirectorates?: number[];
54
57
  };
55
58
  };
56
59
  response: RpcPage<DocumentTypeGetAllResponseEntity[]>;
@@ -60,6 +60,7 @@ export declare const GestorDocumentalPatterns: {
60
60
  readonly addEntry: "gestorDocumental.caseFile.addEntry";
61
61
  readonly addBatch: "gestorDocumental.caseFile.addBatch";
62
62
  readonly voidEntry: "gestorDocumental.caseFile.voidEntry";
63
+ readonly moveEntry: "gestorDocumental.caseFile.moveEntry";
63
64
  readonly share: "gestorDocumental.caseFile.share";
64
65
  readonly unshare: "gestorDocumental.caseFile.unshare";
65
66
  readonly close: "gestorDocumental.caseFile.close";
@@ -33,6 +33,12 @@ export interface CaseFileEntryDocumentEntity {
33
33
  export interface CaseFileEntryResponseEntity {
34
34
  id: CaseFileEntryEntity['id'];
35
35
  sequence: CaseFileEntryEntity['sequence'];
36
+ /** Subcarpeta del índice (sin valor: en la raíz). */
37
+ folder: CaseFileEntryEntity['folder'];
38
+ /** Documento en papel: dónde está, por qué no se digitalizó y cuántas páginas tiene. */
39
+ physicalLocation: CaseFileEntryEntity['physicalLocation'];
40
+ physicalReason: CaseFileEntryEntity['physicalReason'];
41
+ pageCount: CaseFileEntryEntity['pageCount'];
36
42
  kind: CaseFileEntryEntity['kind'];
37
43
  actuationType: CaseFileEntryEntity['actuationType'];
38
44
  title: CaseFileEntryEntity['title'];
@@ -109,6 +115,8 @@ export interface CaseFileGetByIdResponseEntity extends CaseFileGetAllResponseEnt
109
115
  uri: string | null;
110
116
  closedByFullName: CaseFileEntity['closedByFullName'];
111
117
  closingNote: CaseFileEntity['closingNote'];
118
+ /** Expediente híbrido: tiene documentos en papel que no se pudieron digitalizar. */
119
+ isHybrid: boolean;
112
120
  index: CaseFileEntryResponseEntity[];
113
121
  sharedWith: CaseFileParticipantResponseEntity[];
114
122
  actors: CaseFileActorResponseEntity[];
@@ -186,6 +186,7 @@ export interface DocumentGetByIdResponseEntity {
186
186
  id: DocumentTrackingEntity['id'];
187
187
  action: DocumentTrackingEntity['action'];
188
188
  observation: DocumentTrackingEntity['observation'];
189
+ sha256: DocumentTrackingEntity['sha256'];
189
190
  employeeId: DocumentTrackingEntity['employeeId'];
190
191
  employeeFullName: DocumentTrackingEntity['employeeFullName'];
191
192
  createdAt: DocumentTrackingEntity['createdAt'];
@@ -9,6 +9,7 @@ export interface DocumentTypeFlowStepResponseEntity {
9
9
  directorateCodeReference: DocumentTypeFlowStepEntity['directorateCodeReference'];
10
10
  name: DocumentTypeFlowStepEntity['name'];
11
11
  position: DocumentTypeFlowStepEntity['position'];
12
+ withPrevious: DocumentTypeFlowStepEntity['withPrevious'];
12
13
  }
13
14
  export interface DocumentTypeGetAllResponseEntity {
14
15
  id: DocumentTypeEntity['id'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@muni-sanfer/types-gestor-documental",
3
- "version": "0.0.1-beta.11",
3
+ "version": "0.0.1-beta.13",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -183,12 +183,13 @@ export const CaseFileActuationType = {
183
183
  PowerRegistration: 'PowerRegistration',
184
184
  } satisfies Record<string, CaseFileActuationType>;
185
185
 
186
- export type CaseFileEntryKind = 'Document' | 'File' | 'CaseFile';
186
+ export type CaseFileEntryKind = 'Document' | 'File' | 'CaseFile' | 'Physical';
187
187
 
188
188
  export const CaseFileEntryKind = {
189
189
  Document: 'Document',
190
190
  File: 'File',
191
191
  CaseFile: 'CaseFile',
192
+ Physical: 'Physical',
192
193
  } satisfies Record<string, CaseFileEntryKind>;
193
194
 
194
195
  export type CaseFileActorRelation =
@@ -217,6 +218,7 @@ export type CaseFileTrackingAction =
217
218
  | 'Updated'
218
219
  | 'EntryAdded'
219
220
  | 'EntryVoided'
221
+ | 'EntryMoved'
220
222
  | 'ParticipantAdded'
221
223
  | 'ParticipantRemoved'
222
224
  | 'Closed'
@@ -227,6 +229,7 @@ export const CaseFileTrackingAction = {
227
229
  Updated: 'Updated',
228
230
  EntryAdded: 'EntryAdded',
229
231
  EntryVoided: 'EntryVoided',
232
+ EntryMoved: 'EntryMoved',
230
233
  ParticipantAdded: 'ParticipantAdded',
231
234
  ParticipantRemoved: 'ParticipantRemoved',
232
235
  Closed: 'Closed',
@@ -373,6 +376,7 @@ export interface DocumentTrackingEntity {
373
376
  id: string;
374
377
  action: DocumentTrackingAction;
375
378
  observation?: string | null;
379
+ sha256?: string | null;
376
380
  employeeId?: string | null;
377
381
  employeeFullName?: string | null;
378
382
  document?: DocumentEntity;
@@ -437,6 +441,7 @@ export interface DocumentTypeFlowStepEntity {
437
441
  directorateCodeReference?: number | null;
438
442
  name: string;
439
443
  position?: string | null;
444
+ withPrevious: boolean;
440
445
  documentType?: DocumentTypeEntity;
441
446
  documentTypeId: string;
442
447
  createdAt: string;
@@ -523,6 +528,7 @@ export interface CaseFileEntryEntity {
523
528
  kind: CaseFileEntryKind;
524
529
  actuationType: CaseFileActuationType;
525
530
  title: string;
531
+ folder?: string | null;
526
532
  document?: DocumentEntity | null;
527
533
  documentId?: string | null;
528
534
  fileId?: string | null;
@@ -533,6 +539,9 @@ export interface CaseFileEntryEntity {
533
539
  keywords: string[];
534
540
  accessLevel?: DocumentAccessLevel | null;
535
541
  hasSensitiveData?: boolean | null;
542
+ physicalLocation?: string | null;
543
+ physicalReason?: string | null;
544
+ pageCount?: number | null;
536
545
  linkedCaseFile?: CaseFileEntity | null;
537
546
  linkedCaseFileId?: string | null;
538
547
  sha256?: string | null;
@@ -28,6 +28,7 @@ export const CaseFilePatterns = {
28
28
  addEntry: 'gestorDocumental.caseFile.addEntry',
29
29
  addBatch: 'gestorDocumental.caseFile.addBatch',
30
30
  voidEntry: 'gestorDocumental.caseFile.voidEntry',
31
+ moveEntry: 'gestorDocumental.caseFile.moveEntry',
31
32
  share: 'gestorDocumental.caseFile.share',
32
33
  unshare: 'gestorDocumental.caseFile.unshare',
33
34
  close: 'gestorDocumental.caseFile.close',
@@ -70,7 +71,23 @@ export type CaseFileEntryInput =
70
71
  accessLevel: DocumentAccessLevel;
71
72
  hasSensitiveData: boolean;
72
73
  }
73
- | { kind: 'CaseFile'; actuationType: CaseFileActuationType; linkedCaseFileId: string };
74
+ | { kind: 'CaseFile'; actuationType: CaseFileActuationType; linkedCaseFileId: string }
75
+ | {
76
+ kind: 'Physical';
77
+ actuationType: CaseFileActuationType;
78
+ title: string;
79
+ documentTypeName?: string | null;
80
+ originDate?: string | null;
81
+ author?: string | null;
82
+ /** Dónde está el papel: oficina, archivador, caja (MGDDE5_5). */
83
+ physicalLocation: string;
84
+ /** Por qué no se pudo digitalizar. */
85
+ physicalReason: string;
86
+ pageCount?: number | null;
87
+ keywords: string[];
88
+ accessLevel: DocumentAccessLevel;
89
+ hasSensitiveData: boolean;
90
+ };
74
91
 
75
92
  /** Quién hace la operación (de la sesión) y si puede ver todos los expedientes. */
76
93
  interface CaseFileActorPayload {
@@ -108,10 +125,16 @@ export interface CaseFileContract {
108
125
  response: CaseFileAddBatchResponseEntity;
109
126
  };
110
127
  [CaseFilePatterns.addEntry]: {
111
- payload: Pick<CaseFileEntity, 'id'> & { entry: CaseFileEntryInput } & CaseFileActorPayload;
128
+ // `folder`: subcarpeta del índice en que queda (sin valor: en la raíz)
129
+ payload: Pick<CaseFileEntity, 'id'> & { entry: CaseFileEntryInput; folder?: string | null } & CaseFileActorPayload;
112
130
  response: CaseFileAddEntryResponseEntity;
113
131
  };
114
132
  /** Deja una actuación sin efecto, con su motivo. No se elimina del índice. */
133
+ /** Pasa una actuación a otra subcarpeta del índice (`null`: a la raíz). El orden de incorporación no cambia. */
134
+ [CaseFilePatterns.moveEntry]: {
135
+ payload: { id: string; entryId: string; folder: string | null } & CaseFileActorPayload;
136
+ response: CaseFileUpdateResponseEntity;
137
+ };
115
138
  [CaseFilePatterns.voidEntry]: {
116
139
  payload: Pick<CaseFileEntity, 'id'> & { entryId: string; reason: string; actor: DocumentActor };
117
140
  response: CaseFileUpdateResponseEntity;
@@ -21,9 +21,13 @@ export const DocumentTypePatterns = {
21
21
  * momento de redactar (su jefatura o, con subrogancia activa, el subrogante). El nombre de la dirección lo resuelve
22
22
  * el gateway; el navegador solo indica cuál es.
23
23
  */
24
- export type DocumentFlowStepInput =
24
+ export type DocumentFlowStepInput = (
25
25
  | { role: DocumentParticipantRole; type: 'Employee'; employeeId: string }
26
- | { role: DocumentParticipantRole; type: 'DirectorateHead'; directorateCodeReference: number; name: string };
26
+ | { role: DocumentParticipantRole; type: 'DirectorateHead'; directorateCodeReference: number; name: string }
27
+ ) & {
28
+ // Visa a la vez con el paso anterior (visación en paralelo). Solo en visaciones.
29
+ withPrevious?: boolean;
30
+ };
27
31
 
28
32
  /** Datos de un tipo documental al crearlo o editarlo. */
29
33
  export interface DocumentTypeWritePayload {
@@ -50,7 +54,13 @@ export interface DocumentTypeContract {
50
54
  // sin `page` y `limit` responde todos los tipos en una sola página
51
55
  payload: {
52
56
  pagination?: { page?: number; limit?: number };
53
- filters?: { search?: string; enabled?: boolean; category?: DocumentCategory };
57
+ filters?: {
58
+ search?: string;
59
+ enabled?: boolean;
60
+ category?: DocumentCategory;
61
+ // Solo los que puede usar quien redacta: los de toda la municipalidad y los de estas direcciones.
62
+ usableByDirectorates?: number[];
63
+ };
54
64
  };
55
65
  response: RpcPage<DocumentTypeGetAllResponseEntity[]>;
56
66
  };
@@ -47,6 +47,12 @@ export interface CaseFileEntryDocumentEntity {
47
47
  export interface CaseFileEntryResponseEntity {
48
48
  id: CaseFileEntryEntity['id'];
49
49
  sequence: CaseFileEntryEntity['sequence'];
50
+ /** Subcarpeta del índice (sin valor: en la raíz). */
51
+ folder: CaseFileEntryEntity['folder'];
52
+ /** Documento en papel: dónde está, por qué no se digitalizó y cuántas páginas tiene. */
53
+ physicalLocation: CaseFileEntryEntity['physicalLocation'];
54
+ physicalReason: CaseFileEntryEntity['physicalReason'];
55
+ pageCount: CaseFileEntryEntity['pageCount'];
50
56
  kind: CaseFileEntryEntity['kind'];
51
57
  actuationType: CaseFileEntryEntity['actuationType'];
52
58
  title: CaseFileEntryEntity['title'];
@@ -129,6 +135,8 @@ export interface CaseFileGetByIdResponseEntity extends CaseFileGetAllResponseEnt
129
135
  uri: string | null;
130
136
  closedByFullName: CaseFileEntity['closedByFullName'];
131
137
  closingNote: CaseFileEntity['closingNote'];
138
+ /** Expediente híbrido: tiene documentos en papel que no se pudieron digitalizar. */
139
+ isHybrid: boolean;
132
140
  index: CaseFileEntryResponseEntity[];
133
141
  sharedWith: CaseFileParticipantResponseEntity[];
134
142
  actors: CaseFileActorResponseEntity[];
@@ -210,6 +210,8 @@ export interface DocumentGetByIdResponseEntity {
210
210
  id: DocumentTrackingEntity['id'];
211
211
  action: DocumentTrackingEntity['action'];
212
212
  observation: DocumentTrackingEntity['observation'];
213
+ // Huella SHA-256 del PDF en ese hecho (firma, despacho o ingreso por DocDigital).
214
+ sha256: DocumentTrackingEntity['sha256'];
213
215
  employeeId: DocumentTrackingEntity['employeeId'];
214
216
  employeeFullName: DocumentTrackingEntity['employeeFullName'];
215
217
  createdAt: DocumentTrackingEntity['createdAt'];
@@ -11,6 +11,8 @@ export interface DocumentTypeFlowStepResponseEntity {
11
11
  // Nombre del funcionario o de la dirección, como estaba al definir el flujo.
12
12
  name: DocumentTypeFlowStepEntity['name'];
13
13
  position: DocumentTypeFlowStepEntity['position'];
14
+ // Visa a la vez con el paso anterior (visación en paralelo).
15
+ withPrevious: DocumentTypeFlowStepEntity['withPrevious'];
14
16
  }
15
17
 
16
18
  export interface DocumentTypeGetAllResponseEntity {