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

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 (223) hide show
  1. package/dist/base/entities.d.ts +1000 -4
  2. package/dist/base/entities.js +247 -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 +214 -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 +255 -1
  25. package/dist/contracts/index.js +66 -0
  26. package/dist/contracts/indicators.contract.d.ts +103 -0
  27. package/dist/contracts/indicators.contract.js +15 -0
  28. package/dist/contracts/issuingEntity.contract.d.ts +52 -0
  29. package/dist/contracts/issuingEntity.contract.js +11 -0
  30. package/dist/contracts/mailIntake.contract.d.ts +61 -0
  31. package/dist/contracts/mailIntake.contract.js +15 -0
  32. package/dist/contracts/partsOffice.contract.d.ts +263 -0
  33. package/dist/contracts/partsOffice.contract.js +27 -0
  34. package/dist/contracts/push.contract.d.ts +59 -0
  35. package/dist/contracts/push.contract.js +14 -0
  36. package/dist/contracts/registerBook.contract.d.ts +27 -0
  37. package/dist/contracts/registerBook.contract.js +8 -0
  38. package/dist/contracts/repositoryExport.contract.d.ts +57 -0
  39. package/dist/contracts/repositoryExport.contract.js +13 -0
  40. package/dist/contracts/retention.contract.d.ts +58 -0
  41. package/dist/contracts/retention.contract.js +11 -0
  42. package/dist/contracts/scan.contract.d.ts +63 -0
  43. package/dist/contracts/scan.contract.js +12 -0
  44. package/dist/contracts/signatureBatch.contract.d.ts +109 -0
  45. package/dist/contracts/signatureBatch.contract.js +12 -0
  46. package/dist/contracts/signatureCheck.contract.d.ts +14 -0
  47. package/dist/contracts/signatureCheck.contract.js +7 -0
  48. package/dist/contracts/textSnippet.contract.d.ts +51 -0
  49. package/dist/contracts/textSnippet.contract.js +11 -0
  50. package/dist/contracts/transparency.contract.d.ts +96 -0
  51. package/dist/contracts/transparency.contract.js +12 -0
  52. package/dist/contracts/workFolder.contract.d.ts +114 -0
  53. package/dist/contracts/workFolder.contract.js +16 -0
  54. package/dist/entities/accessRequest/accessRequest.entity.d.ts +73 -0
  55. package/dist/entities/accessRequest/accessRequest.entity.js +2 -0
  56. package/dist/entities/accessRequest/index.d.ts +1 -0
  57. package/dist/entities/accessRequest/index.js +17 -0
  58. package/dist/entities/archivalSeries/archivalSeries.entity.d.ts +32 -0
  59. package/dist/entities/archivalSeries/archivalSeries.entity.js +2 -0
  60. package/dist/entities/archivalSeries/index.d.ts +1 -0
  61. package/dist/entities/archivalSeries/index.js +17 -0
  62. package/dist/entities/audit/audit.entity.d.ts +30 -0
  63. package/dist/entities/audit/audit.entity.js +2 -0
  64. package/dist/entities/audit/index.d.ts +1 -0
  65. package/dist/entities/audit/index.js +17 -0
  66. package/dist/entities/caseFile/caseFile.entity.d.ts +135 -0
  67. package/dist/entities/dataProtection/dataProtection.entity.d.ts +180 -0
  68. package/dist/entities/dataProtection/dataProtection.entity.js +2 -0
  69. package/dist/entities/dataProtection/index.d.ts +1 -0
  70. package/dist/entities/dataProtection/index.js +17 -0
  71. package/dist/entities/desk/desk.entity.d.ts +25 -0
  72. package/dist/entities/desk/desk.entity.js +2 -0
  73. package/dist/entities/desk/index.d.ts +1 -0
  74. package/dist/entities/desk/index.js +17 -0
  75. package/dist/entities/document/document.entity.d.ts +436 -1
  76. package/dist/entities/documentTemplate/documentTemplate.entity.d.ts +51 -0
  77. package/dist/entities/documentTemplate/documentTemplate.entity.js +2 -0
  78. package/dist/entities/documentTemplate/index.d.ts +1 -0
  79. package/dist/entities/documentTemplate/index.js +17 -0
  80. package/dist/entities/documentType/documentType.entity.d.ts +25 -0
  81. package/dist/entities/draftingRequest/draftingRequest.entity.d.ts +76 -0
  82. package/dist/entities/draftingRequest/draftingRequest.entity.js +2 -0
  83. package/dist/entities/draftingRequest/index.d.ts +1 -0
  84. package/dist/entities/draftingRequest/index.js +17 -0
  85. package/dist/entities/holiday/holiday.entity.d.ts +10 -0
  86. package/dist/entities/holiday/holiday.entity.js +2 -0
  87. package/dist/entities/holiday/index.d.ts +1 -0
  88. package/dist/entities/holiday/index.js +17 -0
  89. package/dist/entities/index.d.ts +22 -0
  90. package/dist/entities/index.js +22 -0
  91. package/dist/entities/indicators/index.d.ts +1 -0
  92. package/dist/entities/indicators/index.js +17 -0
  93. package/dist/entities/indicators/indicators.entity.d.ts +152 -0
  94. package/dist/entities/indicators/indicators.entity.js +2 -0
  95. package/dist/entities/issuingEntity/index.d.ts +1 -0
  96. package/dist/entities/issuingEntity/index.js +17 -0
  97. package/dist/entities/issuingEntity/issuingEntity.entity.d.ts +20 -0
  98. package/dist/entities/issuingEntity/issuingEntity.entity.js +2 -0
  99. package/dist/entities/mailIntake/index.d.ts +1 -0
  100. package/dist/entities/mailIntake/index.js +17 -0
  101. package/dist/entities/mailIntake/mailIntake.entity.d.ts +51 -0
  102. package/dist/entities/mailIntake/mailIntake.entity.js +2 -0
  103. package/dist/entities/partsOffice/index.d.ts +1 -0
  104. package/dist/entities/partsOffice/index.js +17 -0
  105. package/dist/entities/partsOffice/partsOffice.entity.d.ts +137 -0
  106. package/dist/entities/partsOffice/partsOffice.entity.js +2 -0
  107. package/dist/entities/push/index.d.ts +1 -0
  108. package/dist/entities/push/index.js +17 -0
  109. package/dist/entities/push/push.entity.d.ts +28 -0
  110. package/dist/entities/push/push.entity.js +2 -0
  111. package/dist/entities/registerBook/index.d.ts +1 -0
  112. package/dist/entities/registerBook/index.js +17 -0
  113. package/dist/entities/registerBook/registerBook.entity.d.ts +48 -0
  114. package/dist/entities/registerBook/registerBook.entity.js +2 -0
  115. package/dist/entities/repositoryExport/index.d.ts +1 -0
  116. package/dist/entities/repositoryExport/index.js +17 -0
  117. package/dist/entities/repositoryExport/repositoryExport.entity.d.ts +124 -0
  118. package/dist/entities/repositoryExport/repositoryExport.entity.js +2 -0
  119. package/dist/entities/retention/index.d.ts +1 -0
  120. package/dist/entities/retention/index.js +17 -0
  121. package/dist/entities/retention/retention.entity.d.ts +49 -0
  122. package/dist/entities/retention/retention.entity.js +2 -0
  123. package/dist/entities/scan/index.d.ts +1 -0
  124. package/dist/entities/scan/index.js +17 -0
  125. package/dist/entities/scan/scan.entity.d.ts +29 -0
  126. package/dist/entities/scan/scan.entity.js +2 -0
  127. package/dist/entities/signatureBatch/index.d.ts +1 -0
  128. package/dist/entities/signatureBatch/index.js +17 -0
  129. package/dist/entities/signatureBatch/signatureBatch.entity.d.ts +107 -0
  130. package/dist/entities/signatureBatch/signatureBatch.entity.js +2 -0
  131. package/dist/entities/signatureCheck/index.d.ts +1 -0
  132. package/dist/entities/signatureCheck/index.js +17 -0
  133. package/dist/entities/signatureCheck/signatureCheck.entity.d.ts +60 -0
  134. package/dist/entities/signatureCheck/signatureCheck.entity.js +2 -0
  135. package/dist/entities/textSnippet/index.d.ts +1 -0
  136. package/dist/entities/textSnippet/index.js +17 -0
  137. package/dist/entities/textSnippet/textSnippet.entity.d.ts +20 -0
  138. package/dist/entities/textSnippet/textSnippet.entity.js +2 -0
  139. package/dist/entities/transparency/index.d.ts +1 -0
  140. package/dist/entities/transparency/index.js +17 -0
  141. package/dist/entities/transparency/transparency.entity.d.ts +77 -0
  142. package/dist/entities/transparency/transparency.entity.js +2 -0
  143. package/dist/entities/workFolder/index.d.ts +1 -0
  144. package/dist/entities/workFolder/index.js +17 -0
  145. package/dist/entities/workFolder/workFolder.entity.d.ts +83 -0
  146. package/dist/entities/workFolder/workFolder.entity.js +2 -0
  147. package/package.json +1 -1
  148. package/src/base/entities.ts +1170 -4
  149. package/src/contracts/accessRequest.contract.ts +81 -0
  150. package/src/contracts/archivalSeries.contract.ts +59 -0
  151. package/src/contracts/audit.contract.ts +30 -0
  152. package/src/contracts/caseFile.contract.ts +107 -2
  153. package/src/contracts/dataProtection.contract.ts +197 -0
  154. package/src/contracts/desk.contract.ts +72 -0
  155. package/src/contracts/document.contract.ts +197 -2
  156. package/src/contracts/documentTemplate.contract.ts +61 -0
  157. package/src/contracts/documentType.contract.ts +29 -3
  158. package/src/contracts/draftingRequest.contract.ts +73 -0
  159. package/src/contracts/holiday.contract.ts +16 -0
  160. package/src/contracts/index.ts +92 -1
  161. package/src/contracts/indicators.contract.ts +80 -0
  162. package/src/contracts/issuingEntity.contract.ts +55 -0
  163. package/src/contracts/mailIntake.contract.ts +49 -0
  164. package/src/contracts/partsOffice.contract.ts +199 -0
  165. package/src/contracts/push.contract.ts +41 -0
  166. package/src/contracts/registerBook.contract.ts +24 -0
  167. package/src/contracts/repositoryExport.contract.ts +54 -0
  168. package/src/contracts/retention.contract.ts +44 -0
  169. package/src/contracts/scan.contract.ts +52 -0
  170. package/src/contracts/signatureBatch.contract.ts +96 -0
  171. package/src/contracts/signatureCheck.contract.ts +11 -0
  172. package/src/contracts/textSnippet.contract.ts +53 -0
  173. package/src/contracts/transparency.contract.ts +55 -0
  174. package/src/contracts/workFolder.contract.ts +75 -0
  175. package/src/entities/accessRequest/accessRequest.entity.ts +78 -0
  176. package/src/entities/accessRequest/index.ts +1 -0
  177. package/src/entities/archivalSeries/archivalSeries.entity.ts +37 -0
  178. package/src/entities/archivalSeries/index.ts +1 -0
  179. package/src/entities/audit/audit.entity.ts +41 -0
  180. package/src/entities/audit/index.ts +1 -0
  181. package/src/entities/caseFile/caseFile.entity.ts +132 -0
  182. package/src/entities/dataProtection/dataProtection.entity.ts +191 -0
  183. package/src/entities/dataProtection/index.ts +1 -0
  184. package/src/entities/desk/desk.entity.ts +28 -0
  185. package/src/entities/desk/index.ts +1 -0
  186. package/src/entities/document/document.entity.ts +412 -0
  187. package/src/entities/documentTemplate/documentTemplate.entity.ts +58 -0
  188. package/src/entities/documentTemplate/index.ts +1 -0
  189. package/src/entities/documentType/documentType.entity.ts +19 -0
  190. package/src/entities/draftingRequest/draftingRequest.entity.ts +78 -0
  191. package/src/entities/draftingRequest/index.ts +1 -0
  192. package/src/entities/holiday/holiday.entity.ts +11 -0
  193. package/src/entities/holiday/index.ts +1 -0
  194. package/src/entities/index.ts +22 -0
  195. package/src/entities/indicators/index.ts +1 -0
  196. package/src/entities/indicators/indicators.entity.ts +157 -0
  197. package/src/entities/issuingEntity/index.ts +1 -0
  198. package/src/entities/issuingEntity/issuingEntity.entity.ts +24 -0
  199. package/src/entities/mailIntake/index.ts +1 -0
  200. package/src/entities/mailIntake/mailIntake.entity.ts +55 -0
  201. package/src/entities/partsOffice/index.ts +1 -0
  202. package/src/entities/partsOffice/partsOffice.entity.ts +138 -0
  203. package/src/entities/push/index.ts +1 -0
  204. package/src/entities/push/push.entity.ts +31 -0
  205. package/src/entities/registerBook/index.ts +1 -0
  206. package/src/entities/registerBook/registerBook.entity.ts +52 -0
  207. package/src/entities/repositoryExport/index.ts +1 -0
  208. package/src/entities/repositoryExport/repositoryExport.entity.ts +86 -0
  209. package/src/entities/retention/index.ts +1 -0
  210. package/src/entities/retention/retention.entity.ts +53 -0
  211. package/src/entities/scan/index.ts +1 -0
  212. package/src/entities/scan/scan.entity.ts +32 -0
  213. package/src/entities/signatureBatch/index.ts +1 -0
  214. package/src/entities/signatureBatch/signatureBatch.entity.ts +110 -0
  215. package/src/entities/signatureCheck/index.ts +1 -0
  216. package/src/entities/signatureCheck/signatureCheck.entity.ts +63 -0
  217. package/src/entities/textSnippet/index.ts +1 -0
  218. package/src/entities/textSnippet/textSnippet.entity.ts +24 -0
  219. package/src/entities/transparency/index.ts +1 -0
  220. package/src/entities/transparency/transparency.entity.ts +78 -0
  221. package/src/entities/workFolder/index.ts +1 -0
  222. package/src/entities/workFolder/workFolder.entity.ts +84 -0
  223. package/tsconfig.json +1 -3
