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

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 (243) hide show
  1. package/dist/base/entities.d.ts +1015 -5
  2. package/dist/base/entities.js +240 -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 +124 -1
  10. package/dist/contracts/caseFile.contract.js +10 -0
  11. package/dist/contracts/dataProtection.contract.d.ts +256 -0
  12. package/dist/contracts/dataProtection.contract.js +23 -0
  13. package/dist/contracts/desk.contract.d.ts +88 -0
  14. package/dist/contracts/desk.contract.js +13 -0
  15. package/dist/contracts/document.contract.d.ts +218 -3
  16. package/dist/contracts/document.contract.js +15 -0
  17. package/dist/contracts/documentTemplate.contract.d.ts +17 -0
  18. package/dist/contracts/documentTemplate.contract.js +10 -0
  19. package/dist/contracts/documentType.contract.d.ts +32 -3
  20. package/dist/contracts/documentType.contract.js +2 -0
  21. package/dist/contracts/draftingRequest.contract.d.ts +94 -0
  22. package/dist/contracts/draftingRequest.contract.js +11 -0
  23. package/dist/contracts/holiday.contract.d.ts +39 -0
  24. package/dist/contracts/holiday.contract.js +10 -0
  25. package/dist/contracts/index.d.ts +248 -4
  26. package/dist/contracts/index.js +69 -0
  27. package/dist/contracts/indicators.contract.d.ts +103 -0
  28. package/dist/contracts/indicators.contract.js +15 -0
  29. package/dist/contracts/internalReview.contract.d.ts +55 -0
  30. package/dist/contracts/internalReview.contract.js +9 -0
  31. package/dist/contracts/issuingEntity.contract.d.ts +52 -0
  32. package/dist/contracts/issuingEntity.contract.js +11 -0
  33. package/dist/contracts/mailIntake.contract.d.ts +61 -0
  34. package/dist/contracts/mailIntake.contract.js +15 -0
  35. package/dist/contracts/partsOffice.contract.d.ts +94 -2
  36. package/dist/contracts/partsOffice.contract.js +5 -0
  37. package/dist/contracts/procedure.contract.d.ts +14 -23
  38. package/dist/contracts/procedure.contract.js +6 -4
  39. package/dist/contracts/push.contract.d.ts +59 -0
  40. package/dist/contracts/push.contract.js +14 -0
  41. package/dist/contracts/registerBook.contract.d.ts +27 -0
  42. package/dist/contracts/registerBook.contract.js +8 -0
  43. package/dist/contracts/repositoryExport.contract.d.ts +57 -0
  44. package/dist/contracts/repositoryExport.contract.js +13 -0
  45. package/dist/contracts/retention.contract.d.ts +58 -0
  46. package/dist/contracts/retention.contract.js +11 -0
  47. package/dist/contracts/richImage.contract.d.ts +33 -0
  48. package/dist/contracts/richImage.contract.js +8 -0
  49. package/dist/contracts/scan.contract.d.ts +63 -0
  50. package/dist/contracts/scan.contract.js +12 -0
  51. package/dist/contracts/signatureBatch.contract.d.ts +109 -0
  52. package/dist/contracts/signatureBatch.contract.js +12 -0
  53. package/dist/contracts/signatureCheck.contract.d.ts +14 -0
  54. package/dist/contracts/signatureCheck.contract.js +7 -0
  55. package/dist/contracts/textSnippet.contract.d.ts +51 -0
  56. package/dist/contracts/textSnippet.contract.js +11 -0
  57. package/dist/contracts/transparency.contract.d.ts +96 -0
  58. package/dist/contracts/transparency.contract.js +12 -0
  59. package/dist/contracts/workFolder.contract.d.ts +114 -0
  60. package/dist/contracts/workFolder.contract.js +16 -0
  61. package/dist/entities/accessRequest/accessRequest.entity.d.ts +73 -0
  62. package/dist/entities/accessRequest/accessRequest.entity.js +2 -0
  63. package/dist/entities/accessRequest/index.d.ts +1 -0
  64. package/dist/entities/accessRequest/index.js +17 -0
  65. package/dist/entities/archivalSeries/archivalSeries.entity.d.ts +32 -0
  66. package/dist/entities/archivalSeries/archivalSeries.entity.js +2 -0
  67. package/dist/entities/archivalSeries/index.d.ts +1 -0
  68. package/dist/entities/archivalSeries/index.js +17 -0
  69. package/dist/entities/audit/audit.entity.d.ts +30 -0
  70. package/dist/entities/audit/audit.entity.js +2 -0
  71. package/dist/entities/audit/index.d.ts +1 -0
  72. package/dist/entities/audit/index.js +17 -0
  73. package/dist/entities/caseFile/caseFile.entity.d.ts +135 -0
  74. package/dist/entities/dataProtection/dataProtection.entity.d.ts +180 -0
  75. package/dist/entities/dataProtection/dataProtection.entity.js +2 -0
  76. package/dist/entities/dataProtection/index.d.ts +1 -0
  77. package/dist/entities/dataProtection/index.js +17 -0
  78. package/dist/entities/desk/desk.entity.d.ts +25 -0
  79. package/dist/entities/desk/desk.entity.js +2 -0
  80. package/dist/entities/desk/index.d.ts +1 -0
  81. package/dist/entities/desk/index.js +17 -0
  82. package/dist/entities/document/document.entity.d.ts +431 -1
  83. package/dist/entities/document/index.d.ts +1 -0
  84. package/dist/entities/document/index.js +1 -0
  85. package/dist/entities/document/richStyle.d.ts +212 -0
  86. package/dist/entities/document/richStyle.js +81 -0
  87. package/dist/entities/documentTemplate/documentTemplate.entity.d.ts +25 -0
  88. package/dist/entities/documentTemplate/documentTemplate.entity.js +2 -0
  89. package/dist/entities/documentTemplate/index.d.ts +1 -0
  90. package/dist/entities/documentTemplate/index.js +17 -0
  91. package/dist/entities/documentType/documentType.entity.d.ts +62 -1
  92. package/dist/entities/draftingRequest/draftingRequest.entity.d.ts +76 -0
  93. package/dist/entities/draftingRequest/draftingRequest.entity.js +2 -0
  94. package/dist/entities/draftingRequest/index.d.ts +1 -0
  95. package/dist/entities/draftingRequest/index.js +17 -0
  96. package/dist/entities/holiday/holiday.entity.d.ts +32 -0
  97. package/dist/entities/holiday/holiday.entity.js +2 -0
  98. package/dist/entities/holiday/index.d.ts +1 -0
  99. package/dist/entities/holiday/index.js +17 -0
  100. package/dist/entities/index.d.ts +22 -0
  101. package/dist/entities/index.js +22 -0
  102. package/dist/entities/indicators/index.d.ts +1 -0
  103. package/dist/entities/indicators/index.js +17 -0
  104. package/dist/entities/indicators/indicators.entity.d.ts +152 -0
  105. package/dist/entities/indicators/indicators.entity.js +2 -0
  106. package/dist/entities/internalReview/index.d.ts +1 -0
  107. package/dist/entities/internalReview/index.js +17 -0
  108. package/dist/entities/internalReview/internalReview.entity.d.ts +50 -0
  109. package/dist/entities/internalReview/internalReview.entity.js +2 -0
  110. package/dist/entities/issuingEntity/index.d.ts +1 -0
  111. package/dist/entities/issuingEntity/index.js +17 -0
  112. package/dist/entities/issuingEntity/issuingEntity.entity.d.ts +20 -0
  113. package/dist/entities/issuingEntity/issuingEntity.entity.js +2 -0
  114. package/dist/entities/mailIntake/index.d.ts +1 -0
  115. package/dist/entities/mailIntake/index.js +17 -0
  116. package/dist/entities/mailIntake/mailIntake.entity.d.ts +51 -0
  117. package/dist/entities/mailIntake/mailIntake.entity.js +2 -0
  118. package/dist/entities/partsOffice/partsOffice.entity.d.ts +39 -0
  119. package/dist/entities/procedure/procedure.entity.d.ts +27 -6
  120. package/dist/entities/push/index.d.ts +1 -0
  121. package/dist/entities/push/index.js +17 -0
  122. package/dist/entities/push/push.entity.d.ts +28 -0
  123. package/dist/entities/push/push.entity.js +2 -0
  124. package/dist/entities/registerBook/index.d.ts +1 -0
  125. package/dist/entities/registerBook/index.js +17 -0
  126. package/dist/entities/registerBook/registerBook.entity.d.ts +48 -0
  127. package/dist/entities/registerBook/registerBook.entity.js +2 -0
  128. package/dist/entities/repositoryExport/index.d.ts +1 -0
  129. package/dist/entities/repositoryExport/index.js +17 -0
  130. package/dist/entities/repositoryExport/repositoryExport.entity.d.ts +124 -0
  131. package/dist/entities/repositoryExport/repositoryExport.entity.js +2 -0
  132. package/dist/entities/retention/index.d.ts +1 -0
  133. package/dist/entities/retention/index.js +17 -0
  134. package/dist/entities/retention/retention.entity.d.ts +49 -0
  135. package/dist/entities/retention/retention.entity.js +2 -0
  136. package/dist/entities/scan/index.d.ts +1 -0
  137. package/dist/entities/scan/index.js +17 -0
  138. package/dist/entities/scan/scan.entity.d.ts +29 -0
  139. package/dist/entities/scan/scan.entity.js +2 -0
  140. package/dist/entities/signatureBatch/index.d.ts +1 -0
  141. package/dist/entities/signatureBatch/index.js +17 -0
  142. package/dist/entities/signatureBatch/signatureBatch.entity.d.ts +107 -0
  143. package/dist/entities/signatureBatch/signatureBatch.entity.js +2 -0
  144. package/dist/entities/signatureCheck/index.d.ts +1 -0
  145. package/dist/entities/signatureCheck/index.js +17 -0
  146. package/dist/entities/signatureCheck/signatureCheck.entity.d.ts +60 -0
  147. package/dist/entities/signatureCheck/signatureCheck.entity.js +2 -0
  148. package/dist/entities/textSnippet/index.d.ts +1 -0
  149. package/dist/entities/textSnippet/index.js +17 -0
  150. package/dist/entities/textSnippet/textSnippet.entity.d.ts +20 -0
  151. package/dist/entities/textSnippet/textSnippet.entity.js +2 -0
  152. package/dist/entities/transparency/index.d.ts +1 -0
  153. package/dist/entities/transparency/index.js +17 -0
  154. package/dist/entities/transparency/transparency.entity.d.ts +77 -0
  155. package/dist/entities/transparency/transparency.entity.js +2 -0
  156. package/dist/entities/workFolder/index.d.ts +1 -0
  157. package/dist/entities/workFolder/index.js +17 -0
  158. package/dist/entities/workFolder/workFolder.entity.d.ts +83 -0
  159. package/dist/entities/workFolder/workFolder.entity.js +2 -0
  160. package/package.json +1 -1
  161. package/src/base/entities.ts +1187 -5
  162. package/src/contracts/accessRequest.contract.ts +81 -0
  163. package/src/contracts/archivalSeries.contract.ts +59 -0
  164. package/src/contracts/audit.contract.ts +30 -0
  165. package/src/contracts/caseFile.contract.ts +107 -2
  166. package/src/contracts/dataProtection.contract.ts +197 -0
  167. package/src/contracts/desk.contract.ts +72 -0
  168. package/src/contracts/document.contract.ts +200 -3
  169. package/src/contracts/documentTemplate.contract.ts +17 -0
  170. package/src/contracts/documentType.contract.ts +55 -4
  171. package/src/contracts/draftingRequest.contract.ts +73 -0
  172. package/src/contracts/holiday.contract.ts +25 -0
  173. package/src/contracts/index.ts +93 -1
  174. package/src/contracts/indicators.contract.ts +80 -0
  175. package/src/contracts/internalReview.contract.ts +48 -0
  176. package/src/contracts/issuingEntity.contract.ts +55 -0
  177. package/src/contracts/mailIntake.contract.ts +49 -0
  178. package/src/contracts/partsOffice.contract.ts +81 -2
  179. package/src/contracts/procedure.contract.ts +11 -27
  180. package/src/contracts/push.contract.ts +41 -0
  181. package/src/contracts/registerBook.contract.ts +24 -0
  182. package/src/contracts/repositoryExport.contract.ts +54 -0
  183. package/src/contracts/retention.contract.ts +44 -0
  184. package/src/contracts/richImage.contract.ts +23 -0
  185. package/src/contracts/scan.contract.ts +52 -0
  186. package/src/contracts/signatureBatch.contract.ts +96 -0
  187. package/src/contracts/signatureCheck.contract.ts +11 -0
  188. package/src/contracts/textSnippet.contract.ts +53 -0
  189. package/src/contracts/transparency.contract.ts +55 -0
  190. package/src/contracts/workFolder.contract.ts +75 -0
  191. package/src/entities/accessRequest/accessRequest.entity.ts +78 -0
  192. package/src/entities/accessRequest/index.ts +1 -0
  193. package/src/entities/archivalSeries/archivalSeries.entity.ts +37 -0
  194. package/src/entities/archivalSeries/index.ts +1 -0
  195. package/src/entities/audit/audit.entity.ts +41 -0
  196. package/src/entities/audit/index.ts +1 -0
  197. package/src/entities/caseFile/caseFile.entity.ts +132 -0
  198. package/src/entities/dataProtection/dataProtection.entity.ts +191 -0
  199. package/src/entities/dataProtection/index.ts +1 -0
  200. package/src/entities/desk/desk.entity.ts +28 -0
  201. package/src/entities/desk/index.ts +1 -0
  202. package/src/entities/document/document.entity.ts +417 -1
  203. package/src/entities/document/index.ts +1 -0
  204. package/src/entities/document/richStyle.ts +193 -0
  205. package/src/entities/documentTemplate/documentTemplate.entity.ts +27 -0
  206. package/src/entities/documentTemplate/index.ts +1 -0
  207. package/src/entities/documentType/documentType.entity.ts +71 -1
  208. package/src/entities/draftingRequest/draftingRequest.entity.ts +78 -0
  209. package/src/entities/draftingRequest/index.ts +1 -0
  210. package/src/entities/holiday/holiday.entity.ts +36 -0
  211. package/src/entities/holiday/index.ts +1 -0
  212. package/src/entities/index.ts +22 -0
  213. package/src/entities/indicators/index.ts +1 -0
  214. package/src/entities/indicators/indicators.entity.ts +157 -0
  215. package/src/entities/internalReview/index.ts +1 -0
  216. package/src/entities/internalReview/internalReview.entity.ts +50 -0
  217. package/src/entities/issuingEntity/index.ts +1 -0
  218. package/src/entities/issuingEntity/issuingEntity.entity.ts +24 -0
  219. package/src/entities/mailIntake/index.ts +1 -0
  220. package/src/entities/mailIntake/mailIntake.entity.ts +55 -0
  221. package/src/entities/partsOffice/partsOffice.entity.ts +35 -0
  222. package/src/entities/procedure/procedure.entity.ts +27 -6
  223. package/src/entities/push/index.ts +1 -0
  224. package/src/entities/push/push.entity.ts +31 -0
  225. package/src/entities/registerBook/index.ts +1 -0
  226. package/src/entities/registerBook/registerBook.entity.ts +52 -0
  227. package/src/entities/repositoryExport/index.ts +1 -0
  228. package/src/entities/repositoryExport/repositoryExport.entity.ts +86 -0
  229. package/src/entities/retention/index.ts +1 -0
  230. package/src/entities/retention/retention.entity.ts +53 -0
  231. package/src/entities/scan/index.ts +1 -0
  232. package/src/entities/scan/scan.entity.ts +32 -0
  233. package/src/entities/signatureBatch/index.ts +1 -0
  234. package/src/entities/signatureBatch/signatureBatch.entity.ts +110 -0
  235. package/src/entities/signatureCheck/index.ts +1 -0
  236. package/src/entities/signatureCheck/signatureCheck.entity.ts +63 -0
  237. package/src/entities/textSnippet/index.ts +1 -0
  238. package/src/entities/textSnippet/textSnippet.entity.ts +24 -0
  239. package/src/entities/transparency/index.ts +1 -0
  240. package/src/entities/transparency/transparency.entity.ts +78 -0
  241. package/src/entities/workFolder/index.ts +1 -0
  242. package/src/entities/workFolder/workFolder.entity.ts +84 -0
  243. package/tsconfig.json +1 -3
