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

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 (242) hide show
  1. package/dist/base/entities.d.ts +996 -5
  2. package/dist/base/entities.js +235 -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 +15 -2
  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 +39 -0
  23. package/dist/contracts/holiday.contract.js +10 -0
  24. package/dist/contracts/index.d.ts +246 -4
  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 +55 -0
  29. package/dist/contracts/internalReview.contract.js +9 -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 +94 -2
  35. package/dist/contracts/partsOffice.contract.js +5 -0
  36. package/dist/contracts/procedure.contract.d.ts +14 -23
  37. package/dist/contracts/procedure.contract.js +6 -4
  38. package/dist/contracts/push.contract.d.ts +59 -0
  39. package/dist/contracts/push.contract.js +14 -0
  40. package/dist/contracts/registerBook.contract.d.ts +27 -0
  41. package/dist/contracts/registerBook.contract.js +8 -0
  42. package/dist/contracts/repositoryExport.contract.d.ts +57 -0
  43. package/dist/contracts/repositoryExport.contract.js +13 -0
  44. package/dist/contracts/retention.contract.d.ts +58 -0
  45. package/dist/contracts/retention.contract.js +11 -0
  46. package/dist/contracts/richImage.contract.d.ts +33 -0
  47. package/dist/contracts/richImage.contract.js +8 -0
  48. package/dist/contracts/scan.contract.d.ts +63 -0
  49. package/dist/contracts/scan.contract.js +12 -0
  50. package/dist/contracts/signatureBatch.contract.d.ts +109 -0
  51. package/dist/contracts/signatureBatch.contract.js +12 -0
  52. package/dist/contracts/signatureCheck.contract.d.ts +14 -0
  53. package/dist/contracts/signatureCheck.contract.js +7 -0
  54. package/dist/contracts/textSnippet.contract.d.ts +51 -0
  55. package/dist/contracts/textSnippet.contract.js +11 -0
  56. package/dist/contracts/transparency.contract.d.ts +96 -0
  57. package/dist/contracts/transparency.contract.js +12 -0
  58. package/dist/contracts/workFolder.contract.d.ts +114 -0
  59. package/dist/contracts/workFolder.contract.js +16 -0
  60. package/dist/entities/accessRequest/accessRequest.entity.d.ts +73 -0
  61. package/dist/entities/accessRequest/accessRequest.entity.js +2 -0
  62. package/dist/entities/accessRequest/index.d.ts +1 -0
  63. package/dist/entities/accessRequest/index.js +17 -0
  64. package/dist/entities/archivalSeries/archivalSeries.entity.d.ts +32 -0
  65. package/dist/entities/archivalSeries/archivalSeries.entity.js +2 -0
  66. package/dist/entities/archivalSeries/index.d.ts +1 -0
  67. package/dist/entities/archivalSeries/index.js +17 -0
  68. package/dist/entities/audit/audit.entity.d.ts +30 -0
  69. package/dist/entities/audit/audit.entity.js +2 -0
  70. package/dist/entities/audit/index.d.ts +1 -0
  71. package/dist/entities/audit/index.js +17 -0
  72. package/dist/entities/caseFile/caseFile.entity.d.ts +135 -0
  73. package/dist/entities/dataProtection/dataProtection.entity.d.ts +180 -0
  74. package/dist/entities/dataProtection/dataProtection.entity.js +2 -0
  75. package/dist/entities/dataProtection/index.d.ts +1 -0
  76. package/dist/entities/dataProtection/index.js +17 -0
  77. package/dist/entities/desk/desk.entity.d.ts +25 -0
  78. package/dist/entities/desk/desk.entity.js +2 -0
  79. package/dist/entities/desk/index.d.ts +1 -0
  80. package/dist/entities/desk/index.js +17 -0
  81. package/dist/entities/document/document.entity.d.ts +429 -1
  82. package/dist/entities/document/index.d.ts +1 -0
  83. package/dist/entities/document/index.js +1 -0
  84. package/dist/entities/document/richStyle.d.ts +212 -0
  85. package/dist/entities/document/richStyle.js +81 -0
  86. package/dist/entities/documentTemplate/documentTemplate.entity.d.ts +25 -0
  87. package/dist/entities/documentTemplate/documentTemplate.entity.js +2 -0
  88. package/dist/entities/documentTemplate/index.d.ts +1 -0
  89. package/dist/entities/documentTemplate/index.js +17 -0
  90. package/dist/entities/documentType/documentType.entity.d.ts +43 -0
  91. package/dist/entities/draftingRequest/draftingRequest.entity.d.ts +76 -0
  92. package/dist/entities/draftingRequest/draftingRequest.entity.js +2 -0
  93. package/dist/entities/draftingRequest/index.d.ts +1 -0
  94. package/dist/entities/draftingRequest/index.js +17 -0
  95. package/dist/entities/holiday/holiday.entity.d.ts +32 -0
  96. package/dist/entities/holiday/holiday.entity.js +2 -0
  97. package/dist/entities/holiday/index.d.ts +1 -0
  98. package/dist/entities/holiday/index.js +17 -0
  99. package/dist/entities/index.d.ts +22 -0
  100. package/dist/entities/index.js +22 -0
  101. package/dist/entities/indicators/index.d.ts +1 -0
  102. package/dist/entities/indicators/index.js +17 -0
  103. package/dist/entities/indicators/indicators.entity.d.ts +152 -0
  104. package/dist/entities/indicators/indicators.entity.js +2 -0
  105. package/dist/entities/internalReview/index.d.ts +1 -0
  106. package/dist/entities/internalReview/index.js +17 -0
  107. package/dist/entities/internalReview/internalReview.entity.d.ts +50 -0
  108. package/dist/entities/internalReview/internalReview.entity.js +2 -0
  109. package/dist/entities/issuingEntity/index.d.ts +1 -0
  110. package/dist/entities/issuingEntity/index.js +17 -0
  111. package/dist/entities/issuingEntity/issuingEntity.entity.d.ts +20 -0
  112. package/dist/entities/issuingEntity/issuingEntity.entity.js +2 -0
  113. package/dist/entities/mailIntake/index.d.ts +1 -0
  114. package/dist/entities/mailIntake/index.js +17 -0
  115. package/dist/entities/mailIntake/mailIntake.entity.d.ts +51 -0
  116. package/dist/entities/mailIntake/mailIntake.entity.js +2 -0
  117. package/dist/entities/partsOffice/partsOffice.entity.d.ts +39 -0
  118. package/dist/entities/procedure/procedure.entity.d.ts +27 -6
  119. package/dist/entities/push/index.d.ts +1 -0
  120. package/dist/entities/push/index.js +17 -0
  121. package/dist/entities/push/push.entity.d.ts +28 -0
  122. package/dist/entities/push/push.entity.js +2 -0
  123. package/dist/entities/registerBook/index.d.ts +1 -0
  124. package/dist/entities/registerBook/index.js +17 -0
  125. package/dist/entities/registerBook/registerBook.entity.d.ts +48 -0
  126. package/dist/entities/registerBook/registerBook.entity.js +2 -0
  127. package/dist/entities/repositoryExport/index.d.ts +1 -0
  128. package/dist/entities/repositoryExport/index.js +17 -0
  129. package/dist/entities/repositoryExport/repositoryExport.entity.d.ts +124 -0
  130. package/dist/entities/repositoryExport/repositoryExport.entity.js +2 -0
  131. package/dist/entities/retention/index.d.ts +1 -0
  132. package/dist/entities/retention/index.js +17 -0
  133. package/dist/entities/retention/retention.entity.d.ts +49 -0
  134. package/dist/entities/retention/retention.entity.js +2 -0
  135. package/dist/entities/scan/index.d.ts +1 -0
  136. package/dist/entities/scan/index.js +17 -0
  137. package/dist/entities/scan/scan.entity.d.ts +29 -0
  138. package/dist/entities/scan/scan.entity.js +2 -0
  139. package/dist/entities/signatureBatch/index.d.ts +1 -0
  140. package/dist/entities/signatureBatch/index.js +17 -0
  141. package/dist/entities/signatureBatch/signatureBatch.entity.d.ts +107 -0
  142. package/dist/entities/signatureBatch/signatureBatch.entity.js +2 -0
  143. package/dist/entities/signatureCheck/index.d.ts +1 -0
  144. package/dist/entities/signatureCheck/index.js +17 -0
  145. package/dist/entities/signatureCheck/signatureCheck.entity.d.ts +60 -0
  146. package/dist/entities/signatureCheck/signatureCheck.entity.js +2 -0
  147. package/dist/entities/textSnippet/index.d.ts +1 -0
  148. package/dist/entities/textSnippet/index.js +17 -0
  149. package/dist/entities/textSnippet/textSnippet.entity.d.ts +20 -0
  150. package/dist/entities/textSnippet/textSnippet.entity.js +2 -0
  151. package/dist/entities/transparency/index.d.ts +1 -0
  152. package/dist/entities/transparency/index.js +17 -0
  153. package/dist/entities/transparency/transparency.entity.d.ts +77 -0
  154. package/dist/entities/transparency/transparency.entity.js +2 -0
  155. package/dist/entities/workFolder/index.d.ts +1 -0
  156. package/dist/entities/workFolder/index.js +17 -0
  157. package/dist/entities/workFolder/workFolder.entity.d.ts +83 -0
  158. package/dist/entities/workFolder/workFolder.entity.js +2 -0
  159. package/package.json +1 -1
  160. package/src/base/entities.ts +1164 -5
  161. package/src/contracts/accessRequest.contract.ts +81 -0
  162. package/src/contracts/archivalSeries.contract.ts +59 -0
  163. package/src/contracts/audit.contract.ts +30 -0
  164. package/src/contracts/caseFile.contract.ts +107 -2
  165. package/src/contracts/dataProtection.contract.ts +197 -0
  166. package/src/contracts/desk.contract.ts +72 -0
  167. package/src/contracts/document.contract.ts +200 -3
  168. package/src/contracts/documentTemplate.contract.ts +17 -0
  169. package/src/contracts/documentType.contract.ts +32 -3
  170. package/src/contracts/draftingRequest.contract.ts +73 -0
  171. package/src/contracts/holiday.contract.ts +25 -0
  172. package/src/contracts/index.ts +93 -1
  173. package/src/contracts/indicators.contract.ts +80 -0
  174. package/src/contracts/internalReview.contract.ts +48 -0
  175. package/src/contracts/issuingEntity.contract.ts +55 -0
  176. package/src/contracts/mailIntake.contract.ts +49 -0
  177. package/src/contracts/partsOffice.contract.ts +81 -2
  178. package/src/contracts/procedure.contract.ts +11 -27
  179. package/src/contracts/push.contract.ts +41 -0
  180. package/src/contracts/registerBook.contract.ts +24 -0
  181. package/src/contracts/repositoryExport.contract.ts +54 -0
  182. package/src/contracts/retention.contract.ts +44 -0
  183. package/src/contracts/richImage.contract.ts +23 -0
  184. package/src/contracts/scan.contract.ts +52 -0
  185. package/src/contracts/signatureBatch.contract.ts +96 -0
  186. package/src/contracts/signatureCheck.contract.ts +11 -0
  187. package/src/contracts/textSnippet.contract.ts +53 -0
  188. package/src/contracts/transparency.contract.ts +55 -0
  189. package/src/contracts/workFolder.contract.ts +75 -0
  190. package/src/entities/accessRequest/accessRequest.entity.ts +78 -0
  191. package/src/entities/accessRequest/index.ts +1 -0
  192. package/src/entities/archivalSeries/archivalSeries.entity.ts +37 -0
  193. package/src/entities/archivalSeries/index.ts +1 -0
  194. package/src/entities/audit/audit.entity.ts +41 -0
  195. package/src/entities/audit/index.ts +1 -0
  196. package/src/entities/caseFile/caseFile.entity.ts +132 -0
  197. package/src/entities/dataProtection/dataProtection.entity.ts +191 -0
  198. package/src/entities/dataProtection/index.ts +1 -0
  199. package/src/entities/desk/desk.entity.ts +28 -0
  200. package/src/entities/desk/index.ts +1 -0
  201. package/src/entities/document/document.entity.ts +413 -1
  202. package/src/entities/document/index.ts +1 -0
  203. package/src/entities/document/richStyle.ts +193 -0
  204. package/src/entities/documentTemplate/documentTemplate.entity.ts +27 -0
  205. package/src/entities/documentTemplate/index.ts +1 -0
  206. package/src/entities/documentType/documentType.entity.ts +45 -0
  207. package/src/entities/draftingRequest/draftingRequest.entity.ts +78 -0
  208. package/src/entities/draftingRequest/index.ts +1 -0
  209. package/src/entities/holiday/holiday.entity.ts +36 -0
  210. package/src/entities/holiday/index.ts +1 -0
  211. package/src/entities/index.ts +22 -0
  212. package/src/entities/indicators/index.ts +1 -0
  213. package/src/entities/indicators/indicators.entity.ts +157 -0
  214. package/src/entities/internalReview/index.ts +1 -0
  215. package/src/entities/internalReview/internalReview.entity.ts +50 -0
  216. package/src/entities/issuingEntity/index.ts +1 -0
  217. package/src/entities/issuingEntity/issuingEntity.entity.ts +24 -0
  218. package/src/entities/mailIntake/index.ts +1 -0
  219. package/src/entities/mailIntake/mailIntake.entity.ts +55 -0
  220. package/src/entities/partsOffice/partsOffice.entity.ts +35 -0
  221. package/src/entities/procedure/procedure.entity.ts +27 -6
  222. package/src/entities/push/index.ts +1 -0
  223. package/src/entities/push/push.entity.ts +31 -0
  224. package/src/entities/registerBook/index.ts +1 -0
  225. package/src/entities/registerBook/registerBook.entity.ts +52 -0
  226. package/src/entities/repositoryExport/index.ts +1 -0
  227. package/src/entities/repositoryExport/repositoryExport.entity.ts +86 -0
  228. package/src/entities/retention/index.ts +1 -0
  229. package/src/entities/retention/retention.entity.ts +53 -0
  230. package/src/entities/scan/index.ts +1 -0
  231. package/src/entities/scan/scan.entity.ts +32 -0
  232. package/src/entities/signatureBatch/index.ts +1 -0
  233. package/src/entities/signatureBatch/signatureBatch.entity.ts +110 -0
  234. package/src/entities/signatureCheck/index.ts +1 -0
  235. package/src/entities/signatureCheck/signatureCheck.entity.ts +63 -0
  236. package/src/entities/textSnippet/index.ts +1 -0
  237. package/src/entities/textSnippet/textSnippet.entity.ts +24 -0
  238. package/src/entities/transparency/index.ts +1 -0
  239. package/src/entities/transparency/transparency.entity.ts +78 -0
  240. package/src/entities/workFolder/index.ts +1 -0
  241. package/src/entities/workFolder/workFolder.entity.ts +84 -0
  242. 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,48 @@