@@ -0,0 +1,80 @@
1
+ import {
2
+ type IndicatorsFileEntity,
3
+ type ManagementIndicatorsEntity,
4
+ type QualityMetricSettingResponseEntity,
5
+ type QualityReportEntity,
6
+ type ServiceOutageRemoveResponseEntity,
7
+ type ServiceOutageResponseEntity,
8
+ } from '../entities';
9
+ import { type QualityMetricKey, type ServiceOutageKind } from '../base/entities';
10
+
11
+ /** Patrones NATS de `indicators`: indicadores de gestión y Plan de Mejora Continua (DS 11/2023). */
12
+ export const IndicatorsPatterns = {
13
+ getManagement: 'gestorDocumental.indicators.getManagement',
14
+ getQuality: 'gestorDocumental.indicators.getQuality',
15
+ export: 'gestorDocumental.indicators.export',
16
+ updateQualityMetric: 'gestorDocumental.indicators.updateQualityMetric',
17
+ getOutages: 'gestorDocumental.indicators.getOutages',
18
+ createOutage: 'gestorDocumental.indicators.createOutage',
19
+ updateOutage: 'gestorDocumental.indicators.updateOutage',
20
+ removeOutage: 'gestorDocumental.indicators.removeOutage',
21
+ getOutageCertificate: 'gestorDocumental.indicators.getOutageCertificate',
22
+ } as const;
23
+
24
+ /** Período: días de Chile «AAAA-MM-DD», hasta dos años. */
25
+ export interface IndicatorsPeriodQuery {
26
+ from: string;
27
+ to: string;
28
+ }
29
+
30
+ export interface ManagementIndicatorsQuery extends IndicatorsPeriodQuery {
31
+ documentTypeId?: string | null;
32
+ directorateCode?: number | null;
33
+ }
34
+
35
+ export interface ServiceOutageInput {
36
+ kind: ServiceOutageKind;
37
+ startedAt: string;
38
+ endedAt?: string | null;
39
+ cause: string;
40
+ affectedServices?: string | null;
41
+ }
42
+
43
+ export interface IndicatorsContract {
44
+ [IndicatorsPatterns.getManagement]: { payload: ManagementIndicatorsQuery; response: ManagementIndicatorsEntity };
45
+ [IndicatorsPatterns.getQuality]: { payload: IndicatorsPeriodQuery; response: QualityReportEntity };
46
+ /**
47
+ * Indicadores y Plan de Mejora en una planilla Excel. `generatedBy`: quién la descarga. `unitNames`: nombre de cada
48
+ * unidad (`c:<código de dirección>` o `d:<id de departamento>`), que el ms no conoce.
49
+ */
50
+ [IndicatorsPatterns.export]: {
51
+ payload: ManagementIndicatorsQuery & { generatedBy: string; unitNames?: Record<string, string> };
52
+ response: IndicatorsFileEntity;
53
+ };
54
+ /** Umbral y, en las métricas declaradas, su valor y respaldo. */
55
+ [IndicatorsPatterns.updateQualityMetric]: {
56
+ payload: {
57
+ key: QualityMetricKey;
58
+ threshold: number;
59
+ declaredValue?: number | null;
60
+ declaredNote?: string | null;
61
+ actor: { fullName: string };
62
+ };
63
+ response: QualityMetricSettingResponseEntity;
64
+ };
65
+ [IndicatorsPatterns.getOutages]: { payload: { year: number }; response: ServiceOutageResponseEntity[] };
66
+ [IndicatorsPatterns.createOutage]: {
67
+ payload: ServiceOutageInput & { actor: { employeeId: string; fullName: string } };
68
+ response: ServiceOutageResponseEntity;
69
+ };
70
+ [IndicatorsPatterns.updateOutage]: {
71
+ payload: ServiceOutageInput & { id: string; actor: { employeeId: string; fullName: string } };
72
+ response: ServiceOutageResponseEntity;
73
+ };
74
+ [IndicatorsPatterns.removeOutage]: { payload: { id: string }; response: ServiceOutageRemoveResponseEntity };
75
+ /** Certificado de indisponibilidad (DS 10/2023) en PDF, de una caída ya terminada. */
76
+ [IndicatorsPatterns.getOutageCertificate]: {
77
+ payload: { id: string; generatedBy: string };
78
+ response: IndicatorsFileEntity;
79
+ };
80
+ }
@@ -0,0 +1,55 @@
1
+ import { type IssuingEntityEntity } from '../base/entities';
2
+ import {
3
+ type IssuingEntityCreateResponseEntity,
4
+ type IssuingEntityGetAllResponseEntity,
5
+ type IssuingEntityGetByIdResponseEntity,
6
+ type IssuingEntityUpdateResponseEntity,
7
+ } from '../entities';
8
+ import { type RpcPage } from './contract';
9
+
10
+ /** Patrones NATS de `issuingEntity`: `<servicio>.<recurso>.<acción>`. */
11
+ export const IssuingEntityPatterns = {
12
+ getAll: 'gestorDocumental.issuingEntity.getAll',
13
+ getById: 'gestorDocumental.issuingEntity.getById',
14
+ create: 'gestorDocumental.issuingEntity.create',
15
+ update: 'gestorDocumental.issuingEntity.update',
16
+ setEnabled: 'gestorDocumental.issuingEntity.setEnabled',
17
+ } as const;
18
+
19
+ /** Datos de una entidad emisora al crearla o editarla. */
20
+ export interface IssuingEntityWritePayload {
21
+ name: string;
22
+ shortName?: string | null;
23
+ /** Direcciones (código de caschile) cuyos funcionarios actúan por la entidad. */
24
+ directorateCodeReferences: number[];
25
+ /** Su entidad en DocDigital, entre las asociadas a las credenciales del gestor. */
26
+ docDigitalEntityId?: number | null;
27
+ enabled?: boolean;
28
+ }
29
+
30
+ export interface IssuingEntityContract {
31
+ [IssuingEntityPatterns.getAll]: {
32
+ // sin `page` y `limit` responde todas en una sola página
33
+ payload: {
34
+ pagination?: { page?: number; limit?: number };
35
+ filters?: { search?: string; enabled?: boolean };
36
+ };
37
+ response: RpcPage<IssuingEntityGetAllResponseEntity[]>;
38
+ };
39
+ [IssuingEntityPatterns.getById]: {
40
+ payload: Pick<IssuingEntityEntity, 'id'>;
41
+ response: IssuingEntityGetByIdResponseEntity;
42
+ };
43
+ [IssuingEntityPatterns.create]: {
44
+ payload: IssuingEntityWritePayload;
45
+ response: IssuingEntityCreateResponseEntity;
46
+ };
47
+ [IssuingEntityPatterns.update]: {
48
+ payload: IssuingEntityWritePayload & Pick<IssuingEntityEntity, 'id'>;
49
+ response: IssuingEntityUpdateResponseEntity;
50
+ };
51
+ [IssuingEntityPatterns.setEnabled]: {
52
+ payload: Pick<IssuingEntityEntity, 'id' | 'enabled'>;
53
+ response: IssuingEntityUpdateResponseEntity;
54
+ };
55
+ }
@@ -0,0 +1,49 @@
1
+ import {
2
+ type DeskFileResponseEntity,
3
+ type DeskOkResponseEntity,
4
+ type DocumentPublicFileResponseEntity,
5
+ type MailIntakeInboxEntity,
6
+ type MailIntakeSyncEntity,
7
+ } from '../entities';
8
+ import { type DocumentActor } from './document.contract';
9
+
10
+ /**
11
+ * Patrones NATS de `mailIntake`: el ingreso por correo. Un funcionario reenvía un correo a la casilla del gestor y
12
+ * después elige qué adjuntos entran a su escritorio. `email` es el correo institucional de la sesión, que agrega el
13
+ * gateway: solo con él se ven los correos que envió.
14
+ */
15
+ export const MailIntakePatterns = {
16
+ getMine: 'gestorDocumental.mailIntake.getMine',
17
+ accept: 'gestorDocumental.mailIntake.accept',
18
+ discard: 'gestorDocumental.mailIntake.discard',
19
+ getEml: 'gestorDocumental.mailIntake.getEml',
20
+ sync: 'gestorDocumental.mailIntake.sync',
21
+ } as const;
22
+
23
+ export interface MailIntakeContract {
24
+ /** Los correos pendientes que envió quien tiene la sesión, del más reciente al más antiguo. */
25
+ [MailIntakePatterns.getMine]: {
26
+ payload: { email: string | null; actor: DocumentActor };
27
+ response: MailIntakeInboxEntity;
28
+ };
29
+ /**
30
+ * Lleva al escritorio los adjuntos elegidos (por su `index`) y, si se pide, el correo completo en EML. El correo
31
+ * queda aceptado: no se puede volver a procesar.
32
+ */
33
+ [MailIntakePatterns.accept]: {
34
+ payload: { id: string; email: string | null; attachments: number[]; includeEml: boolean; actor: DocumentActor };
35
+ response: DeskFileResponseEntity[];
36
+ };
37
+ /** Lo descarta sin traer nada. El EML se conserva. */
38
+ [MailIntakePatterns.discard]: {
39
+ payload: { id: string; email: string | null; actor: DocumentActor };
40
+ response: DeskOkResponseEntity;
41
+ };
42
+ /** El correo completo (EML), para su remitente. */
43
+ [MailIntakePatterns.getEml]: {
44
+ payload: { id: string; email: string | null; actor: DocumentActor };
45
+ response: DocumentPublicFileResponseEntity;
46
+ };
47
+ /** Revisa la casilla ahora, sin esperar a la revisión periódica. */
48
+ [MailIntakePatterns.sync]: { payload: Record<string, never>; response: MailIntakeSyncEntity };
49
+ }
@@ -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,41 @@
1
+ import {
2
+ type PushConfigResponseEntity,
3
+ type PushNotificationInput,
4
+ type PushOkResponseEntity,
5
+ type PushSendResultEntity,
6
+ } from '../entities';
7
+ import { type DocumentActor } from './document.contract';
8
+
9
+ /**
10
+ * Patrones NATS de `push`: avisos en el celular o el computador (Web Push), además del correo. Cada funcionario los
11
+ * activa en sus dispositivos; el gateway los envía junto con los correos de aviso.
12
+ */
13
+ export const PushPatterns = {
14
+ getConfig: 'gestorDocumental.push.getConfig',
15
+ subscribe: 'gestorDocumental.push.subscribe',
16
+ unsubscribe: 'gestorDocumental.push.unsubscribe',
17
+ test: 'gestorDocumental.push.test',
18
+ send: 'gestorDocumental.push.send',
19
+ } as const;
20
+
21
+ export interface PushContract {
22
+ [PushPatterns.getConfig]: { payload: { actor: DocumentActor }; response: PushConfigResponseEntity };
23
+ /** Registra el dispositivo (o lo actualiza, si ya estaba) a nombre de quien tiene la sesión. */
24
+ [PushPatterns.subscribe]: {
25
+ payload: {
26
+ subscription: { endpoint: string; keys: { p256dh: string; auth: string } };
27
+ userAgent?: string | null;
28
+ actor: DocumentActor;
29
+ };
30
+ response: PushOkResponseEntity;
31
+ };
32
+ /** Quita el dispositivo, solo si es de quien tiene la sesión. */
33
+ [PushPatterns.unsubscribe]: { payload: { endpoint: string; actor: DocumentActor }; response: PushOkResponseEntity };
34
+ /** Un aviso de prueba a los dispositivos de quien tiene la sesión. */
35
+ [PushPatterns.test]: { payload: { actor: DocumentActor }; response: PushSendResultEntity };
36
+ /** Envía un aviso a los dispositivos de esos funcionarios. Lo usa el gateway, no el navegador. */
37
+ [PushPatterns.send]: {
38
+ payload: { employeeIds: string[]; notification: PushNotificationInput };
39
+ response: PushSendResultEntity;
40
+ };
41
+ }
@@ -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
+ }