@muni-sanfer/types-gestor-documental 0.0.1-beta.4 → 0.0.1-beta.41

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 (232) hide show
  1. package/dist/base/entities.d.ts +1024 -4
  2. package/dist/base/entities.js +248 -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 +219 -3
  16. package/dist/contracts/document.contract.js +15 -0
  17. package/dist/contracts/documentTemplate.contract.d.ts +58 -0
  18. package/dist/contracts/documentTemplate.contract.js +12 -0
  19. package/dist/contracts/documentType.contract.d.ts +13 -1
  20. package/dist/contracts/draftingRequest.contract.d.ts +94 -0
  21. package/dist/contracts/draftingRequest.contract.js +11 -0
  22. package/dist/contracts/holiday.contract.d.ts +30 -0
  23. package/dist/contracts/holiday.contract.js +9 -0
  24. package/dist/contracts/index.d.ts +265 -1
  25. package/dist/contracts/index.js +69 -0
  26. package/dist/contracts/indicators.contract.d.ts +103 -0
  27. package/dist/contracts/indicators.contract.js +15 -0
  28. package/dist/contracts/internalReview.contract.d.ts +86 -0
  29. package/dist/contracts/internalReview.contract.js +12 -0
  30. package/dist/contracts/issuingEntity.contract.d.ts +52 -0
  31. package/dist/contracts/issuingEntity.contract.js +11 -0
  32. package/dist/contracts/mailIntake.contract.d.ts +61 -0
  33. package/dist/contracts/mailIntake.contract.js +15 -0
  34. package/dist/contracts/partsOffice.contract.d.ts +263 -0
  35. package/dist/contracts/partsOffice.contract.js +27 -0
  36. package/dist/contracts/push.contract.d.ts +59 -0
  37. package/dist/contracts/push.contract.js +14 -0
  38. package/dist/contracts/registerBook.contract.d.ts +27 -0
  39. package/dist/contracts/registerBook.contract.js +8 -0
  40. package/dist/contracts/repositoryExport.contract.d.ts +57 -0
  41. package/dist/contracts/repositoryExport.contract.js +13 -0
  42. package/dist/contracts/retention.contract.d.ts +58 -0
  43. package/dist/contracts/retention.contract.js +11 -0
  44. package/dist/contracts/scan.contract.d.ts +63 -0
  45. package/dist/contracts/scan.contract.js +12 -0
  46. package/dist/contracts/signatureBatch.contract.d.ts +109 -0
  47. package/dist/contracts/signatureBatch.contract.js +12 -0
  48. package/dist/contracts/signatureCheck.contract.d.ts +14 -0
  49. package/dist/contracts/signatureCheck.contract.js +7 -0
  50. package/dist/contracts/textSnippet.contract.d.ts +51 -0
  51. package/dist/contracts/textSnippet.contract.js +11 -0
  52. package/dist/contracts/transparency.contract.d.ts +96 -0
  53. package/dist/contracts/transparency.contract.js +12 -0
  54. package/dist/contracts/workFolder.contract.d.ts +114 -0
  55. package/dist/contracts/workFolder.contract.js +16 -0
  56. package/dist/entities/accessRequest/accessRequest.entity.d.ts +73 -0
  57. package/dist/entities/accessRequest/accessRequest.entity.js +2 -0
  58. package/dist/entities/accessRequest/index.d.ts +1 -0
  59. package/dist/entities/accessRequest/index.js +17 -0
  60. package/dist/entities/archivalSeries/archivalSeries.entity.d.ts +32 -0
  61. package/dist/entities/archivalSeries/archivalSeries.entity.js +2 -0
  62. package/dist/entities/archivalSeries/index.d.ts +1 -0
  63. package/dist/entities/archivalSeries/index.js +17 -0
  64. package/dist/entities/audit/audit.entity.d.ts +30 -0
  65. package/dist/entities/audit/audit.entity.js +2 -0
  66. package/dist/entities/audit/index.d.ts +1 -0
  67. package/dist/entities/audit/index.js +17 -0
  68. package/dist/entities/caseFile/caseFile.entity.d.ts +135 -0
  69. package/dist/entities/dataProtection/dataProtection.entity.d.ts +180 -0
  70. package/dist/entities/dataProtection/dataProtection.entity.js +2 -0
  71. package/dist/entities/dataProtection/index.d.ts +1 -0
  72. package/dist/entities/dataProtection/index.js +17 -0
  73. package/dist/entities/desk/desk.entity.d.ts +25 -0
  74. package/dist/entities/desk/desk.entity.js +2 -0
  75. package/dist/entities/desk/index.d.ts +1 -0
  76. package/dist/entities/desk/index.js +17 -0
  77. package/dist/entities/document/document.entity.d.ts +436 -1
  78. package/dist/entities/documentTemplate/documentTemplate.entity.d.ts +51 -0
  79. package/dist/entities/documentTemplate/documentTemplate.entity.js +2 -0
  80. package/dist/entities/documentTemplate/index.d.ts +1 -0
  81. package/dist/entities/documentTemplate/index.js +17 -0
  82. package/dist/entities/documentType/documentType.entity.d.ts +25 -0
  83. package/dist/entities/draftingRequest/draftingRequest.entity.d.ts +76 -0
  84. package/dist/entities/draftingRequest/draftingRequest.entity.js +2 -0
  85. package/dist/entities/draftingRequest/index.d.ts +1 -0
  86. package/dist/entities/draftingRequest/index.js +17 -0
  87. package/dist/entities/holiday/holiday.entity.d.ts +10 -0
  88. package/dist/entities/holiday/holiday.entity.js +2 -0
  89. package/dist/entities/holiday/index.d.ts +1 -0
  90. package/dist/entities/holiday/index.js +17 -0
  91. package/dist/entities/index.d.ts +23 -0
  92. package/dist/entities/index.js +23 -0
  93. package/dist/entities/indicators/index.d.ts +1 -0
  94. package/dist/entities/indicators/index.js +17 -0
  95. package/dist/entities/indicators/indicators.entity.d.ts +152 -0
  96. package/dist/entities/indicators/indicators.entity.js +2 -0
  97. package/dist/entities/internalReview/index.d.ts +1 -0
  98. package/dist/entities/internalReview/index.js +17 -0
  99. package/dist/entities/internalReview/internalReview.entity.d.ts +59 -0
  100. package/dist/entities/internalReview/internalReview.entity.js +2 -0
  101. package/dist/entities/issuingEntity/index.d.ts +1 -0
  102. package/dist/entities/issuingEntity/index.js +17 -0
  103. package/dist/entities/issuingEntity/issuingEntity.entity.d.ts +20 -0
  104. package/dist/entities/issuingEntity/issuingEntity.entity.js +2 -0
  105. package/dist/entities/mailIntake/index.d.ts +1 -0
  106. package/dist/entities/mailIntake/index.js +17 -0
  107. package/dist/entities/mailIntake/mailIntake.entity.d.ts +51 -0
  108. package/dist/entities/mailIntake/mailIntake.entity.js +2 -0
  109. package/dist/entities/partsOffice/index.d.ts +1 -0
  110. package/dist/entities/partsOffice/index.js +17 -0
  111. package/dist/entities/partsOffice/partsOffice.entity.d.ts +137 -0
  112. package/dist/entities/partsOffice/partsOffice.entity.js +2 -0
  113. package/dist/entities/push/index.d.ts +1 -0
  114. package/dist/entities/push/index.js +17 -0
  115. package/dist/entities/push/push.entity.d.ts +28 -0
  116. package/dist/entities/push/push.entity.js +2 -0
  117. package/dist/entities/registerBook/index.d.ts +1 -0
  118. package/dist/entities/registerBook/index.js +17 -0
  119. package/dist/entities/registerBook/registerBook.entity.d.ts +48 -0
  120. package/dist/entities/registerBook/registerBook.entity.js +2 -0
  121. package/dist/entities/repositoryExport/index.d.ts +1 -0
  122. package/dist/entities/repositoryExport/index.js +17 -0
  123. package/dist/entities/repositoryExport/repositoryExport.entity.d.ts +124 -0
  124. package/dist/entities/repositoryExport/repositoryExport.entity.js +2 -0
  125. package/dist/entities/retention/index.d.ts +1 -0
  126. package/dist/entities/retention/index.js +17 -0
  127. package/dist/entities/retention/retention.entity.d.ts +49 -0
  128. package/dist/entities/retention/retention.entity.js +2 -0
  129. package/dist/entities/scan/index.d.ts +1 -0
  130. package/dist/entities/scan/index.js +17 -0
  131. package/dist/entities/scan/scan.entity.d.ts +29 -0
  132. package/dist/entities/scan/scan.entity.js +2 -0
  133. package/dist/entities/signatureBatch/index.d.ts +1 -0
  134. package/dist/entities/signatureBatch/index.js +17 -0
  135. package/dist/entities/signatureBatch/signatureBatch.entity.d.ts +107 -0
  136. package/dist/entities/signatureBatch/signatureBatch.entity.js +2 -0
  137. package/dist/entities/signatureCheck/index.d.ts +1 -0
  138. package/dist/entities/signatureCheck/index.js +17 -0
  139. package/dist/entities/signatureCheck/signatureCheck.entity.d.ts +60 -0
  140. package/dist/entities/signatureCheck/signatureCheck.entity.js +2 -0
  141. package/dist/entities/textSnippet/index.d.ts +1 -0
  142. package/dist/entities/textSnippet/index.js +17 -0
  143. package/dist/entities/textSnippet/textSnippet.entity.d.ts +20 -0
  144. package/dist/entities/textSnippet/textSnippet.entity.js +2 -0
  145. package/dist/entities/transparency/index.d.ts +1 -0
  146. package/dist/entities/transparency/index.js +17 -0
  147. package/dist/entities/transparency/transparency.entity.d.ts +77 -0
  148. package/dist/entities/transparency/transparency.entity.js +2 -0
  149. package/dist/entities/workFolder/index.d.ts +1 -0
  150. package/dist/entities/workFolder/index.js +17 -0
  151. package/dist/entities/workFolder/workFolder.entity.d.ts +83 -0
  152. package/dist/entities/workFolder/workFolder.entity.js +2 -0
  153. package/package.json +1 -1
  154. package/src/base/entities.ts +1197 -4
  155. package/src/contracts/accessRequest.contract.ts +81 -0
  156. package/src/contracts/archivalSeries.contract.ts +59 -0
  157. package/src/contracts/audit.contract.ts +30 -0
  158. package/src/contracts/caseFile.contract.ts +107 -2
  159. package/src/contracts/dataProtection.contract.ts +197 -0
  160. package/src/contracts/desk.contract.ts +72 -0
  161. package/src/contracts/document.contract.ts +202 -2
  162. package/src/contracts/documentTemplate.contract.ts +61 -0
  163. package/src/contracts/documentType.contract.ts +29 -3
  164. package/src/contracts/draftingRequest.contract.ts +73 -0
  165. package/src/contracts/holiday.contract.ts +16 -0
  166. package/src/contracts/index.ts +96 -1
  167. package/src/contracts/indicators.contract.ts +80 -0
  168. package/src/contracts/internalReview.contract.ts +66 -0
  169. package/src/contracts/issuingEntity.contract.ts +55 -0
  170. package/src/contracts/mailIntake.contract.ts +49 -0
  171. package/src/contracts/partsOffice.contract.ts +199 -0
  172. package/src/contracts/push.contract.ts +41 -0
  173. package/src/contracts/registerBook.contract.ts +24 -0
  174. package/src/contracts/repositoryExport.contract.ts +54 -0
  175. package/src/contracts/retention.contract.ts +44 -0
  176. package/src/contracts/scan.contract.ts +52 -0
  177. package/src/contracts/signatureBatch.contract.ts +96 -0
  178. package/src/contracts/signatureCheck.contract.ts +11 -0
  179. package/src/contracts/textSnippet.contract.ts +53 -0
  180. package/src/contracts/transparency.contract.ts +55 -0
  181. package/src/contracts/workFolder.contract.ts +75 -0
  182. package/src/entities/accessRequest/accessRequest.entity.ts +78 -0
  183. package/src/entities/accessRequest/index.ts +1 -0
  184. package/src/entities/archivalSeries/archivalSeries.entity.ts +37 -0
  185. package/src/entities/archivalSeries/index.ts +1 -0
  186. package/src/entities/audit/audit.entity.ts +41 -0
  187. package/src/entities/audit/index.ts +1 -0
  188. package/src/entities/caseFile/caseFile.entity.ts +132 -0
  189. package/src/entities/dataProtection/dataProtection.entity.ts +191 -0
  190. package/src/entities/dataProtection/index.ts +1 -0
  191. package/src/entities/desk/desk.entity.ts +28 -0
  192. package/src/entities/desk/index.ts +1 -0
  193. package/src/entities/document/document.entity.ts +412 -0
  194. package/src/entities/documentTemplate/documentTemplate.entity.ts +58 -0
  195. package/src/entities/documentTemplate/index.ts +1 -0
  196. package/src/entities/documentType/documentType.entity.ts +19 -0
  197. package/src/entities/draftingRequest/draftingRequest.entity.ts +78 -0
  198. package/src/entities/draftingRequest/index.ts +1 -0
  199. package/src/entities/holiday/holiday.entity.ts +11 -0
  200. package/src/entities/holiday/index.ts +1 -0
  201. package/src/entities/index.ts +23 -0
  202. package/src/entities/indicators/index.ts +1 -0
  203. package/src/entities/indicators/indicators.entity.ts +157 -0
  204. package/src/entities/internalReview/index.ts +1 -0
  205. package/src/entities/internalReview/internalReview.entity.ts +57 -0
  206. package/src/entities/issuingEntity/index.ts +1 -0
  207. package/src/entities/issuingEntity/issuingEntity.entity.ts +24 -0
  208. package/src/entities/mailIntake/index.ts +1 -0
  209. package/src/entities/mailIntake/mailIntake.entity.ts +55 -0
  210. package/src/entities/partsOffice/index.ts +1 -0
  211. package/src/entities/partsOffice/partsOffice.entity.ts +138 -0
  212. package/src/entities/push/index.ts +1 -0
  213. package/src/entities/push/push.entity.ts +31 -0
  214. package/src/entities/registerBook/index.ts +1 -0
  215. package/src/entities/registerBook/registerBook.entity.ts +52 -0
  216. package/src/entities/repositoryExport/index.ts +1 -0
  217. package/src/entities/repositoryExport/repositoryExport.entity.ts +86 -0
  218. package/src/entities/retention/index.ts +1 -0
  219. package/src/entities/retention/retention.entity.ts +53 -0
  220. package/src/entities/scan/index.ts +1 -0
  221. package/src/entities/scan/scan.entity.ts +32 -0
  222. package/src/entities/signatureBatch/index.ts +1 -0
  223. package/src/entities/signatureBatch/signatureBatch.entity.ts +110 -0
  224. package/src/entities/signatureCheck/index.ts +1 -0
  225. package/src/entities/signatureCheck/signatureCheck.entity.ts +63 -0
  226. package/src/entities/textSnippet/index.ts +1 -0
  227. package/src/entities/textSnippet/textSnippet.entity.ts +24 -0
  228. package/src/entities/transparency/index.ts +1 -0
  229. package/src/entities/transparency/transparency.entity.ts +78 -0
  230. package/src/entities/workFolder/index.ts +1 -0
  231. package/src/entities/workFolder/workFolder.entity.ts +84 -0
  232. package/tsconfig.json +1 -3