1
+ import {
2
+ type DocumentInternalNoteResponseEntity,
3
+ type DocumentInternalNotesResponseEntity,
4
+ type InternalReviewQueueItemEntity,
5
+ } from '../entities';
6
+
7
+ /** Patrones NATS de `internalReview`: la revisión para la jefatura y sus observaciones internas. */
8
+ export const InternalReviewPatterns = {
9
+ getQueue: 'gestorDocumental.internalReview.getQueue',
10
+ getNotes: 'gestorDocumental.internalReview.getNotes',
11
+ addNote: 'gestorDocumental.internalReview.addNote',
12
+ } as const;
13
+
14
+ /**
15
+ * Dirección para la que actúa quien consulta: como revisora de su jefatura (integra la dirección y tiene el permiso de
16
+ * revisar) o como la jefatura misma (la dirige hoy y tiene el permiso de jefatura). La resuelve el gateway: ni quiénes
17
+ * la dirigen hoy (titular y subrogante) ni quiénes tienen cada permiso los dice el navegador.
18
+ */
19
+ export interface InternalReviewScope {
20
+ directorateCode: number;
21
+ directorateName: string;
22
+ headEmployeeIds: string[];
23
+ role: 'Reviewer' | 'Head';
24
+ /** Como jefatura, al dejar una observación: quiénes revisan hoy para ella (a quienes se avisa). */
25
+ reviewerEmployeeIds?: string[];
26
+ }
27
+
28
+ export interface InternalReviewContract {
29
+ /** Documentos que esperan a las jefaturas para las que revisa quien consulta. */
30
+ [InternalReviewPatterns.getQueue]: {
31
+ payload: { actor: { employeeId: string }; scopes: InternalReviewScope[] };
32
+ response: InternalReviewQueueItemEntity[];
33
+ };
34
+ [InternalReviewPatterns.getNotes]: {
35
+ payload: { documentId: string; actor: { employeeId: string }; scopes: InternalReviewScope[] };
36
+ response: DocumentInternalNotesResponseEntity;
37
+ };
38
+ [InternalReviewPatterns.addNote]: {
39
+ payload: {
40
+ documentId: string;
41
+ directorateCode: number;
42
+ text: string;
43
+ actor: { employeeId: string; fullName: string };
44
+ scopes: InternalReviewScope[];
45
+ };
46
+ response: DocumentInternalNoteResponseEntity;
47
+ };
48
+ }
@@ -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
+ }
@@ -1,9 +1,12 @@
1
- import { type DocumentAccessLevel, type DocumentInstruction } from '../base/entities';
1
+ import { type CommunicationMeans, type DocumentAccessLevel, type DocumentInstruction } from '../base/entities';
2
2
  import {
3
+ type CaseFileAddEntryResponseEntity,
3
4
  type DocDigitalDocumentTypeEntity,
4
5
  type DocDigitalEntityEntity,
5
6
  type PartsOfficeInboundEntity,
6
7
  type DocDigitalUserEntity,
8
+ type EnablementPersonInput,
9
+ type PartsOfficeEnablementEntity,
7
10
  type PartsOfficeDispatchEntity,
8
11
  type PartsOfficeFileEntity,
9
12
  type PartsOfficeOkResponseEntity,
@@ -20,6 +23,7 @@ export const PartsOfficePatterns = {
20
23
  getStatus: 'gestorDocumental.partsOffice.getStatus',
21
24
  getSummary: 'gestorDocumental.partsOffice.getSummary',
22
25
  getEntities: 'gestorDocumental.partsOffice.getEntities',
26
+ getOwnEntities: 'gestorDocumental.partsOffice.getOwnEntities',
23
27
  getUsers: 'gestorDocumental.partsOffice.getUsers',
24
28
  getDocumentTypes: 'gestorDocumental.partsOffice.getDocumentTypes',
25
29
  getDispatches: 'gestorDocumental.partsOffice.getDispatches',
@@ -33,6 +37,10 @@ export const PartsOfficePatterns = {
33
37
  acknowledgeInbound: 'gestorDocumental.partsOffice.acknowledgeInbound',
34
38
  returnInbound: 'gestorDocumental.partsOffice.returnInbound',
35
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',
36
44
  } as const;
37
45
 
38
46
  /** Destinatario interno de un ingreso, ya resuelto por el gateway (las áreas con sus integrantes). */
@@ -46,11 +54,37 @@ interface IListPayload<S> {
46
54
  filters?: { search?: string; status?: S };
47
55
  }
48
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
+
49
81
  export interface PartsOfficeContract {
50
82
  [PartsOfficePatterns.getStatus]: { payload: Record<string, never>; response: PartsOfficeStatusEntity };
51
83
  [PartsOfficePatterns.getSummary]: { payload: Record<string, never>; response: PartsOfficeSummaryEntity };
52
84
  /** Directorio de DocDigital: instituciones por nombre. */
53
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[] };
54
88
  [PartsOfficePatterns.getUsers]: {
55
89
  payload: { entityId: number; search?: string };
56
90
  response: DocDigitalUserEntity[];
@@ -76,7 +110,11 @@ export interface PartsOfficeContract {
76
110
  response: PartsOfficeOkResponseEntity;
77
111
  };
78
112
  /** PDF firmado de un documento por despachar, para que Oficina de Partes lo revise. */
79
- [PartsOfficePatterns.getDispatchFile]: { payload: { id: string }; response: PartsOfficeFileEntity };
113
+ [PartsOfficePatterns.getDispatchFile]: {
114
+ // con `receipt`, el comprobante del despacho por contingencia
115
+ payload: { id: string; receipt?: boolean };
116
+ response: PartsOfficeFileEntity;
117
+ };
80
118
  [PartsOfficePatterns.getInbound]: {
81
119
  payload: IListPayload<'Pending' | 'Registered' | 'Returned'>;
82
120
  response: RpcPage<PartsOfficeInboundEntity[]>;
@@ -117,4 +155,45 @@ export interface PartsOfficeContract {
117
155
  payload: { id: string; attachment?: number };
118
156
  response: PartsOfficeFileEntity;
119
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
+ };
120
199
  }
@@ -1,30 +1,23 @@
1
1
  import { type ProcedureEntity } from '../base/entities';
2
2
  import {
3
- type ProcedureCreateResponseEntity,
3
+ type ProcedureCpatStatusEntity,
4
4
  type ProcedureGetAllResponseEntity,
5
5
  type ProcedureGetByIdResponseEntity,
6
- type ProcedureUpdateResponseEntity,
6
+ type ProcedureSyncResponseEntity,
7
7
  } from '../entities';
8
8
  import { type RpcPage } from './contract';
9
9
 
10
- /** Patrones NATS de `procedure`: `<servicio>.<recurso>.<acción>`. */
10
+ /**
11
+ * Patrones NATS de `procedure`: los procedimientos administrativos vienen del CPAT (nómina en datos.gob.cl) y no se
12
+ * crean ni editan en el gestor.
13
+ */
11
14
  export const ProcedurePatterns = {
12
15
  getAll: 'gestorDocumental.procedure.getAll',
13
16
  getById: 'gestorDocumental.procedure.getById',
14
- create: 'gestorDocumental.procedure.create',
15
- update: 'gestorDocumental.procedure.update',
16
- setEnabled: 'gestorDocumental.procedure.setEnabled',
17
+ getCpatStatus: 'gestorDocumental.procedure.getCpatStatus',
18
+ sync: 'gestorDocumental.procedure.sync',
17
19
  } as const;
18
20
 
19
- /** Datos de un procedimiento administrativo al crearlo o editarlo. */
20
- export interface ProcedureWritePayload {
21
- name: string;
22
- cpatId?: string | null;
23
- cpatCode?: string | null;
24
- description?: string | null;
25
- enabled?: boolean;
26
- }
27
-
28
21
  export interface ProcedureContract {
29
22
  [ProcedurePatterns.getAll]: {
30
23
  // sin `page` y `limit` responde todos en una sola página
@@ -38,16 +31,7 @@ export interface ProcedureContract {
38
31
  payload: Pick<ProcedureEntity, 'id'>;
39
32
  response: ProcedureGetByIdResponseEntity;
40
33
  };
41
- [ProcedurePatterns.create]: {
42
- payload: ProcedureWritePayload;
43
- response: ProcedureCreateResponseEntity;
44
- };
45
- [ProcedurePatterns.update]: {
46
- payload: ProcedureWritePayload & Pick<ProcedureEntity, 'id'>;
47
- response: ProcedureUpdateResponseEntity;
48
- };
49
- [ProcedurePatterns.setEnabled]: {
50
- payload: Pick<ProcedureEntity, 'id' | 'enabled'>;
51
- response: ProcedureUpdateResponseEntity;
52
- };
34
+ [ProcedurePatterns.getCpatStatus]: { payload: Record<string, never>; response: ProcedureCpatStatusEntity };
35
+ /** Trae del CPAT los procedimientos de la institución `CPAT_INSTITUTION_CODE`. */
36
+ [ProcedurePatterns.sync]: { payload: Record<string, never>; response: ProcedureSyncResponseEntity };
53
37
  }
@@ -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,23 @@
1
+ import { type RichImageResponseEntity } from '../entities';
2
+
3
+ /** Patrones NATS de `richImage`: imágenes del editor (logos de membrete e imágenes del texto). */
4
+ export const RichImagePatterns = {
5
+ register: 'gestorDocumental.richImage.register',
6
+ getFile: 'gestorDocumental.richImage.getFile',
7
+ } as const;
8
+
9
+ export interface RichImageContract {
10
+ /**
11
+ * Registra una imagen ya subida a Drive por el gateway (en la carpeta de los documentos). El ms descarga el archivo, comprueba que sea PNG o JPEG y de
12
+ * tamaño aceptable, y guarda sus medidas y su huella.
13
+ */
14
+ [RichImagePatterns.register]: {
15
+ payload: { fileId: string; name: string; actor: { employeeId: string } };
16
+ response: RichImageResponseEntity;
17
+ };
18
+ /** El archivo de una imagen registrada, para mostrarla en el editor. */
19
+ [RichImagePatterns.getFile]: {
20
+ payload: { id: string };
21
+ response: { fileId: string; fileName: string; mimeType: string };
22
+ };
23
+ }
@@ -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
+ }