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

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 (200) hide show
  1. package/dist/base/entities.d.ts +978 -1
  2. package/dist/base/entities.js +263 -1
  3. package/dist/contracts/accessRequest.contract.d.ts +109 -0
  4. package/dist/contracts/accessRequest.contract.js +12 -0
  5. package/dist/contracts/archivalSeries.contract.d.ts +56 -0
  6. package/dist/contracts/archivalSeries.contract.js +11 -0
  7. package/dist/contracts/audit.contract.d.ts +32 -0
  8. package/dist/contracts/audit.contract.js +8 -0
  9. package/dist/contracts/caseFile.contract.d.ts +262 -0
  10. package/dist/contracts/caseFile.contract.js +26 -0
  11. package/dist/contracts/dataProtection.contract.d.ts +251 -0
  12. package/dist/contracts/dataProtection.contract.js +23 -0
  13. package/dist/contracts/desk.contract.d.ts +86 -0
  14. package/dist/contracts/desk.contract.js +13 -0
  15. package/dist/contracts/document.contract.d.ts +130 -2
  16. package/dist/contracts/document.contract.js +8 -0
  17. package/dist/contracts/documentType.contract.d.ts +11 -1
  18. package/dist/contracts/holiday.contract.d.ts +30 -0
  19. package/dist/contracts/holiday.contract.js +9 -0
  20. package/dist/contracts/index.d.ts +234 -1
  21. package/dist/contracts/index.js +60 -0
  22. package/dist/contracts/indicators.contract.d.ts +103 -0
  23. package/dist/contracts/indicators.contract.js +15 -0
  24. package/dist/contracts/issuingEntity.contract.d.ts +52 -0
  25. package/dist/contracts/issuingEntity.contract.js +11 -0
  26. package/dist/contracts/partsOffice.contract.d.ts +263 -0
  27. package/dist/contracts/partsOffice.contract.js +27 -0
  28. package/dist/contracts/procedure.contract.d.ts +50 -0
  29. package/dist/contracts/procedure.contract.js +11 -0
  30. package/dist/contracts/registerBook.contract.d.ts +27 -0
  31. package/dist/contracts/registerBook.contract.js +8 -0
  32. package/dist/contracts/repositoryExport.contract.d.ts +57 -0
  33. package/dist/contracts/repositoryExport.contract.js +13 -0
  34. package/dist/contracts/retention.contract.d.ts +58 -0
  35. package/dist/contracts/retention.contract.js +11 -0
  36. package/dist/contracts/scan.contract.d.ts +63 -0
  37. package/dist/contracts/scan.contract.js +12 -0
  38. package/dist/contracts/signatureBatch.contract.d.ts +109 -0
  39. package/dist/contracts/signatureBatch.contract.js +12 -0
  40. package/dist/contracts/signatureCheck.contract.d.ts +14 -0
  41. package/dist/contracts/signatureCheck.contract.js +7 -0
  42. package/dist/contracts/textSnippet.contract.d.ts +51 -0
  43. package/dist/contracts/textSnippet.contract.js +11 -0
  44. package/dist/contracts/transparency.contract.d.ts +96 -0
  45. package/dist/contracts/transparency.contract.js +12 -0
  46. package/dist/contracts/workFolder.contract.d.ts +114 -0
  47. package/dist/contracts/workFolder.contract.js +16 -0
  48. package/dist/entities/accessRequest/accessRequest.entity.d.ts +73 -0
  49. package/dist/entities/accessRequest/accessRequest.entity.js +2 -0
  50. package/dist/entities/accessRequest/index.d.ts +1 -0
  51. package/dist/entities/accessRequest/index.js +17 -0
  52. package/dist/entities/archivalSeries/archivalSeries.entity.d.ts +32 -0
  53. package/dist/entities/archivalSeries/archivalSeries.entity.js +2 -0
  54. package/dist/entities/archivalSeries/index.d.ts +1 -0
  55. package/dist/entities/archivalSeries/index.js +17 -0
  56. package/dist/entities/audit/audit.entity.d.ts +27 -0
  57. package/dist/entities/audit/audit.entity.js +2 -0
  58. package/dist/entities/audit/index.d.ts +1 -0
  59. package/dist/entities/audit/index.js +17 -0
  60. package/dist/entities/caseFile/caseFile.entity.d.ts +302 -0
  61. package/dist/entities/caseFile/caseFile.entity.js +2 -0
  62. package/dist/entities/caseFile/index.d.ts +1 -0
  63. package/dist/entities/caseFile/index.js +17 -0
  64. package/dist/entities/dataProtection/dataProtection.entity.d.ts +174 -0
  65. package/dist/entities/dataProtection/dataProtection.entity.js +2 -0
  66. package/dist/entities/dataProtection/index.d.ts +1 -0
  67. package/dist/entities/dataProtection/index.js +17 -0
  68. package/dist/entities/desk/desk.entity.d.ts +21 -0
  69. package/dist/entities/desk/desk.entity.js +2 -0
  70. package/dist/entities/desk/index.d.ts +1 -0
  71. package/dist/entities/desk/index.js +17 -0
  72. package/dist/entities/document/document.entity.d.ts +256 -1
  73. package/dist/entities/documentType/documentType.entity.d.ts +23 -0
  74. package/dist/entities/holiday/holiday.entity.d.ts +10 -0
  75. package/dist/entities/holiday/holiday.entity.js +2 -0
  76. package/dist/entities/holiday/index.d.ts +1 -0
  77. package/dist/entities/holiday/index.js +17 -0
  78. package/dist/entities/index.d.ts +20 -0
  79. package/dist/entities/index.js +20 -0
  80. package/dist/entities/indicators/index.d.ts +1 -0
  81. package/dist/entities/indicators/index.js +17 -0
  82. package/dist/entities/indicators/indicators.entity.d.ts +152 -0
  83. package/dist/entities/indicators/indicators.entity.js +2 -0
  84. package/dist/entities/issuingEntity/index.d.ts +1 -0
  85. package/dist/entities/issuingEntity/index.js +17 -0
  86. package/dist/entities/issuingEntity/issuingEntity.entity.d.ts +20 -0
  87. package/dist/entities/issuingEntity/issuingEntity.entity.js +2 -0
  88. package/dist/entities/partsOffice/index.d.ts +1 -0
  89. package/dist/entities/partsOffice/index.js +17 -0
  90. package/dist/entities/partsOffice/partsOffice.entity.d.ts +137 -0
  91. package/dist/entities/partsOffice/partsOffice.entity.js +2 -0
  92. package/dist/entities/procedure/index.d.ts +1 -0
  93. package/dist/entities/procedure/index.js +17 -0
  94. package/dist/entities/procedure/procedure.entity.d.ts +20 -0
  95. package/dist/entities/procedure/procedure.entity.js +2 -0
  96. package/dist/entities/registerBook/index.d.ts +1 -0
  97. package/dist/entities/registerBook/index.js +17 -0
  98. package/dist/entities/registerBook/registerBook.entity.d.ts +48 -0
  99. package/dist/entities/registerBook/registerBook.entity.js +2 -0
  100. package/dist/entities/repositoryExport/index.d.ts +1 -0
  101. package/dist/entities/repositoryExport/index.js +17 -0
  102. package/dist/entities/repositoryExport/repositoryExport.entity.d.ts +124 -0
  103. package/dist/entities/repositoryExport/repositoryExport.entity.js +2 -0
  104. package/dist/entities/retention/index.d.ts +1 -0
  105. package/dist/entities/retention/index.js +17 -0
  106. package/dist/entities/retention/retention.entity.d.ts +49 -0
  107. package/dist/entities/retention/retention.entity.js +2 -0
  108. package/dist/entities/scan/index.d.ts +1 -0
  109. package/dist/entities/scan/index.js +17 -0
  110. package/dist/entities/scan/scan.entity.d.ts +29 -0
  111. package/dist/entities/scan/scan.entity.js +2 -0
  112. package/dist/entities/signatureBatch/index.d.ts +1 -0
  113. package/dist/entities/signatureBatch/index.js +17 -0
  114. package/dist/entities/signatureBatch/signatureBatch.entity.d.ts +107 -0
  115. package/dist/entities/signatureBatch/signatureBatch.entity.js +2 -0
  116. package/dist/entities/signatureCheck/index.d.ts +1 -0
  117. package/dist/entities/signatureCheck/index.js +17 -0
  118. package/dist/entities/signatureCheck/signatureCheck.entity.d.ts +49 -0
  119. package/dist/entities/signatureCheck/signatureCheck.entity.js +2 -0
  120. package/dist/entities/textSnippet/index.d.ts +1 -0
  121. package/dist/entities/textSnippet/index.js +17 -0
  122. package/dist/entities/textSnippet/textSnippet.entity.d.ts +20 -0
  123. package/dist/entities/textSnippet/textSnippet.entity.js +2 -0
  124. package/dist/entities/transparency/index.d.ts +1 -0
  125. package/dist/entities/transparency/index.js +17 -0
  126. package/dist/entities/transparency/transparency.entity.d.ts +77 -0
  127. package/dist/entities/transparency/transparency.entity.js +2 -0
  128. package/dist/entities/workFolder/index.d.ts +1 -0
  129. package/dist/entities/workFolder/index.js +17 -0
  130. package/dist/entities/workFolder/workFolder.entity.d.ts +83 -0
  131. package/dist/entities/workFolder/workFolder.entity.js +2 -0
  132. package/package.json +1 -1
  133. package/src/base/entities.ts +1163 -1
  134. package/src/contracts/accessRequest.contract.ts +81 -0
  135. package/src/contracts/archivalSeries.contract.ts +59 -0
  136. package/src/contracts/audit.contract.ts +30 -0
  137. package/src/contracts/caseFile.contract.ts +228 -0
  138. package/src/contracts/dataProtection.contract.ts +195 -0
  139. package/src/contracts/desk.contract.ts +68 -0
  140. package/src/contracts/document.contract.ts +133 -2
  141. package/src/contracts/documentType.contract.ts +25 -3
  142. package/src/contracts/holiday.contract.ts +16 -0
  143. package/src/contracts/index.ts +82 -1
  144. package/src/contracts/indicators.contract.ts +80 -0
  145. package/src/contracts/issuingEntity.contract.ts +55 -0
  146. package/src/contracts/partsOffice.contract.ts +199 -0
  147. package/src/contracts/procedure.contract.ts +53 -0
  148. package/src/contracts/registerBook.contract.ts +24 -0
  149. package/src/contracts/repositoryExport.contract.ts +54 -0
  150. package/src/contracts/retention.contract.ts +44 -0
  151. package/src/contracts/scan.contract.ts +52 -0
  152. package/src/contracts/signatureBatch.contract.ts +96 -0
  153. package/src/contracts/signatureCheck.contract.ts +11 -0
  154. package/src/contracts/textSnippet.contract.ts +53 -0
  155. package/src/contracts/transparency.contract.ts +55 -0
  156. package/src/contracts/workFolder.contract.ts +75 -0
  157. package/src/entities/accessRequest/accessRequest.entity.ts +78 -0
  158. package/src/entities/accessRequest/index.ts +1 -0
  159. package/src/entities/archivalSeries/archivalSeries.entity.ts +37 -0
  160. package/src/entities/archivalSeries/index.ts +1 -0
  161. package/src/entities/audit/audit.entity.ts +30 -0
  162. package/src/entities/audit/index.ts +1 -0
  163. package/src/entities/caseFile/caseFile.entity.ts +326 -0
  164. package/src/entities/caseFile/index.ts +1 -0
  165. package/src/entities/dataProtection/dataProtection.entity.ts +185 -0
  166. package/src/entities/dataProtection/index.ts +1 -0
  167. package/src/entities/desk/desk.entity.ts +24 -0
  168. package/src/entities/desk/index.ts +1 -0
  169. package/src/entities/document/document.entity.ts +252 -0
  170. package/src/entities/documentType/documentType.entity.ts +16 -0
  171. package/src/entities/holiday/holiday.entity.ts +11 -0
  172. package/src/entities/holiday/index.ts +1 -0
  173. package/src/entities/index.ts +20 -0
  174. package/src/entities/indicators/index.ts +1 -0
  175. package/src/entities/indicators/indicators.entity.ts +157 -0
  176. package/src/entities/issuingEntity/index.ts +1 -0
  177. package/src/entities/issuingEntity/issuingEntity.entity.ts +24 -0
  178. package/src/entities/partsOffice/index.ts +1 -0
  179. package/src/entities/partsOffice/partsOffice.entity.ts +138 -0
  180. package/src/entities/procedure/index.ts +1 -0
  181. package/src/entities/procedure/procedure.entity.ts +24 -0
  182. package/src/entities/registerBook/index.ts +1 -0
  183. package/src/entities/registerBook/registerBook.entity.ts +52 -0
  184. package/src/entities/repositoryExport/index.ts +1 -0
  185. package/src/entities/repositoryExport/repositoryExport.entity.ts +86 -0
  186. package/src/entities/retention/index.ts +1 -0
  187. package/src/entities/retention/retention.entity.ts +53 -0
  188. package/src/entities/scan/index.ts +1 -0
  189. package/src/entities/scan/scan.entity.ts +32 -0
  190. package/src/entities/signatureBatch/index.ts +1 -0
  191. package/src/entities/signatureBatch/signatureBatch.entity.ts +110 -0
  192. package/src/entities/signatureCheck/index.ts +1 -0
  193. package/src/entities/signatureCheck/signatureCheck.entity.ts +51 -0
  194. package/src/entities/textSnippet/index.ts +1 -0
  195. package/src/entities/textSnippet/textSnippet.entity.ts +24 -0
  196. package/src/entities/transparency/index.ts +1 -0
  197. package/src/entities/transparency/transparency.entity.ts +78 -0
  198. package/src/entities/workFolder/index.ts +1 -0
  199. package/src/entities/workFolder/workFolder.entity.ts +84 -0
  200. package/tsconfig.json +1 -3