@@ -1,13 +1,17 @@
1
1
  import {
2
+ type CommunicationMeans,
2
3
  DocumentAnnulledNumberEntity,
3
4
  DocumentAttachmentEntity,
4
5
  DocumentDeliveryEntity,
5
6
  DocumentEntity,
6
7
  DocumentParticipantEntity,
7
8
  DocumentRecipientEntity,
9
+ type DocumentStatus,
8
10
  DocumentTrackingEntity,
9
11
  DocumentTypeEntity,
10
12
  } from '../../base/entities';
13
+ import { type RichLetterhead, type RichPage, type RichSpacing, type RichTextStyle } from './richStyle';
14
+ import { type DocumentDraftingRequestEntity } from '../draftingRequest/draftingRequest.entity';
11
15
 
12
16
  /** Tipo documental de un documento, con lo necesario para citarlo. */
13
17
  export interface DocumentTypeSummaryEntity {
@@ -21,6 +25,8 @@ export interface DocumentParticipantResponseEntity {
21
25
  id: DocumentParticipantEntity['id'];
22
26
  role: DocumentParticipantEntity['role'];
23
27
  order: DocumentParticipantEntity['order'];
28
+ /** Los visadores de una misma etapa visan a la vez. */
29
+ stage: DocumentParticipantEntity['stage'];
24
30
  status: DocumentParticipantEntity['status'];
25
31
  employeeId: DocumentParticipantEntity['employeeId'];
26
32
  fullName: DocumentParticipantEntity['fullName'];
@@ -99,6 +105,14 @@ export interface DocumentDispatchResponseEntity {
99
105
  returnedAt: string | null;
100
106
  returnedByFullName: string | null;
101
107
  returnReason: string | null;
108
+ /** Registro por contingencia: salió por otro medio porque no se pudo por DocDigital. */
109
+ contingency: {
110
+ means: CommunicationMeans;
111
+ sentTo: string | null;
112
+ reason: string | null;
113
+ /** Nombre del comprobante, si se adjuntó. */
114
+ receiptName: string | null;
115
+ } | null;
102
116
  }
103
117
 
104
118
  export interface DocumentGetAllResponseEntity {
@@ -117,27 +131,57 @@ export interface DocumentGetAllResponseEntity {
117
131
  intakeNumber: DocumentEntity['intakeNumber'];
118
132
  intakeYear: DocumentEntity['intakeYear'];
119
133
  origin: DocumentEntity['origin'];
134
+ /** Con búsqueda de texto completo: el fragmento donde aparece lo buscado, con lo encontrado entre ⟦ y ⟧. */
135
+ snippet?: string | null;
120
136
  // A quién le toca visar o firmar (null si el documento no está en tramitación).
121
137
  currentParticipant: Pick<DocumentParticipantResponseEntity, 'role' | 'employeeId' | 'fullName'> | null;
138
+ // Cuántos más tienen el turno a la vez (visación en paralelo).
139
+ otherCurrentCount: number;
122
140
  // A cuántos funcionarios llegó y cuántos ya lo abrieron (null si aún no se distribuye a nadie).
123
141
  distribution: { total: number; read: number } | null;
124
142
  }
125
143
 
126
144
  /** Una entrada de la bandeja de recibidos: la entrega y el documento al que corresponde. */
145
+ /** Semáforo de un plazo pendiente: a tiempo, por vencer (2 días hábiles o menos) o vencido. */
146
+ export type DocumentDueStatus = 'OnTime' | 'DueSoon' | 'Overdue';
147
+
127
148
  export interface DocumentInboxItemEntity extends DocumentDeliveryResponseEntity {
149
+ /** Semáforo de lo pendiente con plazo (sin plazo o ya atendido, `null`). */
150
+ dueStatus: DocumentDueStatus | null;
151
+ /** Días hábiles que quedan, sin contar hoy (vencido: `null`). */
152
+ businessDaysLeft: number | null;
128
153
  document: DocumentLinkEntity;
129
154
  }
130
155
 
131
156
  export interface DocumentGetByIdResponseEntity {
132
157
  id: DocumentEntity['id'];
158
+ // Quién lo emite: la entidad emisora del tipo (Educación, Salud, Juzgado) o la municipalidad.
159
+ issuerName: string;
160
+ // Serie documental del Cuadro de Clasificación (la de su tipo documental; MGDDE1_2).
161
+ archivalSeries: { id: string; code: string; name: string } | null;
162
+ // Fin de la restricción de acceso: desde entonces se consulta como público si no tiene datos sensibles.
163
+ restrictionEndsAt: string | null;
133
164
  subject: DocumentEntity['subject'];
165
+ /** Resumen breve; va a DocDigital como «descripcion» al despacharlo. */
166
+ description: string | null;
167
+ /** Procedimiento administrativo al que corresponde. */
168
+ procedure: { id: string; name: string; cpatCode: string | null } | null;
134
169
  keywords: DocumentEntity['keywords'];
135
170
  accessLevel: DocumentEntity['accessLevel'];
136
171
  hasSensitiveData: DocumentEntity['hasSensitiveData'];
172
+ /**
173
+ * Formato del archivo vigente: la conformidad PDF/A que declara («PDF/A-2B») o «PDF». `null` si no se revisó (los
174
+ * documentos anteriores a esta revisión, o aún sin firmar).
175
+ */
176
+ fileFormat: DocumentEntity['fileFormat'];
137
177
  status: DocumentEntity['status'];
138
178
  correlative: DocumentEntity['correlative'];
139
179
  correlativeYear: DocumentEntity['correlativeYear'];
140
180
  numberedAt: DocumentEntity['numberedAt'];
181
+ // Número con que llegó el documento, si ya venía numerado: lo toma con la primera firma (y no se pierde si lo
182
+ // rechazan).
183
+ externalCorrelative: DocumentEntity['externalCorrelative'];
184
+ externalCorrelativeYear: DocumentEntity['externalCorrelativeYear'];
141
185
  directorateCodeReference: DocumentEntity['directorateCodeReference'];
142
186
  departmentId: DocumentEntity['departmentId'];
143
187
  createdByEmployeeId: DocumentEntity['createdByEmployeeId'];
@@ -166,14 +210,27 @@ export interface DocumentGetByIdResponseEntity {
166
210
  employeeFullName: DocumentAnnulledNumberEntity['employeeFullName'];
167
211
  createdAt: DocumentAnnulledNumberEntity['createdAt'];
168
212
  }[];
169
- // Plazo en que el redactor espera respuesta de los destinatarios.
213
+ // Plazo en que el redactor espera respuesta de los destinatarios: una fecha o, mientras no se finaliza, N días
214
+ // hábiles desde que lo reciban (al finalizar queda la fecha en `responseDueAt`).
170
215
  responseDueAt: DocumentEntity['responseDueAt'];
216
+ responseDueBusinessDays: number | null;
171
217
  // A quién va dirigido, como lo indicó el redactor (personas y áreas).
172
218
  recipients: DocumentRecipientResponseEntity[];
173
219
  // En la bandeja de quién está: destinatarios y derivaciones, con su lectura y atención.
174
220
  deliveries: DocumentDeliveryResponseEntity[];
175
221
  // Documento al que este responde, y los que le responden (solo los ya finalizados, más los propios de quien consulta).
176
222
  replyTo: DocumentLinkEntity | null;
223
+ /** Lote de firma al que pertenece. */
224
+ batch: { id: string; name: string } | null;
225
+ /** Contenido redactado en el sistema con una plantilla, para volver a editarlo (sin valor si se subió un PDF). */
226
+ composition: DocumentComposition | null;
227
+ /**
228
+ * Revisión del borrador antes de enviarlo a tramitación, si su tipo la exige: qué dirección revisa, las rondas (la
229
+ * más reciente primero) y si la versión vigente ya está aprobada. `null` si el tipo no la exige.
230
+ */
231
+ draftReview: DocumentDraftReviewInfoEntity | null;
232
+ /** Solicitud de redacción que atiende, si se redactó a pedido de otra área. */
233
+ draftingRequest: DocumentDraftingRequestEntity | null;
177
234
  replies: DocumentLinkEntity[];
178
235
  /** Expedientes en que está incorporado y que quien consulta puede ver. */
179
236
  caseFiles: { id: string; code: string; title: string; status: 'Open' | 'Closed' }[];
@@ -187,7 +244,13 @@ export interface DocumentGetByIdResponseEntity {
187
244
  /** Instituciones de DocDigital a quienes va dirigido, y su despacho por Oficina de Partes. */
188
245
  externalRecipients: DocumentExternalRecipientResponseEntity[];
189
246
  dispatch: DocumentDispatchResponseEntity | null;
247
+ // Copias por correo a quienes están fuera del Estado, con su envío y apertura.
248
+ emailCopies: DocumentEmailCopyResponseEntity[];
249
+ // El tipo como estaba en la versión con que se tramita (nombre, sigla y categoría de entonces).
190
250
  documentType: DocumentTypeSummaryEntity;
251
+ // Versión del tipo con que se tramita: la vigente mientras es borrador; desde que se envía, queda fija. `null` si
252
+ // el tipo ya no la tiene registrada.
253
+ documentTypeVersion: { version: number; current: boolean } | null;
191
254
  participants: DocumentParticipantResponseEntity[];
192
255
  attachments: {
193
256
  id: DocumentAttachmentEntity['id'];
@@ -200,6 +263,8 @@ export interface DocumentGetByIdResponseEntity {
200
263
  id: DocumentTrackingEntity['id'];
201
264
  action: DocumentTrackingEntity['action'];
202
265
  observation: DocumentTrackingEntity['observation'];
266
+ // Huella SHA-256 del PDF en ese hecho (firma, despacho o ingreso por DocDigital).
267
+ sha256: DocumentTrackingEntity['sha256'];
203
268
  employeeId: DocumentTrackingEntity['employeeId'];
204
269
  employeeFullName: DocumentTrackingEntity['employeeFullName'];
205
270
  createdAt: DocumentTrackingEntity['createdAt'];
@@ -217,6 +282,8 @@ export interface DocumentGetByIdResponseEntity {
217
282
  canReassign: boolean;
218
283
  /** Quien consulta redactó el documento (o lo ingresó, si llegó por DocDigital). */
219
284
  isAuthor: boolean;
285
+ /** Le toca aprobar o devolver el borrador: es la jefatura de la revisión pendiente. */
286
+ canResolveDraftReview: boolean;
220
287
  // Sus propias entregas de este documento (puede tener más de una si además se lo derivaron).
221
288
  inbox: DocumentDeliveryResponseEntity[];
222
289
  };
@@ -228,6 +295,12 @@ export interface DocumentGetByIdResponseEntity {
228
295
  export interface DocumentGetSummaryResponseEntity {
229
296
  toVisa: number;
230
297
  toSign: number;
298
+ /** Borradores que esperan su revisión (como jefatura de la dirección que los revisa). */
299
+ toReview: number;
300
+ /** Solicitudes de redacción: sin tomar dirigidas a su dirección, y tomadas por él aún sin atender. */
301
+ draftingRequests: { pending: number; taken: number };
302
+ /** Lotes de firma con documentos en su turno (los documentos de un lote no se cuentan en `toVisa` ni `toSign`). */
303
+ batches: { toVisa: number; toSign: number };
231
304
  created: {
232
305
  drafted: number;
233
306
  inProgress: number;
@@ -258,6 +331,29 @@ export interface DocumentReviewResponseEntity {
258
331
  status: DocumentEntity['status'];
259
332
  }
260
333
 
334
+ /** Resultado de un documento en una firma de varios documentos. */
335
+ export interface DocumentSignManyResultEntity {
336
+ id: DocumentEntity['id'];
337
+ ok: boolean;
338
+ /** Estado en que quedó, si se firmó. */
339
+ status?: DocumentEntity['status'];
340
+ /** Por qué no se firmó. */
341
+ message?: string;
342
+ }
343
+
344
+ /**
345
+ * Firma de varios documentos con un solo OTP. FirmaGob admite 5 MB por solicitud: los que no cupieron quedan en
346
+ * `remaining`, en el turno del firmante, para firmarlos con un OTP nuevo.
347
+ */
348
+ export interface DocumentSignManyResponseEntity {
349
+ results: DocumentSignManyResultEntity[];
350
+ signed: number;
351
+ failed: number;
352
+ remaining: DocumentEntity['id'][];
353
+ /** FirmaGob avisó que el OTP venció antes de firmar todos los documentos de la solicitud. */
354
+ otpExpired: boolean;
355
+ }
356
+
261
357
  export interface DocumentDiscardResponseEntity {
262
358
  id: DocumentEntity['id'];
263
359
  ok: boolean;
@@ -284,6 +380,8 @@ export interface DocumentVerifyResponseEntity {
284
380
  state: DocumentVerificationState;
285
381
  verificationCode: string;
286
382
  documentType: Pick<DocumentTypeSummaryEntity, 'name' | 'abbreviation'>;
383
+ // Quién lo emite: la entidad emisora del tipo (Educación, Salud, Juzgado) o la municipalidad.
384
+ issuerName: string;
287
385
  correlative: DocumentEntity['correlative'];
288
386
  correlativeYear: DocumentEntity['correlativeYear'];
289
387
  numberedAt: DocumentEntity['numberedAt'];
@@ -322,3 +420,321 @@ export interface DocumentReassignResponseEntity {
322
420
  id: DocumentEntity['id'];
323
421
  ok: boolean;
324
422
  }
423
+
424
+ /**
425
+ * Un plazo en la agenda de un funcionario: lo que recibió (como destinatario o por derivación) y debe atender, o un
426
+ * documento que envió y del que espera respuesta.
427
+ */
428
+ export interface DocumentAgendaItemEntity {
429
+ kind: 'Received' | 'Sent';
430
+ /** Semáforo de lo pendiente (atendido o ya respondido por todos: `null`). */
431
+ dueStatus: DocumentDueStatus | null;
432
+ /** Días hábiles que quedan, sin contar hoy (vencido: `null`). */
433
+ businessDaysLeft: number | null;
434
+ /** La entrega (lo recibido) o el documento (lo enviado). */
435
+ id: string;
436
+ documentId: DocumentEntity['id'];
437
+ subject: DocumentEntity['subject'];
438
+ documentType: { name: string; abbreviation: string | null };
439
+ correlative: DocumentEntity['correlative'];
440
+ correlativeYear: DocumentEntity['correlativeYear'];
441
+ intakeNumber: DocumentEntity['intakeNumber'];
442
+ intakeYear: DocumentEntity['intakeYear'];
443
+ /** Plazo, en ISO 8601. */
444
+ dueAt: string;
445
+ /** Lo recibido: cuándo lo marcó como atendido (sin valor si sigue pendiente). */
446
+ closedAt: string | null;
447
+ /** Lo recibido: la providencia y quién lo derivó. */
448
+ instruction: DocumentDeliveryEntity['instruction'] | null;
449
+ sentByFullName: string | null;
450
+ /** Lo enviado: a cuántos les llegó y cuántos aún no lo atienden. */
451
+ recipients: { total: number; pending: number } | null;
452
+ }
453
+
454
+ export interface DocumentAgendaResponseEntity {
455
+ /** Plazos dentro del período pedido. */
456
+ items: DocumentAgendaItemEntity[];
457
+ /** Lo recibido con el plazo vencido y sin atender, de cualquier fecha (los 50 más antiguos). */
458
+ overdue: DocumentAgendaItemEntity[];
459
+ }
460
+
461
+ /** Trazabilidad de un documento en PDF, lista para descargar. */
462
+ export interface DocumentTrailExportEntity {
463
+ fileName: string;
464
+ contentType: string;
465
+ contentBase64: string;
466
+ }
467
+
468
+ /** Plantilla oficial con que se redacta un documento en el sistema. */
469
+ export type DocumentTemplateKind = 'Decree' | 'Office' | 'Memorandum' | 'General';
470
+
471
+ /** Formato de un trozo de texto en el editor del gestor. Superíndice y subíndice no van juntos. */
472
+ export type RichMark = 'bold' | 'italic' | 'underline' | 'strike' | 'superscript' | 'subscript';
473
+
474
+ /**
475
+ * Texto con su formato, o un campo de la plantilla (`field`: su clave), que se reemplaza por su valor al armar el PDF.
476
+ * Un salto de línea dentro del texto (`\n`) es un salto de línea del párrafo.
477
+ */
478
+ export type RichInline =
479
+ | { text: string; marks?: RichMark[]; style?: RichTextStyle }
480
+ | { field: string; marks?: RichMark[]; style?: RichTextStyle };
481
+
482
+ export type RichAlign = 'left' | 'center' | 'right' | 'justify';
483
+
484
+ /** Numeración de una lista: viñetas, «1.» o la de los decretos, «1.-». */
485
+ export type RichListStyle = 'bullet' | 'decimal' | 'decree';
486
+
487
+ /**
488
+ * Cómo se ve una tabla: con bordes (`grid`), o como las líneas «DE:», «A:», «MAT.:» de un oficio, con la etiqueta en
489
+ * negrita y sin bordes (`labels`, o `labelsRight`, en la mitad derecha, como «ANT.» y «MAT.» de un oficio).
490
+ */
491
+ export type RichTableVariant = 'grid' | 'labels' | 'labelsRight';
492
+
493
+ /**
494
+ * Un bloque del texto. Los de una plantilla pueden ser fijos (`locked`): quien redacta no los cambia. Las listas son
495
+ * bloques seguidos del mismo estilo (su nivel es la sangría, desde 0); un título o un párrafo reinicia la numeración.
496
+ */
497
+ export type RichBlock =
498
+ | { id: string; type: 'paragraph'; align?: RichAlign; spacing?: RichSpacing; locked?: boolean; content: RichInline[] }
499
+ | {
500
+ id: string;
501
+ type: 'heading';
502
+ level: 1 | 2;
503
+ align?: RichAlign;
504
+ spacing?: RichSpacing;
505
+ locked?: boolean;
506
+ content: RichInline[];
507
+ }
508
+ | {
509
+ id: string;
510
+ type: 'listItem';
511
+ list: RichListStyle;
512
+ level: number;
513
+ spacing?: RichSpacing;
514
+ locked?: boolean;
515
+ content: RichInline[];
516
+ }
517
+ /** Imagen registrada en el gestor (`imageId`), con su ancho en puntos (sin pasar el del texto) y alineación. */
518
+ | {
519
+ id: string;
520
+ type: 'image';
521
+ imageId: string;
522
+ width: number;
523
+ align?: 'left' | 'center' | 'right';
524
+ caption?: string;
525
+ locked?: boolean;
526
+ }
527
+ /** `rows[fila][columna]`: el contenido de cada celda. */
528
+ | { id: string; type: 'table'; variant: RichTableVariant; locked?: boolean; rows: RichInline[][][] }
529
+ | { id: string; type: 'rule'; locked?: boolean }
530
+ | { id: string; type: 'pageBreak'; locked?: boolean };
531
+
532
+ /**
533
+ * Campo de una plantilla, con el valor que le dio quien redacta. `materia` es el asunto del documento: no se escribe
534
+ * aparte.
535
+ */
536
+ export interface RichField {
537
+ key: string;
538
+ label: string;
539
+ value: string;
540
+ required?: boolean;
541
+ }
542
+
543
+ /**
544
+ * Contenido de un documento redactado en el sistema. Cada plantilla tiene su estructura; los párrafos son texto
545
+ * (un salto de línea dentro de un párrafo se respeta). La materia es el asunto del documento.
546
+ */
547
+ export type DocumentComposition =
548
+ | {
549
+ template: 'Decree';
550
+ /** VISTOS: las normas y antecedentes. */
551
+ vistos: string[];
552
+ /** CONSIDERANDO: cada fundamento, numerado. */
553
+ considerando: string[];
554
+ /** DECRETO: cada punto resolutivo, numerado. */
555
+ resolutive: string[];
556
+ /** Fórmula de cierre: «Anótese, comuníquese y archívese». */
557
+ closing: string;
558
+ distribution: string[];
559
+ }
560
+ | {
561
+ template: 'Office';
562
+ /** ANT.: antecedentes (otro oficio, una solicitud). */
563
+ antecedents?: string | null;
564
+ from: string;
565
+ to: string;
566
+ body: string[];
567
+ closing: string;
568
+ distribution: string[];
569
+ }
570
+ | {
571
+ template: 'Memorandum';
572
+ from: string;
573
+ to: string;
574
+ body: string[];
575
+ closing?: string | null;
576
+ distribution: string[];
577
+ }
578
+ | { template: 'General'; title: string; body: string[]; closing?: string | null }
579
+ /**
580
+ * Redactado con el editor del gestor: los bloques del texto, los campos de la plantilla con su valor y la
581
+ * distribución. `templateKey` y `templateVersion`: de qué plantilla salió, si salió de una.
582
+ */
583
+ | {
584
+ template: 'Rich';
585
+ templateKey?: string | null;
586
+ templateVersion?: number | null;
587
+ blocks: RichBlock[];
588
+ fields: RichField[];
589
+ distribution: string[];
590
+ /** Página y membrete. En una plantilla propia los pone su versión: lo que mande el navegador no cuenta. */
591
+ page?: RichPage;
592
+ letterhead?: RichLetterhead;
593
+ };
594
+
595
+ /** PDF armado con una plantilla: para la vista previa (`contentBase64`) o ya subido (`fileId`). */
596
+ export interface DocumentComposeResponseEntity {
597
+ fileName: string;
598
+ fileId?: string;
599
+ contentBase64?: string;
600
+ }
601
+
602
+ /** Copia por correo de un documento, como la ve quien lo consulta en el gestor. */
603
+ export interface DocumentEmailCopyResponseEntity {
604
+ id: string;
605
+ name: string;
606
+ email: string;
607
+ /** Cuándo se envió (sin valor: aún no corresponde). */
608
+ issuedAt: string | null;
609
+ expiresAt: string | null;
610
+ openedAt: string | null;
611
+ downloadCount: number;
612
+ }
613
+
614
+ /** Copia recién emitida: el gateway le envía el enlace a su destinatario. El token viaja solo aquí. */
615
+ export interface DocumentEmailCopyIssuedEntity {
616
+ copyId: string;
617
+ documentId: string;
618
+ name: string;
619
+ email: string;
620
+ token: string;
621
+ expiresAt: string;
622
+ /** Cómo se cita: «D.E. N° 590/2026», o el tipo si no lleva número. */
623
+ folio: string;
624
+ subject: string;
625
+ issuerName: string;
626
+ }
627
+
628
+ /** El documento como lo ve quien abre su copia por correo. */
629
+ export interface DocumentEmailCopyViewEntity {
630
+ recipientName: string;
631
+ expiresAt: string;
632
+ documentTypeName: string;
633
+ folio: string;
634
+ subject: string;
635
+ issuerName: string;
636
+ finishedAt: string | null;
637
+ verificationCode: string | null;
638
+ signers: { fullName: string; position: string | null; signedAt: string | null }[];
639
+ }
640
+
641
+ /** Recordatorio de un plazo: al recibido y, si venció, también a su jefatura (la resuelve el gateway). */
642
+ export interface DocumentReminderEntity {
643
+ deliveryId: string;
644
+ kind: 'DueSoon' | 'Overdue';
645
+ employeeId: string;
646
+ fullName: string;
647
+ documentId: string;
648
+ /** Cómo se cita: «D.E. N° 590/2026», el folio de ingreso o el tipo. */
649
+ folio: string;
650
+ subject: string;
651
+ dueAt: string;
652
+ instruction: DocumentDeliveryEntity['instruction'];
653
+ sentByFullName: string | null;
654
+ }
655
+
656
+ /** Quien visó, firmó o rechazó una versión, según la trazabilidad. */
657
+ export interface DocumentVersionReviewEntity {
658
+ action: 'Visaed' | 'Signed' | 'Rejected';
659
+ employeeFullName: string;
660
+ createdAt: string;
661
+ }
662
+
663
+ /** Una versión de un documento: lo que se guardó cada vez que cambió su PDF, su texto o su asunto. */
664
+ export interface DocumentVersionResponseEntity {
665
+ number: number;
666
+ subject: string;
667
+ fileName: string;
668
+ sha256: string | null;
669
+ /** Lo redactado con plantilla, para compararla con otra versión. `null` si se subió un PDF. */
670
+ composition: DocumentComposition | null;
671
+ note: string | null;
672
+ status: DocumentStatus;
673
+ createdByFullName: string;
674
+ createdAt: string;
675
+ /** Visaciones, firmas y rechazos mientras fue la versión vigente. */
676
+ reviews: DocumentVersionReviewEntity[];
677
+ }
678
+
679
+ /** Comentario de redacción de un visador, un firmante o el redactor. */
680
+ export interface DocumentCommentResponseEntity {
681
+ id: string;
682
+ versionNumber: number;
683
+ section: string | null;
684
+ quote: string | null;
685
+ text: string;
686
+ authorEmployeeId: string;
687
+ authorFullName: string;
688
+ /** `Review`: la jefatura que revisa el borrador antes de enviarlo a tramitación. */
689
+ authorRole: 'Author' | 'Visa' | 'Signature' | 'Review';
690
+ createdAt: string;
691
+ resolvedAt: string | null;
692
+ resolvedByFullName: string | null;
693
+ resolutionNote: string | null;
694
+ /** Quien consulta lo puede marcar como resuelto: el redactor o quien lo escribió, mientras el documento se tramita. */
695
+ canResolve: boolean;
696
+ }
697
+
698
+ export interface DocumentCommentsResponseEntity {
699
+ comments: DocumentCommentResponseEntity[];
700
+ /** Quien consulta puede comentar: es el redactor o tiene un turno, y el documento no ha terminado. */
701
+ canComment: boolean;
702
+ currentVersion: number;
703
+ }
704
+
705
+ /** Una ronda de revisión del borrador. */
706
+ export interface DocumentDraftReviewRoundEntity {
707
+ id: string;
708
+ round: number;
709
+ /** Versión del borrador que se revisó. */
710
+ versionNumber: number;
711
+ directorateName: string;
712
+ reviewerEmployeeId: string;
713
+ reviewerFullName: string;
714
+ requestedByFullName: string;
715
+ requestedAt: string;
716
+ status: 'Pending' | 'Approved' | 'Rejected' | 'Cancelled';
717
+ observation: string | null;
718
+ resolvedAt: string | null;
719
+ }
720
+
721
+ /** La revisión del borrador que exige el tipo documental. */
722
+ export interface DocumentDraftReviewInfoEntity {
723
+ directorateCodeReference: number;
724
+ directorateName: string;
725
+ rounds: DocumentDraftReviewRoundEntity[];
726
+ /** La versión vigente del borrador está aprobada: se puede enviar a tramitación. */
727
+ approved: boolean;
728
+ /** Hay una ronda esperando respuesta: el borrador no se edita mientras tanto. */
729
+ pending: boolean;
730
+ }
731
+
732
+ /** Resultado de pedir, resolver o retirar una revisión del borrador. */
733
+ export interface DocumentDraftReviewResponseEntity {
734
+ id: string;
735
+ ok: boolean;
736
+ round: number;
737
+ status: DocumentDraftReviewRoundEntity['status'];
738
+ /** A quién avisar: la jefatura revisora (al pedirla) o el redactor (al resolverla). */
739
+ notify: { employeeId: string; fullName: string } | null;
740
+ }
@@ -1 +1,2 @@
1
1
  export * from './document.entity';
2
+ export * from './richStyle';