@@ -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
+ }
@@ -0,0 +1,75 @@
1
+ import {
2
+ type WorkFolderConvertInput,
3
+ type WorkFolderConvertResponseEntity,
4
+ type WorkFolderGetAllResponseEntity,
5
+ type WorkFolderGetByIdResponseEntity,
6
+ type WorkFolderWriteResponseEntity,
7
+ } from '../entities';
8
+ import { type RpcPage } from './contract';
9
+ import { type DocumentActor } from './document.contract';
10
+
11
+ /** Patrones NATS de `workFolder` (carpetas de trabajo): `<servicio>.<recurso>.<acción>`. */
12
+ export const WorkFolderPatterns = {
13
+ getAll: 'gestorDocumental.workFolder.getAll',
14
+ getById: 'gestorDocumental.workFolder.getById',
15
+ create: 'gestorDocumental.workFolder.create',
16
+ update: 'gestorDocumental.workFolder.update',
17
+ share: 'gestorDocumental.workFolder.share',
18
+ unshare: 'gestorDocumental.workFolder.unshare',
19
+ addItem: 'gestorDocumental.workFolder.addItem',
20
+ removeItem: 'gestorDocumental.workFolder.removeItem',
21
+ remove: 'gestorDocumental.workFolder.remove',
22
+ convert: 'gestorDocumental.workFolder.convert',
23
+ } as const;
24
+
25
+ /** Lo que se agrega a una carpeta: un documento finalizado del gestor o un archivo ya subido. */
26
+ export type WorkFolderItemInput =
27
+ { kind: 'Document'; documentId: string } | { kind: 'File'; fileId: string; fileName: string; title: string };
28
+
29
+ type TActor = { actor: DocumentActor };
30
+
31
+ /**
32
+ * Carpetas de trabajo: agrupan y comparten documentos y archivos sin procedimiento asociado. Las ven su responsable y
33
+ * aquellos con quienes la compartió.
34
+ */
35
+ export interface WorkFolderContract {
36
+ [WorkFolderPatterns.getAll]: {
37
+ payload: { pagination?: { page?: number; limit?: number }; filters?: { search?: string } } & TActor;
38
+ response: RpcPage<WorkFolderGetAllResponseEntity[]>;
39
+ };
40
+ [WorkFolderPatterns.getById]: { payload: { id: string } & TActor; response: WorkFolderGetByIdResponseEntity };
41
+ [WorkFolderPatterns.create]: {
42
+ payload: { name: string; description?: string | null } & TActor;
43
+ response: WorkFolderWriteResponseEntity;
44
+ };
45
+ [WorkFolderPatterns.update]: {
46
+ payload: { id: string; name: string; description?: string | null } & TActor;
47
+ response: WorkFolderWriteResponseEntity;
48
+ };
49
+ [WorkFolderPatterns.share]: {
50
+ payload: { id: string; employeeIds: string[] } & TActor;
51
+ response: WorkFolderWriteResponseEntity;
52
+ };
53
+ [WorkFolderPatterns.unshare]: {
54
+ payload: { id: string; participantId: string } & TActor;
55
+ response: WorkFolderWriteResponseEntity;
56
+ };
57
+ [WorkFolderPatterns.addItem]: {
58
+ payload: { id: string; item: WorkFolderItemInput } & TActor;
59
+ response: WorkFolderWriteResponseEntity;
60
+ };
61
+ [WorkFolderPatterns.removeItem]: {
62
+ payload: { id: string; itemId: string } & TActor;
63
+ response: WorkFolderWriteResponseEntity;
64
+ };
65
+ /** La carpeta deja de verse. Lo que contiene no se toca: los documentos siguen en el gestor. */
66
+ [WorkFolderPatterns.remove]: { payload: { id: string } & TActor; response: WorkFolderWriteResponseEntity };
67
+ /**
68
+ * La convierte en expediente: lo crea con estos metadatos, lo comparte con los mismos funcionarios e incorpora sus
69
+ * ítems al índice en el orden en que se agregaron. Desde ahí la carpeta queda solo de consulta.
70
+ */
71
+ [WorkFolderPatterns.convert]: {
72
+ payload: { id: string } & WorkFolderConvertInput & TActor;
73
+ response: WorkFolderConvertResponseEntity;
74
+ };
75
+ }
@@ -0,0 +1,78 @@
1
+ import {
2
+ type AccessRequestChannel,
3
+ type AccessRequestEventAction,
4
+ type AccessRequestResolution,
5
+ type AccessRequestStatus,
6
+ } from '../../base/entities';
7
+
8
+ /** Semáforo del plazo de respuesta: a tiempo, por vencer (2 días hábiles o menos) o vencido. */
9
+ export type AccessRequestDueStatus = 'OnTime' | 'DueSoon' | 'Overdue';
10
+
11
+ export interface AccessRequestListItemEntity {
12
+ id: string;
13
+ /** «N° 15/2026». */
14
+ label: string;
15
+ externalFolio: string | null;
16
+ channel: AccessRequestChannel;
17
+ requesterName: string;
18
+ requestText: string;
19
+ receivedAt: string;
20
+ dueAt: string;
21
+ status: AccessRequestStatus;
22
+ resolution: AccessRequestResolution | null;
23
+ assigneeFullName: string | null;
24
+ /** Solo mientras está abierta. */
25
+ dueStatus: AccessRequestDueStatus | null;
26
+ businessDaysLeft: number | null;
27
+ /** Ya resuelta: si se respondió dentro del plazo. */
28
+ resolvedOnTime: boolean | null;
29
+ }
30
+
31
+ export interface AccessRequestDocumentLinkEntity {
32
+ id: string;
33
+ folio: string | null;
34
+ subject: string;
35
+ }
36
+
37
+ export interface AccessRequestDetailEntity extends AccessRequestListItemEntity {
38
+ year: number;
39
+ number: number;
40
+ requesterEmail: string | null;
41
+ requesterAddress: string | null;
42
+ deliveryFormat: string | null;
43
+ correctionRequestedAt: string | null;
44
+ correctionDueAt: string | null;
45
+ correctedAt: string | null;
46
+ extendedAt: string | null;
47
+ extensionNote: string | null;
48
+ assigneeEmployeeId: string | null;
49
+ thirdPartyNotifiedAt: string | null;
50
+ oppositionDueAt: string | null;
51
+ thirdPartyOpposed: boolean | null;
52
+ resolvedAt: string | null;
53
+ denialGrounds: string[];
54
+ derivedTo: string | null;
55
+ resolutionNote: string | null;
56
+ responseDocument: AccessRequestDocumentLinkEntity | null;
57
+ documents: AccessRequestDocumentLinkEntity[];
58
+ appealedAt: string | null;
59
+ appealNote: string | null;
60
+ createdByFullName: string;
61
+ /** Se puede prorrogar: abierta, sin prórroga y antes de vencer. */
62
+ canExtend: boolean;
63
+ events: { action: AccessRequestEventAction; note: string | null; employeeFullName: string; createdAt: string }[];
64
+ }
65
+
66
+ export interface AccessRequestSummaryEntity {
67
+ year: number;
68
+ total: number;
69
+ open: number;
70
+ overdue: number;
71
+ dueSoon: number;
72
+ resolved: Record<AccessRequestResolution, number>;
73
+ /** Respondidas dentro del plazo sobre las respondidas, en %. */
74
+ onTimeRate: number | null;
75
+ /** Días hábiles promedio entre el ingreso (o la subsanación) y la respuesta. */
76
+ averageBusinessDays: number | null;
77
+ appealed: number;
78
+ }
@@ -0,0 +1 @@
1
+ export * from './accessRequest.entity';
@@ -0,0 +1,37 @@
1
+ import { ArchivalSeriesEntity } from '../../base/entities';
2
+
3
+ export interface ArchivalSeriesGetAllResponseEntity {
4
+ id: ArchivalSeriesEntity['id'];
5
+ code: ArchivalSeriesEntity['code'];
6
+ name: ArchivalSeriesEntity['name'];
7
+ section: ArchivalSeriesEntity['section'];
8
+ description: ArchivalSeriesEntity['description'];
9
+ enabled: ArchivalSeriesEntity['enabled'];
10
+ /** Tabla de Retención Documental: años en archivo de gestión y central, y qué se hace después. */
11
+ managementYears: ArchivalSeriesEntity['managementYears'];
12
+ centralYears: ArchivalSeriesEntity['centralYears'];
13
+ finalDisposition: ArchivalSeriesEntity['finalDisposition'];
14
+ retentionNote: ArchivalSeriesEntity['retentionNote'];
15
+ /** Cuántos tipos documentales y expedientes la usan. */
16
+ documentTypes: number;
17
+ caseFiles: number;
18
+ }
19
+
20
+ export type ArchivalSeriesGetByIdResponseEntity = ArchivalSeriesGetAllResponseEntity;
21
+
22
+ /** Cómo se cita una serie donde se usa: código y nombre. */
23
+ export interface ArchivalSeriesSummaryEntity {
24
+ id: string;
25
+ code: string;
26
+ name: string;
27
+ }
28
+
29
+ export interface ArchivalSeriesCreateResponseEntity {
30
+ id: ArchivalSeriesEntity['id'];
31
+ ok: boolean;
32
+ }
33
+
34
+ export interface ArchivalSeriesUpdateResponseEntity {
35
+ id: ArchivalSeriesEntity['id'];
36
+ ok: boolean;
37
+ }
@@ -0,0 +1 @@
1
+ export * from './archivalSeries.entity';
@@ -0,0 +1,41 @@
1
+ import { type AuditEntity } from '../../base/entities';
2
+
3
+ /** De dónde sale un hecho de la auditoría. */
4
+ export type AuditSource =
5
+ | 'Document'
6
+ | 'DocumentAccess'
7
+ | 'CaseFile'
8
+ | 'CaseFileAccess'
9
+ | 'Configuration'
10
+ | 'AccessRequest'
11
+ | 'DataRights'
12
+ | 'DataBreach';
13
+
14
+ /**
15
+ * Un hecho de la auditoría, de cualquiera de los registros: trazabilidad de documentos y expedientes, accesos,
16
+ * cambios de configuración y la tramitación de solicitudes de acceso, de datos personales y de vulneraciones. `action` es la acción del registro de origen (p. ej. `Signed`, `Viewed`, `Updated`).
17
+ */
18
+ export interface AuditEventEntity {
19
+ id: string;
20
+ source: AuditSource;
21
+ action: string;
22
+ employeeId: string | null;
23
+ employeeFullName: string | null;
24
+ /** Documento, expediente, solicitud, vulneración o elemento de configuración al que se refiere. */
25
+ targetId: string | null;
26
+ /**
27
+ * Cómo se cita: folio o materia del documento, IUIe y título del expediente, nombre de lo configurado o número de la
28
+ * solicitud o vulneración (sin el nombre del titular).
29
+ */
30
+ reference: string;
31
+ /** Qué se configuró, en los cambios de configuración. */
32
+ entity: AuditEntity | null;
33
+ observation: string | null;
34
+ createdAt: string;
35
+ }
36
+
37
+ /** Quién hace un cambio de configuración, según la sesión. Lo agrega el gateway; el ms lo deja en la bitácora. */
38
+ export interface AuditActorInput {
39
+ employeeId: string | null;
40
+ fullName: string;
41
+ }
@@ -0,0 +1 @@
1
+ export * from './audit.entity';
@@ -10,6 +10,7 @@ import {
10
10
  ProcedureEntity,
11
11
  } from '../../base/entities';