@@ -0,0 +1,199 @@
1
+ import { type CommunicationMeans, type DocumentAccessLevel, type DocumentInstruction } from '../base/entities';
2
+ import {
3
+ type CaseFileAddEntryResponseEntity,
4
+ type DocDigitalDocumentTypeEntity,
5
+ type DocDigitalEntityEntity,
6
+ type PartsOfficeInboundEntity,
7
+ type DocDigitalUserEntity,
8
+ type EnablementPersonInput,
9
+ type PartsOfficeEnablementEntity,
10
+ type PartsOfficeDispatchEntity,
11
+ type PartsOfficeFileEntity,
12
+ type PartsOfficeOkResponseEntity,
13
+ type PartsOfficeRegisterResponseEntity,
14
+ type PartsOfficeStatusEntity,
15
+ type PartsOfficeSummaryEntity,
16
+ type PartsOfficeSyncResponseEntity,
17
+ } from '../entities';
18
+ import { type RpcPage } from './contract';
19
+ import { type DocumentActor, type DocumentExternalRecipientInput } from './document.contract';
20
+
21
+ /** Patrones NATS de `partsOffice` (Oficina de Partes y DocDigital): `<servicio>.<recurso>.<acción>`. */
22
+ export const PartsOfficePatterns = {
23
+ getStatus: 'gestorDocumental.partsOffice.getStatus',
24
+ getSummary: 'gestorDocumental.partsOffice.getSummary',
25
+ getEntities: 'gestorDocumental.partsOffice.getEntities',
26
+ getOwnEntities: 'gestorDocumental.partsOffice.getOwnEntities',
27
+ getUsers: 'gestorDocumental.partsOffice.getUsers',
28
+ getDocumentTypes: 'gestorDocumental.partsOffice.getDocumentTypes',
29
+ getDispatches: 'gestorDocumental.partsOffice.getDispatches',
30
+ dispatch: 'gestorDocumental.partsOffice.dispatch',
31
+ returnDispatch: 'gestorDocumental.partsOffice.returnDispatch',
32
+ resendDispatch: 'gestorDocumental.partsOffice.resendDispatch',
33
+ getDispatchFile: 'gestorDocumental.partsOffice.getDispatchFile',
34
+ getInbound: 'gestorDocumental.partsOffice.getInbound',
35
+ syncInbound: 'gestorDocumental.partsOffice.syncInbound',
36
+ registerInbound: 'gestorDocumental.partsOffice.registerInbound',
37
+ acknowledgeInbound: 'gestorDocumental.partsOffice.acknowledgeInbound',
38
+ returnInbound: 'gestorDocumental.partsOffice.returnInbound',
39
+ getInboundFile: 'gestorDocumental.partsOffice.getInboundFile',
40
+ checkEnablement: 'gestorDocumental.partsOffice.checkEnablement',
41
+ dispatchByContingency: 'gestorDocumental.partsOffice.dispatchByContingency',
42
+ registerManualIntake: 'gestorDocumental.partsOffice.registerManualIntake',
43
+ addCaseFileReceipt: 'gestorDocumental.partsOffice.addCaseFileReceipt',
44
+ } as const;
45
+
46
+ /** Destinatario interno de un ingreso, ya resuelto por el gateway (las áreas con sus integrantes). */
47
+ export type PartsOfficeRecipientInput =
48
+ | { type: 'Employee'; employeeId: string }
49
+ | { type: 'Directorate'; directorateCodeReference: number; name: string; memberEmployeeIds: string[] }
50
+ | { type: 'Department'; departmentId: string; name: string; memberEmployeeIds: string[] };
51
+
52
+ interface IListPayload<S> {
53
+ pagination?: { page?: number; limit?: number };
54
+ filters?: { search?: string; status?: S };
55
+ }
56
+
57
+ /** Lo que llegó fuera de DocDigital y Oficina de Partes ingresa a mano. */
58
+ export interface ManualIntakePayload {
59
+ file: { fileId: string; name: string };
60
+ attachments?: { fileId: string; name: string }[];
61
+ means: CommunicationMeans;
62
+ /** Cuándo llegó (ISO); sin él, ahora. */
63
+ receivedAt?: string | null;
64
+ senderEntityName: string;
65
+ senderName?: string | null;
66
+ externalFolio?: string | null;
67
+ externalDate?: string | null;
68
+ subject: string;
69
+ documentTypeId: string;
70
+ keywords: string[];
71
+ accessLevel?: DocumentAccessLevel;
72
+ hasSensitiveData?: boolean;
73
+ recipients: unknown[];
74
+ instruction: DocumentInstruction;
75
+ note?: string | null;
76
+ dueAt?: string | null;
77
+ dueBusinessDays?: number | null;
78
+ actor: DocumentActor;
79
+ }
80
+
81
+ export interface PartsOfficeContract {
82
+ [PartsOfficePatterns.getStatus]: { payload: Record<string, never>; response: PartsOfficeStatusEntity };
83
+ [PartsOfficePatterns.getSummary]: { payload: Record<string, never>; response: PartsOfficeSummaryEntity };
84
+ /** Directorio de DocDigital: instituciones por nombre. */
85
+ [PartsOfficePatterns.getEntities]: { payload: { search?: string }; response: DocDigitalEntityEntity[] };
86
+ /** Entidades asociadas a las credenciales del gestor: la del municipio y las de sus entidades emisoras. */
87
+ [PartsOfficePatterns.getOwnEntities]: { payload: Record<string, never>; response: DocDigitalEntityEntity[] };
88
+ [PartsOfficePatterns.getUsers]: {
89
+ payload: { entityId: number; search?: string };
90
+ response: DocDigitalUserEntity[];
91
+ };
92
+ [PartsOfficePatterns.getDocumentTypes]: { payload: Record<string, never>; response: DocDigitalDocumentTypeEntity[] };
93
+ [PartsOfficePatterns.getDispatches]: {
94
+ payload: IListPayload<'Pending' | 'Dispatched' | 'Returned'>;
95
+ response: RpcPage<PartsOfficeDispatchEntity[]>;
96
+ };
97
+ /** Despacha por DocDigital, con el número del documento como folio. `operatorRun`: RUN de quien despacha. */
98
+ [PartsOfficePatterns.dispatch]: {
99
+ payload: { id: string; docDigitalTypeId: number; operatorRun?: string | null; actor: DocumentActor };
100
+ response: PartsOfficeOkResponseEntity & { docDigitalDocumentId: string };
101
+ };
102
+ /** Devuelve el despacho al redactor, con el motivo (por ejemplo, un destinatario equivocado). */
103
+ [PartsOfficePatterns.returnDispatch]: {
104
+ payload: { id: string; reason: string; actor: DocumentActor };
105
+ response: PartsOfficeOkResponseEntity;
106
+ };
107
+ /** El redactor corrige las instituciones de destino de un despacho devuelto y lo envía de nuevo a Partes. */
108
+ [PartsOfficePatterns.resendDispatch]: {
109
+ payload: { id: string; externalRecipients: DocumentExternalRecipientInput[]; actor: DocumentActor };
110
+ response: PartsOfficeOkResponseEntity;
111
+ };
112
+ /** PDF firmado de un documento por despachar, para que Oficina de Partes lo revise. */
113
+ [PartsOfficePatterns.getDispatchFile]: {
114
+ // con `receipt`, el comprobante del despacho por contingencia
115
+ payload: { id: string; receipt?: boolean };
116
+ response: PartsOfficeFileEntity;
117
+ };
118
+ [PartsOfficePatterns.getInbound]: {
119
+ payload: IListPayload<'Pending' | 'Registered' | 'Returned'>;
120
+ response: RpcPage<PartsOfficeInboundEntity[]>;
121
+ };
122
+ /** Trae de DocDigital lo recibido que aún no tiene acuse de recibo. */
123
+ [PartsOfficePatterns.syncInbound]: { payload: Record<string, never>; response: PartsOfficeSyncResponseEntity };
124
+ /**
125
+ * Ingresa un recibido al gestor: le da folio de ingreso, lo deriva a quienes corresponda y da el acuse de recibo
126
+ * en DocDigital.
127
+ */
128
+ [PartsOfficePatterns.registerInbound]: {
129
+ payload: {
130
+ id: string;
131
+ documentTypeId: string;
132
+ keywords: string[];
133
+ accessLevel: DocumentAccessLevel;
134
+ hasSensitiveData: boolean;
135
+ recipients: PartsOfficeRecipientInput[];
136
+ instruction: DocumentInstruction;
137
+ note?: string | null;
138
+ dueAt?: string | null;
139
+ actor: DocumentActor;
140
+ };
141
+ response: PartsOfficeRegisterResponseEntity;
142
+ };
143
+ /** Reintenta el acuse de recibo de un recibido ya ingresado. */
144
+ [PartsOfficePatterns.acknowledgeInbound]: {
145
+ payload: { id: string; actor: DocumentActor };
146
+ response: PartsOfficeOkResponseEntity;
147
+ };
148
+ /** Devuelve el recibido a la institución que lo envió, con el motivo (entre 3 y 255 caracteres). */
149
+ [PartsOfficePatterns.returnInbound]: {
150
+ payload: { id: string; reason: string; actor: DocumentActor };
151
+ response: PartsOfficeOkResponseEntity;
152
+ };
153
+ /** Archivo de un recibido: el principal o, con `attachment`, uno de sus anexos (por su posición). */
154
+ [PartsOfficePatterns.getInboundFile]: {
155
+ payload: { id: string; attachment?: number };
156
+ response: PartsOfficeFileEntity;
157
+ };
158
+ /**
159
+ * Quiénes de `people` están habilitados como usuarios de DocDigital en la municipalidad o en sus entidades emisoras
160
+ * (por RUN). El directorio de cada entidad se guarda 10 minutos.
161
+ */
162
+ [PartsOfficePatterns.checkEnablement]: {
163
+ payload: { people: EnablementPersonInput[] };
164
+ response: PartsOfficeEnablementEntity;
165
+ };
166
+ /**
167
+ * Registro por contingencia: el documento no se pudo despachar por DocDigital y salió por otro medio. Queda
168
+ * despachado, con el medio, a quién, el motivo y el comprobante; si después se registra en DocDigital, su número.
169
+ */
170
+ [PartsOfficePatterns.dispatchByContingency]: {
171
+ payload: {
172
+ id: string;
173
+ means: CommunicationMeans;
174
+ sentAt: string;
175
+ sentTo: string;
176
+ reason: string;
177
+ receipt?: { fileId: string; name: string } | null;
178
+ docDigitalDocumentId?: string | null;
179
+ actor: DocumentActor;
180
+ };
181
+ response: PartsOfficeOkResponseEntity;
182
+ };
183
+ /**
184
+ * Ingreso manual: lo que llegó fuera de DocDigital (papel, correo) entra con folio de ingreso, como lo recibido
185
+ * por DocDigital, y se deriva.
186
+ */
187
+ [PartsOfficePatterns.registerManualIntake]: {
188
+ payload: ManualIntakePayload;
189
+ response: PartsOfficeRegisterResponseEntity;
190
+ };
191
+ /**
192
+ * Comprobante de trazabilidad de DocDigital de un documento del índice de un expediente (despachado o recibido por
193
+ * DocDigital): se arma con el estado y el historial que informa DocDigital y entra como comunicación oficial.
194
+ */
195
+ [PartsOfficePatterns.addCaseFileReceipt]: {
196
+ payload: { caseFileId: string; documentId: string; actor: { employeeId: string } };
197
+ response: CaseFileAddEntryResponseEntity;
198
+ };
199
+ }
@@ -0,0 +1,53 @@
1
+ import { type ProcedureEntity } from '../base/entities';
2
+ import {
3
+ type ProcedureCreateResponseEntity,
4
+ type ProcedureGetAllResponseEntity,
5
+ type ProcedureGetByIdResponseEntity,
6
+ type ProcedureUpdateResponseEntity,
7
+ } from '../entities';
8
+ import { type RpcPage } from './contract';
9
+
10
+ /** Patrones NATS de `procedure`: `<servicio>.<recurso>.<acción>`. */
11
+ export const ProcedurePatterns = {
12
+ getAll: 'gestorDocumental.procedure.getAll',
13
+ getById: 'gestorDocumental.procedure.getById',
14
+ create: 'gestorDocumental.procedure.create',
15
+ update: 'gestorDocumental.procedure.update',
16
+ setEnabled: 'gestorDocumental.procedure.setEnabled',
17
+ } as const;
18
+
19
+ /** Datos de un procedimiento administrativo al crearlo o editarlo. */
20
+ export interface ProcedureWritePayload {
21
+ name: string;
22
+ cpatId?: string | null;
23
+ cpatCode?: string | null;
24
+ description?: string | null;
25
+ enabled?: boolean;
26
+ }
27
+
28
+ export interface ProcedureContract {
29
+ [ProcedurePatterns.getAll]: {
30
+ // sin `page` y `limit` responde todos en una sola página
31
+ payload: {
32
+ pagination?: { page?: number; limit?: number };
33
+ filters?: { search?: string; enabled?: boolean };
34
+ };
35
+ response: RpcPage<ProcedureGetAllResponseEntity[]>;
36
+ };
37
+ [ProcedurePatterns.getById]: {
38
+ payload: Pick<ProcedureEntity, 'id'>;
39
+ response: ProcedureGetByIdResponseEntity;
40
+ };
41
+ [ProcedurePatterns.create]: {
42
+ payload: ProcedureWritePayload;
43
+ response: ProcedureCreateResponseEntity;
44
+ };
45
+ [ProcedurePatterns.update]: {
46
+ payload: ProcedureWritePayload & Pick<ProcedureEntity, 'id'>;
47
+ response: ProcedureUpdateResponseEntity;
48
+ };
49
+ [ProcedurePatterns.setEnabled]: {
50
+ payload: Pick<ProcedureEntity, 'id' | 'enabled'>;
51
+ response: ProcedureUpdateResponseEntity;
52
+ };
53
+ }
@@ -0,0 +1,24 @@
1
+ import { type RegisterBookEntity, type RegisterBookExportEntity, type RegisterBookKind } from '../entities';
2
+
3
+ /** Patrones NATS de `registerBook` (libros de registro): `<servicio>.<recurso>.<acción>`. */
4
+ export const RegisterBookPatterns = {
5
+ get: 'gestorDocumental.registerBook.get',
6
+ export: 'gestorDocumental.registerBook.export',
7
+ } as const;
8
+
9
+ /** Qué libro y qué período: un año y, si se indica, un mes. El de un tipo documental exige el tipo. */
10
+ export interface RegisterBookQuery {
11
+ kind: RegisterBookKind;
12
+ documentTypeId?: string;
13
+ year: number;
14
+ month?: number | null;
15
+ }
16
+
17
+ export interface RegisterBookContract {
18
+ [RegisterBookPatterns.get]: { payload: RegisterBookQuery; response: RegisterBookEntity };
19
+ /** El libro en Excel o PDF. `generatedBy`: quién lo descarga (va en el encabezado). */
20
+ [RegisterBookPatterns.export]: {
21
+ payload: RegisterBookQuery & { format: 'xlsx' | 'pdf'; generatedBy: string };
22
+ response: RegisterBookExportEntity;
23
+ };
24
+ }
@@ -0,0 +1,54 @@
1
+ import {
2
+ type RepositoryExportCaseFilesPageEntity,
3
+ type RepositoryExportRecordResponseEntity,
4
+ type RepositoryExportDocumentsPageEntity,
5
+ type RepositoryExportScope,
6
+ type RepositoryExportSummaryEntity,
7
+ } from '../entities';
8
+
9
+ /**
10
+ * Patrones NATS de `repositoryExport`: exportación completa del repositorio (portabilidad). El ms entrega los datos
11
+ * por páginas, porque un mensaje NATS no admite más de 1 MB; el gateway arma el ZIP con ellos y los archivos.
12
+ */
13
+ export const RepositoryExportPatterns = {
14
+ getSummary: 'gestorDocumental.repositoryExport.getSummary',
15
+ getDocuments: 'gestorDocumental.repositoryExport.getDocuments',
16
+ getCaseFiles: 'gestorDocumental.repositoryExport.getCaseFiles',
17
+ record: 'gestorDocumental.repositoryExport.record',
18
+ } as const;
19
+
20
+ /** Período por fecha de creación (días de Chile «AAAA-MM-DD»); sin él, todo. */
21
+ export interface RepositoryExportQuery {
22
+ from?: string | null;
23
+ to?: string | null;
24
+ scope?: RepositoryExportScope;
25
+ /** Solo lo incluido en un acta de transferencia: el paquete para el Archivo Nacional. */
26
+ dispositionId?: string | null;
27
+ }
28
+
29
+ export interface RepositoryExportContract {
30
+ [RepositoryExportPatterns.getSummary]: { payload: RepositoryExportQuery; response: RepositoryExportSummaryEntity };
31
+ /** Hasta 50 documentos por página, en orden de creación. */
32
+ [RepositoryExportPatterns.getDocuments]: {
33
+ payload: RepositoryExportQuery & { cursor?: string | null; limit?: number };
34
+ response: RepositoryExportDocumentsPageEntity;
35
+ };
36
+ /** Hasta 10 expedientes por página; cada uno queda con «Exportó» en su trazabilidad, a nombre de quien exporta. */
37
+ [RepositoryExportPatterns.getCaseFiles]: {
38
+ payload: Omit<RepositoryExportQuery, 'scope'> & {
39
+ cursor?: string | null;
40
+ limit?: number;
41
+ actor: { employeeId: string | null; fullName: string };
42
+ };
43
+ response: RepositoryExportCaseFilesPageEntity;
44
+ };
45
+ /** Deja la exportación en la bitácora: quién, qué período y si llevó archivos. */
46
+ [RepositoryExportPatterns.record]: {
47
+ payload: RepositoryExportQuery & {
48
+ includeFiles: boolean;
49
+ complete: boolean;
50
+ actor: { employeeId: string | null; fullName: string };
51
+ };
52
+ response: RepositoryExportRecordResponseEntity;
53
+ };
54
+ }
@@ -0,0 +1,44 @@
1
+ import { type DispositionKind } from '../base/entities';
2
+ import {
3
+ type DispositionRecordResponseEntity,
4
+ type IndicatorsFileEntity,
5
+ type RetentionDueItemEntity,
6
+ type RetentionSummaryEntity,
7
+ } from '../entities';
8
+ import { type RpcPage } from './contract';
9
+
10
+ /** Patrones NATS de `retention`: plazos de retención por serie y actas de transferencia o eliminación. */
11
+ export const RetentionPatterns = {
12
+ getSummary: 'gestorDocumental.retention.getSummary',
13
+ getDueItems: 'gestorDocumental.retention.getDueItems',
14
+ createRecord: 'gestorDocumental.retention.createRecord',
15
+ getRecords: 'gestorDocumental.retention.getRecords',
16
+ getRecordPdf: 'gestorDocumental.retention.getRecordPdf',
17
+ } as const;
18
+
19
+ export interface RetentionContract {
20
+ [RetentionPatterns.getSummary]: { payload: Record<string, never>; response: RetentionSummaryEntity };
21
+ /** Lo vencido de una serie, de lo más antiguo a lo más reciente. */
22
+ [RetentionPatterns.getDueItems]: {
23
+ payload: { seriesId: string; page?: number; limit?: number };
24
+ response: RpcPage<RetentionDueItemEntity[]>;
25
+ };
26
+ /**
27
+ * Emite el acta con lo elegido (todo debe estar vencido y sin acta). Según la serie: conservación permanente →
28
+ * transferencia; eliminación → eliminación; selección → cualquiera de las dos.
29
+ */
30
+ [RetentionPatterns.createRecord]: {
31
+ payload: {
32
+ kind: DispositionKind;
33
+ seriesId: string;
34
+ documentIds: string[];
35
+ caseFileIds: string[];
36
+ observation?: string | null;
37
+ actor: { employeeId: string; fullName: string };
38
+ };
39
+ response: DispositionRecordResponseEntity;
40
+ };
41
+ [RetentionPatterns.getRecords]: { payload: { year: number }; response: DispositionRecordResponseEntity[] };
42
+ /** El acta en PDF, con lo que incluye, para firmarla y archivarla. */
43
+ [RetentionPatterns.getRecordPdf]: { payload: { id: string; generatedBy: string }; response: IndicatorsFileEntity };
44
+ }
@@ -0,0 +1,52 @@
1
+ import {
2
+ type ScanSessionCreateResponseEntity,
3
+ type ScanSessionFileResponseEntity,
4
+ type ScanSessionPublicEntity,
5
+ type ScanSessionResponseEntity,
6
+ } from '../entities';
7
+ import { type DocumentActor } from './document.contract';
8
+
9
+ /** Patrones NATS de `scan`: escanear con el celular. */
10
+ export const ScanPatterns = {
11
+ create: 'gestorDocumental.scan.create',
12
+ getById: 'gestorDocumental.scan.getById',
13
+ getFile: 'gestorDocumental.scan.getFile',
14
+ getByToken: 'gestorDocumental.scan.getByToken',
15
+ addPage: 'gestorDocumental.scan.addPage',
16
+ finish: 'gestorDocumental.scan.finish',
17
+ } as const;
18
+
19
+ export interface ScanContract {
20
+ /**
21
+ * Abre una sesión de escaneo para el funcionario. `url` es la dirección pública del celular (sin el token): con ella
22
+ * se arma el QR que se muestra en el escritorio.
23
+ */
24
+ [ScanPatterns.create]: {
25
+ payload: { url: string; actor: DocumentActor };
26
+ response: ScanSessionCreateResponseEntity;
27
+ };
28
+ /** Estado de la sesión, para quien la abrió: el escritorio la consulta hasta que el PDF esté listo. */
29
+ [ScanPatterns.getById]: {
30
+ payload: { id: string; actor: DocumentActor };
31
+ response: ScanSessionResponseEntity;
32
+ };
33
+ [ScanPatterns.getFile]: {
34
+ payload: { id: string; actor: DocumentActor };
35
+ response: ScanSessionFileResponseEntity;
36
+ };
37
+ /** Sin sesión, desde el celular, con el token del QR. */
38
+ [ScanPatterns.getByToken]: {
39
+ payload: { token: string };
40
+ response: ScanSessionPublicEntity;
41
+ };
42
+ /** Agrega una foto ya subida al gestor de archivos (la sube el gateway). */
43
+ [ScanPatterns.addPage]: {
44
+ payload: { token: string; fileId: string; contentType: string; size: number };
45
+ response: ScanSessionPublicEntity;
46
+ };
47
+ /** Junta las fotos en un PDF y cierra la sesión. */
48
+ [ScanPatterns.finish]: {
49
+ payload: { token: string };
50
+ response: ScanSessionPublicEntity;
51
+ };
52
+ }
@@ -0,0 +1,96 @@
1
+ import { type DocumentAccessLevel } from '../base/entities';
2
+ import {
3
+ type SignatureBatchCreateResponseEntity,
4
+ type SignatureBatchGetAllResponseEntity,
5
+ type SignatureBatchGetByIdResponseEntity,
6
+ type SignatureBatchRejectResponseEntity,
7
+ type SignatureBatchSignResponseEntity,
8
+ type SignatureBatchTab,
9
+ type SignatureBatchVisaResponseEntity,
10
+ } from '../entities';
11
+ import { type RpcPage } from './contract';
12
+ import { type DocumentActor } from './document.contract';
13
+
14
+ /** Patrones NATS de `signatureBatch` (lotes de firma): `<servicio>.<recurso>.<acción>`. */
15
+ export const SignatureBatchPatterns = {
16
+ getAll: 'gestorDocumental.signatureBatch.getAll',
17
+ getById: 'gestorDocumental.signatureBatch.getById',
18
+ create: 'gestorDocumental.signatureBatch.create',
19
+ visa: 'gestorDocumental.signatureBatch.visa',
20
+ sign: 'gestorDocumental.signatureBatch.sign',
21
+ reject: 'gestorDocumental.signatureBatch.reject',
22
+ } as const;
23
+
24
+ /** Datos de quien firma, para el sello de la firma (los resuelve el gateway desde la sesión). */
25
+ export interface SignatureBatchSigner {
26
+ rut: string;
27
+ fullName: string;
28
+ role: string;
29
+ areaName: string;
30
+ }
31
+
32
+ export interface SignatureBatchContract {
33
+ [SignatureBatchPatterns.getAll]: {
34
+ payload: {
35
+ pagination?: { page?: number; limit?: number };
36
+ filters?: { search?: string; tab?: SignatureBatchTab };
37
+ actor: DocumentActor;
38
+ };
39
+ response: RpcPage<SignatureBatchGetAllResponseEntity[]>;
40
+ };
41
+ /** Lo ven su redactor y quienes visan o firman sus documentos; con `viewAll`, quien lleva el registro. */
42
+ [SignatureBatchPatterns.getById]: {
43
+ payload: { id: string; actor: DocumentActor; viewAll?: boolean };
44
+ response: SignatureBatchGetByIdResponseEntity;
45
+ };
46
+ /**
47
+ * Crea el lote y lo envía a tramitación: un documento por cada PDF, todos del mismo tipo y con el mismo flujo.
48
+ * Cada documento recibe su código de verificación y, con su primera firma, su número (si el tipo lo lleva).
49
+ */
50
+ [SignatureBatchPatterns.create]: {
51
+ payload: {
52
+ name: string;
53
+ documentTypeId: string;
54
+ keywords: string[];
55
+ accessLevel?: DocumentAccessLevel;
56
+ hasSensitiveData?: boolean;
57
+ directorateCodeReference?: number | null;
58
+ departmentId?: string | null;
59
+ visaEmployeeIds?: string[];
60
+ // Etapa de cada visador: los de una misma etapa visan a la vez.
61
+ visaStages?: number[] | null;
62
+ signatureEmployeeIds: string[];
63
+ signatureSheet?: boolean;
64
+ documents: { subject: string; file: { fileId: string; name: string } }[];
65
+ actor: DocumentActor;
66
+ };
67
+ response: SignatureBatchCreateResponseEntity;
68
+ };
69
+ /** Visa de una vez los documentos del lote que el funcionario tiene en su turno de visación. */
70
+ [SignatureBatchPatterns.visa]: {
71
+ payload: { id: string; observation?: string | null; actor: DocumentActor };
72
+ response: SignatureBatchVisaResponseEntity;
73
+ };
74
+ /**
75
+ * Firma con un solo OTP los documentos del lote que el funcionario tiene en su turno de firma. FirmaGob admite 5 MB
76
+ * por solicitud: los que no caben quedan en `remaining`, para firmarlos con un OTP nuevo.
77
+ */
78
+ [SignatureBatchPatterns.sign]: {
79
+ payload: {
80
+ id: string;
81
+ observation?: string | null;
82
+ signer: SignatureBatchSigner;
83
+ otp?: string;
84
+ actor: DocumentActor;
85
+ };
86
+ response: SignatureBatchSignResponseEntity;
87
+ };
88
+ /**
89
+ * Devuelve a su redactor los documentos del lote que el funcionario tiene en su turno: todos, o los indicados en
90
+ * `documentIds`. Los demás siguen su curso.
91
+ */
92
+ [SignatureBatchPatterns.reject]: {
93
+ payload: { id: string; observation: string; documentIds?: string[]; actor: DocumentActor };
94
+ response: SignatureBatchRejectResponseEntity;
95
+ };
96
+ }
@@ -0,0 +1,11 @@
1
+ import { type PdfSignatureReportEntity } from '../entities';
2
+
3
+ /** Patrones NATS de `signatureCheck`: revisión de las firmas electrónicas de un PDF. */
4
+ export const SignatureCheckPatterns = {
5
+ check: 'gestorDocumental.signatureCheck.check',
6
+ } as const;
7
+
8
+ export interface SignatureCheckContract {
9
+ /** Revisa un PDF ya subido al gestor de archivos (la herramienta «Validar firmas» lo sube antes). */
10
+ [SignatureCheckPatterns.check]: { payload: { fileId: string }; response: PdfSignatureReportEntity };
11
+ }
@@ -0,0 +1,53 @@
1
+ import { type TextSnippetEntity, type TextSnippetSection } from '../base/entities';
2
+ import {
3
+ type TextSnippetCreateResponseEntity,
4
+ type TextSnippetGetAllResponseEntity,
5
+ type TextSnippetGetByIdResponseEntity,
6
+ type TextSnippetUpdateResponseEntity,
7
+ } from '../entities';
8
+ import { type RpcPage } from './contract';
9
+
10
+ /** Patrones NATS de `textSnippet` (biblioteca de vistos y cláusulas): `<servicio>.<recurso>.<acción>`. */
11
+ export const TextSnippetPatterns = {
12
+ getAll: 'gestorDocumental.textSnippet.getAll',
13
+ getById: 'gestorDocumental.textSnippet.getById',
14
+ create: 'gestorDocumental.textSnippet.create',
15
+ update: 'gestorDocumental.textSnippet.update',
16
+ setEnabled: 'gestorDocumental.textSnippet.setEnabled',
17
+ } as const;
18
+
19
+ /** Datos de un texto de la biblioteca al crearlo o editarlo. */
20
+ export interface TextSnippetWritePayload {
21
+ title: string;
22
+ text: string;
23
+ section: TextSnippetSection;
24
+ keywords?: string[];
25
+ enabled?: boolean;
26
+ }
27
+
28
+ export interface TextSnippetContract {
29
+ [TextSnippetPatterns.getAll]: {
30
+ // sin `page` y `limit` responde todas en una sola página
31
+ payload: {
32
+ pagination?: { page?: number; limit?: number };
33
+ filters?: { search?: string; enabled?: boolean; section?: TextSnippetSection };
34
+ };
35
+ response: RpcPage<TextSnippetGetAllResponseEntity[]>;
36
+ };
37
+ [TextSnippetPatterns.getById]: {
38
+ payload: Pick<TextSnippetEntity, 'id'>;
39
+ response: TextSnippetGetByIdResponseEntity;
40
+ };
41
+ [TextSnippetPatterns.create]: {
42
+ payload: TextSnippetWritePayload;
43
+ response: TextSnippetCreateResponseEntity;
44
+ };
45
+ [TextSnippetPatterns.update]: {
46
+ payload: TextSnippetWritePayload & Pick<TextSnippetEntity, 'id'>;
47
+ response: TextSnippetUpdateResponseEntity;
48
+ };
49
+ [TextSnippetPatterns.setEnabled]: {
50
+ payload: Pick<TextSnippetEntity, 'id' | 'enabled'>;
51
+ response: TextSnippetUpdateResponseEntity;
52
+ };
53
+ }
@@ -0,0 +1,55 @@
1
+ import {
2
+ type DocumentPublicFileResponseEntity,
3
+ type IndicatorsFileEntity,
4
+ type TransparencyItemEntity,
5
+ type TransparencyItemStatus,
6
+ type TransparencyMonthEntity,
7
+ type TransparencyPublicEntity,
8
+ } from '../entities';
9
+
10
+ /** Patrones NATS de `transparency`: Transparencia Activa de los documentos firmados (Ley 20.285, art. 7°). */
11
+ export const TransparencyPatterns = {
12
+ getMonth: 'gestorDocumental.transparency.getMonth',
13
+ update: 'gestorDocumental.transparency.update',
14
+ export: 'gestorDocumental.transparency.export',
15
+ getRedactedFile: 'gestorDocumental.transparency.getRedactedFile',
16
+ getPublic: 'gestorDocumental.transparency.getPublic',
17
+ getPublicFile: 'gestorDocumental.transparency.getPublicFile',
18
+ } as const;
19
+
20
+ type TTransparencyActor = { employeeId: string; fullName: string };
21
+
22
+ /** Lo que se decide sobre un documento en Transparencia Activa. */
23
+ export type TransparencyUpdatePayload =
24
+ /** Publicarlo (o corregir el enlace): si el original no es público, exige antes la versión tarjada. */
25
+ | { action: 'publish'; documentId: string; url?: string | null; note?: string | null; actor: TTransparencyActor }
26
+ /** No se publica, con su motivo (p. ej. reservado por el art. 21 de la Ley 20.285). */
27
+ | { action: 'exclude'; documentId: string; reason: string; actor: TTransparencyActor }
28
+ /** Vuelve a pendiente: se retiró la publicación o se revisó la exclusión. */
29
+ | { action: 'withdraw'; documentId: string; reason: string; actor: TTransparencyActor }
30
+ /** Versión tarjada ya subida al gestor de archivos (PDF). */
31
+ | { action: 'setRedacted'; documentId: string; fileId: string; fileName: string; actor: TTransparencyActor }
32
+ | { action: 'removeRedacted'; documentId: string; actor: TTransparencyActor };
33
+
34
+ export interface TransparencyContract {
35
+ /** Lo firmado en el mes (hora de Chile) de los tipos que se publican, y lo que ya se publicó aunque el tipo cambie. */
36
+ [TransparencyPatterns.getMonth]: {
37
+ payload: { year: number; month: number; status?: TransparencyItemStatus | null };
38
+ response: TransparencyMonthEntity;
39
+ };
40
+ [TransparencyPatterns.update]: { payload: TransparencyUpdatePayload; response: TransparencyItemEntity };
41
+ /** Planilla del mes (Excel) para cargar en el Portal de Transparencia. */
42
+ [TransparencyPatterns.export]: {
43
+ payload: { year: number; month: number; generatedBy: string };
44
+ response: IndicatorsFileEntity;
45
+ };
46
+ /** La versión tarjada cargada, para revisarla antes de publicar. */
47
+ [TransparencyPatterns.getRedactedFile]: {
48
+ payload: { documentId: string };
49
+ response: DocumentPublicFileResponseEntity;
50
+ };
51
+ /** Página pública de un documento publicado, por su código de verificación. No exige sesión. */
52
+ [TransparencyPatterns.getPublic]: { payload: { code: string }; response: TransparencyPublicEntity };
53
+ /** La versión publicada: la tarjada si existe; si no, el original público. Solo de un documento vigente. */
54
+ [TransparencyPatterns.getPublicFile]: { payload: { code: string }; response: DocumentPublicFileResponseEntity };
55
+ }