12
12
  import { DocumentTypeSummaryEntity } from '../document';
13
+ import { type PdfSignatureReportEntity } from '../signatureCheck';
13
14
 
14
15
  /** Expediente al que se hace referencia desde otro lado: cómo se cita y en qué estado está. */
15
16
  export interface CaseFileLinkEntity {
@@ -41,12 +42,20 @@ export interface CaseFileEntryDocumentEntity {
41
42
  correlative: DocumentEntity['correlative'];
42
43
  correlativeYear: DocumentEntity['correlativeYear'];
43
44
  documentType: DocumentTypeSummaryEntity;
45
+ /** N° del documento en DocDigital, si se despachó o se recibió por ahí: tiene comprobante de trazabilidad. */
46
+ docDigitalDocumentId: string | null;
44
47
  }
45
48
 
46
49
  /** Entrada del índice electrónico: una actuación, en su orden de incorporación. */
47
50
  export interface CaseFileEntryResponseEntity {
48
51
  id: CaseFileEntryEntity['id'];
49
52
  sequence: CaseFileEntryEntity['sequence'];
53
+ /** Subcarpeta del índice (sin valor: en la raíz). */
54
+ folder: CaseFileEntryEntity['folder'];
55
+ /** Documento en papel: dónde está, por qué no se digitalizó y cuántas páginas tiene. */
56
+ physicalLocation: CaseFileEntryEntity['physicalLocation'];
57
+ physicalReason: CaseFileEntryEntity['physicalReason'];
58
+ pageCount: CaseFileEntryEntity['pageCount'];
50
59
  kind: CaseFileEntryEntity['kind'];
51
60
  actuationType: CaseFileEntryEntity['actuationType'];
52
61
  title: CaseFileEntryEntity['title'];
@@ -64,6 +73,10 @@ export interface CaseFileEntryResponseEntity {
64
73
  sha256: CaseFileEntryEntity['sha256'];
65
74
  size: CaseFileEntryEntity['size'];
66
75
  hasAdvancedSignature: CaseFileEntryEntity['hasAdvancedSignature'];
76
+ /** Conformidad PDF/A que declara el archivo («PDF/A-2B»), «PDF», o `null` si no es un PDF o no se revisó. */
77
+ fileFormat: CaseFileEntryEntity['fileFormat'];
78
+ /** Revisión de sus firmas al incorporarlo, en los archivos externos en PDF. */
79
+ signatureCheck: PdfSignatureReportEntity | null;
67
80
  incorporatedByEmployeeId: CaseFileEntryEntity['incorporatedByEmployeeId'];
68
81
  incorporatedByFullName: CaseFileEntryEntity['incorporatedByFullName'];
69
82
  createdAt: CaseFileEntryEntity['createdAt'];
@@ -115,7 +128,10 @@ export interface CaseFileAccessResponseEntity {
115
128
  entryId: CaseFileAccessEntity['entryId'];
116
129
  /** Título del documento que se abrió, si el acceso fue a uno. */
117
130
  entryTitle: string | null;
131
+ /** El funcionario o, si fue por un enlace temporal, su destinatario externo. */
118
132
  employeeFullName: CaseFileAccessEntity['employeeFullName'];
133
+ /** Fue por un enlace temporal, sin sesión. */
134
+ external: boolean;
119
135
  createdAt: CaseFileAccessEntity['createdAt'];
120
136
  }
121
137
 
@@ -129,6 +145,12 @@ export interface CaseFileGetByIdResponseEntity extends CaseFileGetAllResponseEnt
129
145
  uri: string | null;
130
146
  closedByFullName: CaseFileEntity['closedByFullName'];
131
147
  closingNote: CaseFileEntity['closingNote'];
148
+ /** Expediente híbrido: tiene documentos en papel que no se pudieron digitalizar. */
149
+ isHybrid: boolean;
150
+ /** MGDEE1_2: serie del Cuadro de Clasificación. */
151
+ archivalSeries: { id: string; code: string; name: string } | null;
152
+ /** MGDEE8_2: fin de la restricción de acceso. */
153
+ restrictionEndsAt: string | null;
132
154
  index: CaseFileEntryResponseEntity[];
133
155
  sharedWith: CaseFileParticipantResponseEntity[];
134
156
  actors: CaseFileActorResponseEntity[];
@@ -159,6 +181,14 @@ export interface CaseFileUpdateResponseEntity {
159
181
  ok: boolean;
160
182
  }
161
183
 
184
+ /** Lote incorporado: cuántos documentos entraron y cuántos se omitieron (ya estaban, o no finalizados). */
185
+ export interface CaseFileAddBatchResponseEntity {
186
+ id: CaseFileEntity['id'];
187
+ added: number;
188
+ skipped: number;
189
+ ok: boolean;
190
+ }
191
+
162
192
  export interface CaseFileAddEntryResponseEntity {
163
193
  id: CaseFileEntity['id'];
164
194
  entryId: CaseFileEntryEntity['id'];
@@ -194,3 +224,105 @@ export interface CaseFileExportResponseEntity {
194
224
 
195
225
  /** Expediente en que está incorporado un documento, visto desde el documento. */
196
226
  export type DocumentCaseFileEntity = CaseFileLinkEntity;
227
+
228
+ /** Estado de un enlace temporal: vigente, vencido o revocado. */
229
+ export type CaseFileShareLinkStatus = 'Active' | 'Expired' | 'Revoked';
230
+
231
+ /** Enlace temporal de un expediente, como lo ve su responsable. El token no se vuelve a mostrar. */
232
+ export interface CaseFileShareLinkResponseEntity {
233
+ id: string;
234
+ recipient: string;
235
+ recipientEmail: string | null;
236
+ purpose: string | null;
237
+ allowExport: boolean;
238
+ expiresAt: string;
239
+ status: CaseFileShareLinkStatus;
240
+ createdByFullName: string;
241
+ createdAt: string;
242
+ revokedAt: string | null;
243
+ revokedByFullName: string | null;
244
+ /** Cuántas consultas, descargas y exportaciones se hicieron con él. */
245
+ accessCount: number;
246
+ lastAccessAt: string | null;
247
+ }
248
+
249
+ /** Enlace recién creado: el token va solo aquí; la dirección la arma quien lo muestra. */
250
+ export interface CaseFileShareLinkCreateResponseEntity {
251
+ id: string;
252
+ token: string;
253
+ recipient: string;
254
+ recipientEmail: string | null;
255
+ purpose: string | null;
256
+ expiresAt: string;
257
+ /** Para avisarle al destinatario: qué expediente, de qué órgano y quién se lo comparte. */
258
+ caseFile: { code: string; title: string };
259
+ organName: string;
260
+ createdByFullName: string;
261
+ }
262
+
263
+ /** Actuación del índice como la ve el destinatario externo. */
264
+ export interface CaseFileSharedEntryEntity {
265
+ id: string;
266
+ sequence: number;
267
+ folder: string | null;
268
+ kind: CaseFileEntryEntity['kind'];
269
+ actuationType: CaseFileEntryEntity['actuationType'];
270
+ title: string;
271
+ /** Tipo y número del documento («D.E. N° 590/2026») o el tipo declarado del archivo. */
272
+ reference: string | null;
273
+ originDate: string | null;
274
+ createdAt: string;
275
+ hasFile: boolean;
276
+ sha256: string | null;
277
+ hasAdvancedSignature: boolean;
278
+ physicalLocation: string | null;
279
+ pageCount: number | null;
280
+ voidedAt: string | null;
281
+ voidReason: string | null;
282
+ }
283
+
284
+ /** Expediente abierto con un enlace temporal: metadatos e índice, sin participantes ni registros internos. */
285
+ export interface CaseFileSharedResponseEntity {
286
+ code: string;
287
+ title: string;
288
+ subject: string;
289
+ summary: string | null;
290
+ procedureName: string;
291
+ status: CaseFileEntity['status'];
292
+ organName: string;
293
+ responsibleFullName: string;
294
+ responsiblePosition: string | null;
295
+ createdAt: string;
296
+ closedAt: string | null;
297
+ recipient: string;
298
+ purpose: string | null;
299
+ expiresAt: string;
300
+ allowExport: boolean;
301
+ entries: CaseFileSharedEntryEntity[];
302
+ }
303
+
304
+ /** Resultado de una actuación al verificar un ZIP exportado. */
305
+ export type CaseFileVerifyEntryResult =
306
+ /** La huella coincide con la registrada al incorporarla. */
307
+ | 'Match'
308
+ /** La huella no coincide: el archivo cambió. */
309
+ | 'Altered'
310
+ /** El ZIP trae una actuación con esa secuencia que el expediente no tiene. */
311
+ | 'NotInRegistry'
312
+ /** El expediente tiene esa actuación con archivo, pero el ZIP no la trae. */
313
+ | 'Missing'
314
+ /** La actuación no tiene huella registrada (incorporada antes de que se guardaran). */
315
+ | 'NoFingerprint';
316
+
317
+ export interface CaseFileVerifyExportResponseEntity {
318
+ code: string;
319
+ status: CaseFileEntity['status'];
320
+ closedAt: string | null;
321
+ /** Solo si el expediente es público y sin datos sensibles. */
322
+ title: string | null;
323
+ /** Cuántas actuaciones con archivo tiene el expediente registradas. */
324
+ registeredFiles: number;
325
+ /** `true` si todo lo registrado está en el ZIP y todo coincide. */
326
+ intact: boolean;
327
+ entries: { sequence: number; result: CaseFileVerifyEntryResult; voided: boolean }[];
328
+ }