@muni-sanfer/types-gestor-documental 0.0.1-beta.2 → 0.0.1-beta.21

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 (146) hide show
  1. package/dist/base/entities.d.ts +607 -1
  2. package/dist/base/entities.js +133 -1
  3. package/dist/contracts/archivalSeries.contract.d.ts +50 -0
  4. package/dist/contracts/archivalSeries.contract.js +11 -0
  5. package/dist/contracts/audit.contract.d.ts +32 -0
  6. package/dist/contracts/audit.contract.js +8 -0
  7. package/dist/contracts/caseFile.contract.d.ts +262 -0
  8. package/dist/contracts/caseFile.contract.js +26 -0
  9. package/dist/contracts/document.contract.d.ts +145 -2
  10. package/dist/contracts/document.contract.js +9 -0
  11. package/dist/contracts/documentType.contract.d.ts +24 -1
  12. package/dist/contracts/holiday.contract.d.ts +30 -0
  13. package/dist/contracts/holiday.contract.js +9 -0
  14. package/dist/contracts/index.d.ts +162 -1
  15. package/dist/contracts/index.js +42 -0
  16. package/dist/contracts/indicators.contract.d.ts +103 -0
  17. package/dist/contracts/indicators.contract.js +15 -0
  18. package/dist/contracts/issuingEntity.contract.d.ts +52 -0
  19. package/dist/contracts/issuingEntity.contract.js +11 -0
  20. package/dist/contracts/partsOffice.contract.d.ts +177 -0
  21. package/dist/contracts/partsOffice.contract.js +23 -0
  22. package/dist/contracts/procedure.contract.d.ts +50 -0
  23. package/dist/contracts/procedure.contract.js +11 -0
  24. package/dist/contracts/registerBook.contract.d.ts +27 -0
  25. package/dist/contracts/registerBook.contract.js +8 -0
  26. package/dist/contracts/scan.contract.d.ts +63 -0
  27. package/dist/contracts/scan.contract.js +12 -0
  28. package/dist/contracts/signatureBatch.contract.d.ts +109 -0
  29. package/dist/contracts/signatureBatch.contract.js +12 -0
  30. package/dist/contracts/signatureCheck.contract.d.ts +14 -0
  31. package/dist/contracts/signatureCheck.contract.js +7 -0
  32. package/dist/contracts/textSnippet.contract.d.ts +51 -0
  33. package/dist/contracts/textSnippet.contract.js +11 -0
  34. package/dist/contracts/workFolder.contract.d.ts +114 -0
  35. package/dist/contracts/workFolder.contract.js +16 -0
  36. package/dist/entities/archivalSeries/archivalSeries.entity.d.ts +27 -0
  37. package/dist/entities/archivalSeries/archivalSeries.entity.js +2 -0
  38. package/dist/entities/archivalSeries/index.d.ts +1 -0
  39. package/dist/entities/archivalSeries/index.js +17 -0
  40. package/dist/entities/audit/audit.entity.d.ts +27 -0
  41. package/dist/entities/audit/audit.entity.js +2 -0
  42. package/dist/entities/audit/index.d.ts +1 -0
  43. package/dist/entities/audit/index.js +17 -0
  44. package/dist/entities/caseFile/caseFile.entity.d.ts +300 -0
  45. package/dist/entities/caseFile/caseFile.entity.js +2 -0
  46. package/dist/entities/caseFile/index.d.ts +1 -0
  47. package/dist/entities/caseFile/index.js +17 -0
  48. package/dist/entities/document/document.entity.d.ts +252 -0
  49. package/dist/entities/documentType/documentType.entity.d.ts +37 -1
  50. package/dist/entities/holiday/holiday.entity.d.ts +10 -0
  51. package/dist/entities/holiday/holiday.entity.js +2 -0
  52. package/dist/entities/holiday/index.d.ts +1 -0
  53. package/dist/entities/holiday/index.js +17 -0
  54. package/dist/entities/index.d.ts +14 -0
  55. package/dist/entities/index.js +14 -0
  56. package/dist/entities/indicators/index.d.ts +1 -0
  57. package/dist/entities/indicators/index.js +17 -0
  58. package/dist/entities/indicators/indicators.entity.d.ts +152 -0
  59. package/dist/entities/indicators/indicators.entity.js +2 -0
  60. package/dist/entities/issuingEntity/index.d.ts +1 -0
  61. package/dist/entities/issuingEntity/index.js +17 -0
  62. package/dist/entities/issuingEntity/issuingEntity.entity.d.ts +20 -0
  63. package/dist/entities/issuingEntity/issuingEntity.entity.js +2 -0
  64. package/dist/entities/partsOffice/index.d.ts +1 -0
  65. package/dist/entities/partsOffice/index.js +17 -0
  66. package/dist/entities/partsOffice/partsOffice.entity.d.ts +105 -0
  67. package/dist/entities/partsOffice/partsOffice.entity.js +2 -0
  68. package/dist/entities/procedure/index.d.ts +1 -0
  69. package/dist/entities/procedure/index.js +17 -0
  70. package/dist/entities/procedure/procedure.entity.d.ts +20 -0
  71. package/dist/entities/procedure/procedure.entity.js +2 -0
  72. package/dist/entities/registerBook/index.d.ts +1 -0
  73. package/dist/entities/registerBook/index.js +17 -0
  74. package/dist/entities/registerBook/registerBook.entity.d.ts +48 -0
  75. package/dist/entities/registerBook/registerBook.entity.js +2 -0
  76. package/dist/entities/scan/index.d.ts +1 -0
  77. package/dist/entities/scan/index.js +17 -0
  78. package/dist/entities/scan/scan.entity.d.ts +29 -0
  79. package/dist/entities/scan/scan.entity.js +2 -0
  80. package/dist/entities/signatureBatch/index.d.ts +1 -0
  81. package/dist/entities/signatureBatch/index.js +17 -0
  82. package/dist/entities/signatureBatch/signatureBatch.entity.d.ts +107 -0
  83. package/dist/entities/signatureBatch/signatureBatch.entity.js +2 -0
  84. package/dist/entities/signatureCheck/index.d.ts +1 -0
  85. package/dist/entities/signatureCheck/index.js +17 -0
  86. package/dist/entities/signatureCheck/signatureCheck.entity.d.ts +49 -0
  87. package/dist/entities/signatureCheck/signatureCheck.entity.js +2 -0
  88. package/dist/entities/textSnippet/index.d.ts +1 -0
  89. package/dist/entities/textSnippet/index.js +17 -0
  90. package/dist/entities/textSnippet/textSnippet.entity.d.ts +20 -0
  91. package/dist/entities/textSnippet/textSnippet.entity.js +2 -0
  92. package/dist/entities/workFolder/index.d.ts +1 -0
  93. package/dist/entities/workFolder/index.js +17 -0
  94. package/dist/entities/workFolder/workFolder.entity.d.ts +83 -0
  95. package/dist/entities/workFolder/workFolder.entity.js +2 -0
  96. package/package.json +1 -1
  97. package/src/base/entities.ts +716 -1
  98. package/src/contracts/archivalSeries.contract.ts +53 -0
  99. package/src/contracts/audit.contract.ts +30 -0
  100. package/src/contracts/caseFile.contract.ts +228 -0
  101. package/src/contracts/document.contract.ts +151 -2
  102. package/src/contracts/documentType.contract.ts +32 -2
  103. package/src/contracts/holiday.contract.ts +16 -0
  104. package/src/contracts/index.ts +58 -1
  105. package/src/contracts/indicators.contract.ts +80 -0
  106. package/src/contracts/issuingEntity.contract.ts +55 -0
  107. package/src/contracts/partsOffice.contract.ts +123 -0
  108. package/src/contracts/procedure.contract.ts +53 -0
  109. package/src/contracts/registerBook.contract.ts +24 -0
  110. package/src/contracts/scan.contract.ts +52 -0
  111. package/src/contracts/signatureBatch.contract.ts +96 -0
  112. package/src/contracts/signatureCheck.contract.ts +11 -0
  113. package/src/contracts/textSnippet.contract.ts +53 -0
  114. package/src/contracts/workFolder.contract.ts +75 -0
  115. package/src/entities/archivalSeries/archivalSeries.entity.ts +32 -0
  116. package/src/entities/archivalSeries/index.ts +1 -0
  117. package/src/entities/audit/audit.entity.ts +30 -0
  118. package/src/entities/audit/index.ts +1 -0
  119. package/src/entities/caseFile/caseFile.entity.ts +324 -0
  120. package/src/entities/caseFile/index.ts +1 -0
  121. package/src/entities/document/document.entity.ts +250 -0
  122. package/src/entities/documentType/documentType.entity.ts +31 -1
  123. package/src/entities/holiday/holiday.entity.ts +11 -0
  124. package/src/entities/holiday/index.ts +1 -0
  125. package/src/entities/index.ts +14 -0
  126. package/src/entities/indicators/index.ts +1 -0
  127. package/src/entities/indicators/indicators.entity.ts +157 -0
  128. package/src/entities/issuingEntity/index.ts +1 -0
  129. package/src/entities/issuingEntity/issuingEntity.entity.ts +24 -0
  130. package/src/entities/partsOffice/index.ts +1 -0
  131. package/src/entities/partsOffice/partsOffice.entity.ts +110 -0
  132. package/src/entities/procedure/index.ts +1 -0
  133. package/src/entities/procedure/procedure.entity.ts +24 -0
  134. package/src/entities/registerBook/index.ts +1 -0
  135. package/src/entities/registerBook/registerBook.entity.ts +52 -0
  136. package/src/entities/scan/index.ts +1 -0
  137. package/src/entities/scan/scan.entity.ts +32 -0
  138. package/src/entities/signatureBatch/index.ts +1 -0
  139. package/src/entities/signatureBatch/signatureBatch.entity.ts +110 -0
  140. package/src/entities/signatureCheck/index.ts +1 -0
  141. package/src/entities/signatureCheck/signatureCheck.entity.ts +51 -0
  142. package/src/entities/textSnippet/index.ts +1 -0
  143. package/src/entities/textSnippet/textSnippet.entity.ts +24 -0
  144. package/src/entities/workFolder/index.ts +1 -0
  145. package/src/entities/workFolder/workFolder.entity.ts +84 -0
  146. package/tsconfig.json +1 -3
@@ -1,15 +1,72 @@
1
+ import { CaseFilePatterns, type CaseFileContract } from './caseFile.contract';
1
2
  import { DocumentPatterns, type DocumentContract } from './document.contract';
2
3
  import { DocumentTypePatterns, type DocumentTypeContract } from './documentType.contract';
4
+ import { IssuingEntityPatterns, type IssuingEntityContract } from './issuingEntity.contract';
5
+ import { ArchivalSeriesPatterns, type ArchivalSeriesContract } from './archivalSeries.contract';
6
+ import { TextSnippetPatterns, type TextSnippetContract } from './textSnippet.contract';
7
+ import { HolidayPatterns, type HolidayContract } from './holiday.contract';
8
+ import { IndicatorsPatterns, type IndicatorsContract } from './indicators.contract';
9
+ import { AuditPatterns, type AuditContract } from './audit.contract';
10
+ import { SignatureCheckPatterns, type SignatureCheckContract } from './signatureCheck.contract';
11
+ import { ScanPatterns, type ScanContract } from './scan.contract';
12
+ import { PartsOfficePatterns, type PartsOfficeContract } from './partsOffice.contract';
13
+ import { ProcedurePatterns, type ProcedureContract } from './procedure.contract';
14
+ import { RegisterBookPatterns, type RegisterBookContract } from './registerBook.contract';
15
+ import { SignatureBatchPatterns, type SignatureBatchContract } from './signatureBatch.contract';
16
+ import { WorkFolderPatterns, type WorkFolderContract } from './workFolder.contract';
3
17
 
4
18
  export * from './contract';
5
19
  export * from './document.contract';
6
20
  export * from './documentType.contract';
21
+ export * from './procedure.contract';
22
+ export * from './issuingEntity.contract';
23
+ export * from './caseFile.contract';
24
+ export * from './partsOffice.contract';
25
+ export * from './registerBook.contract';
26
+ export * from './signatureBatch.contract';
27
+ export * from './workFolder.contract';
28
+ export * from './scan.contract';
29
+ export * from './archivalSeries.contract';
30
+ export * from './textSnippet.contract';
31
+ export * from './holiday.contract';
32
+ export * from './indicators.contract';
33
+ export * from './audit.contract';
34
+ export * from './signatureCheck.contract';
7
35
 
8
36
  /** Patrones NATS de gestor-documental-ms, por recurso: `gestorDocumental.<recurso>.<acción>`. */
9
37
  export const GestorDocumentalPatterns = {
10
38
  documentType: DocumentTypePatterns,
11
39
  document: DocumentPatterns,
40
+ procedure: ProcedurePatterns,
41
+ issuingEntity: IssuingEntityPatterns,
42
+ caseFile: CaseFilePatterns,
43
+ partsOffice: PartsOfficePatterns,
44
+ registerBook: RegisterBookPatterns,
45
+ signatureBatch: SignatureBatchPatterns,
46
+ workFolder: WorkFolderPatterns,
47
+ scan: ScanPatterns,
48
+ archivalSeries: ArchivalSeriesPatterns,
49
+ textSnippet: TextSnippetPatterns,
50
+ holiday: HolidayPatterns,
51
+ indicators: IndicatorsPatterns,
52
+ audit: AuditPatterns,
53
+ signatureCheck: SignatureCheckPatterns,
12
54
  } as const;
13
55
 
14
56
  /** Contrato completo de gestor-documental-ms: la unión de los contratos de sus recursos. */
15
- export type GestorDocumentalContract = DocumentTypeContract & DocumentContract;
57
+ export type GestorDocumentalContract = DocumentTypeContract &
58
+ DocumentContract &
59
+ ProcedureContract &
60
+ IssuingEntityContract &
61
+ CaseFileContract &
62
+ PartsOfficeContract &
63
+ RegisterBookContract &
64
+ SignatureBatchContract &
65
+ WorkFolderContract &
66
+ ScanContract &
67
+ ArchivalSeriesContract &
68
+ TextSnippetContract &
69
+ HolidayContract &
70
+ IndicatorsContract &
71
+ AuditContract &
72
+ SignatureCheckContract;
@@ -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,123 @@
1
+ import { type DocumentAccessLevel, type DocumentInstruction } from '../base/entities';
2
+ import {
3
+ type DocDigitalDocumentTypeEntity,
4
+ type DocDigitalEntityEntity,
5
+ type PartsOfficeInboundEntity,
6
+ type DocDigitalUserEntity,
7
+ type PartsOfficeDispatchEntity,
8
+ type PartsOfficeFileEntity,
9
+ type PartsOfficeOkResponseEntity,
10
+ type PartsOfficeRegisterResponseEntity,
11
+ type PartsOfficeStatusEntity,
12
+ type PartsOfficeSummaryEntity,
13
+ type PartsOfficeSyncResponseEntity,
14
+ } from '../entities';
15
+ import { type RpcPage } from './contract';
16
+ import { type DocumentActor, type DocumentExternalRecipientInput } from './document.contract';
17
+
18
+ /** Patrones NATS de `partsOffice` (Oficina de Partes y DocDigital): `<servicio>.<recurso>.<acción>`. */
19
+ export const PartsOfficePatterns = {
20
+ getStatus: 'gestorDocumental.partsOffice.getStatus',
21
+ getSummary: 'gestorDocumental.partsOffice.getSummary',
22
+ getEntities: 'gestorDocumental.partsOffice.getEntities',
23
+ getOwnEntities: 'gestorDocumental.partsOffice.getOwnEntities',
24
+ getUsers: 'gestorDocumental.partsOffice.getUsers',
25
+ getDocumentTypes: 'gestorDocumental.partsOffice.getDocumentTypes',
26
+ getDispatches: 'gestorDocumental.partsOffice.getDispatches',
27
+ dispatch: 'gestorDocumental.partsOffice.dispatch',
28
+ returnDispatch: 'gestorDocumental.partsOffice.returnDispatch',
29
+ resendDispatch: 'gestorDocumental.partsOffice.resendDispatch',
30
+ getDispatchFile: 'gestorDocumental.partsOffice.getDispatchFile',
31
+ getInbound: 'gestorDocumental.partsOffice.getInbound',
32
+ syncInbound: 'gestorDocumental.partsOffice.syncInbound',
33
+ registerInbound: 'gestorDocumental.partsOffice.registerInbound',
34
+ acknowledgeInbound: 'gestorDocumental.partsOffice.acknowledgeInbound',
35
+ returnInbound: 'gestorDocumental.partsOffice.returnInbound',
36
+ getInboundFile: 'gestorDocumental.partsOffice.getInboundFile',
37
+ } as const;
38
+
39
+ /** Destinatario interno de un ingreso, ya resuelto por el gateway (las áreas con sus integrantes). */
40
+ export type PartsOfficeRecipientInput =
41
+ | { type: 'Employee'; employeeId: string }
42
+ | { type: 'Directorate'; directorateCodeReference: number; name: string; memberEmployeeIds: string[] }
43
+ | { type: 'Department'; departmentId: string; name: string; memberEmployeeIds: string[] };
44
+
45
+ interface IListPayload<S> {
46
+ pagination?: { page?: number; limit?: number };
47
+ filters?: { search?: string; status?: S };
48
+ }
49
+
50
+ export interface PartsOfficeContract {
51
+ [PartsOfficePatterns.getStatus]: { payload: Record<string, never>; response: PartsOfficeStatusEntity };
52
+ [PartsOfficePatterns.getSummary]: { payload: Record<string, never>; response: PartsOfficeSummaryEntity };
53
+ /** Directorio de DocDigital: instituciones por nombre. */
54
+ [PartsOfficePatterns.getEntities]: { payload: { search?: string }; response: DocDigitalEntityEntity[] };
55
+ /** Entidades asociadas a las credenciales del gestor: la del municipio y las de sus entidades emisoras. */
56
+ [PartsOfficePatterns.getOwnEntities]: { payload: Record<string, never>; response: DocDigitalEntityEntity[] };
57
+ [PartsOfficePatterns.getUsers]: {
58
+ payload: { entityId: number; search?: string };
59
+ response: DocDigitalUserEntity[];
60
+ };
61
+ [PartsOfficePatterns.getDocumentTypes]: { payload: Record<string, never>; response: DocDigitalDocumentTypeEntity[] };
62
+ [PartsOfficePatterns.getDispatches]: {
63
+ payload: IListPayload<'Pending' | 'Dispatched' | 'Returned'>;
64
+ response: RpcPage<PartsOfficeDispatchEntity[]>;
65
+ };
66
+ /** Despacha por DocDigital, con el número del documento como folio. `operatorRun`: RUN de quien despacha. */
67
+ [PartsOfficePatterns.dispatch]: {
68
+ payload: { id: string; docDigitalTypeId: number; operatorRun?: string | null; actor: DocumentActor };
69
+ response: PartsOfficeOkResponseEntity & { docDigitalDocumentId: string };
70
+ };
71
+ /** Devuelve el despacho al redactor, con el motivo (por ejemplo, un destinatario equivocado). */
72
+ [PartsOfficePatterns.returnDispatch]: {
73
+ payload: { id: string; reason: string; actor: DocumentActor };
74
+ response: PartsOfficeOkResponseEntity;
75
+ };
76
+ /** El redactor corrige las instituciones de destino de un despacho devuelto y lo envía de nuevo a Partes. */
77
+ [PartsOfficePatterns.resendDispatch]: {
78
+ payload: { id: string; externalRecipients: DocumentExternalRecipientInput[]; actor: DocumentActor };
79
+ response: PartsOfficeOkResponseEntity;
80
+ };
81
+ /** PDF firmado de un documento por despachar, para que Oficina de Partes lo revise. */
82
+ [PartsOfficePatterns.getDispatchFile]: { payload: { id: string }; response: PartsOfficeFileEntity };
83
+ [PartsOfficePatterns.getInbound]: {
84
+ payload: IListPayload<'Pending' | 'Registered' | 'Returned'>;
85
+ response: RpcPage<PartsOfficeInboundEntity[]>;
86
+ };
87
+ /** Trae de DocDigital lo recibido que aún no tiene acuse de recibo. */
88
+ [PartsOfficePatterns.syncInbound]: { payload: Record<string, never>; response: PartsOfficeSyncResponseEntity };
89
+ /**
90
+ * Ingresa un recibido al gestor: le da folio de ingreso, lo deriva a quienes corresponda y da el acuse de recibo
91
+ * en DocDigital.
92
+ */
93
+ [PartsOfficePatterns.registerInbound]: {
94
+ payload: {
95
+ id: string;
96
+ documentTypeId: string;
97
+ keywords: string[];
98
+ accessLevel: DocumentAccessLevel;
99
+ hasSensitiveData: boolean;
100
+ recipients: PartsOfficeRecipientInput[];
101
+ instruction: DocumentInstruction;
102
+ note?: string | null;
103
+ dueAt?: string | null;
104
+ actor: DocumentActor;
105
+ };
106
+ response: PartsOfficeRegisterResponseEntity;
107
+ };
108
+ /** Reintenta el acuse de recibo de un recibido ya ingresado. */
109
+ [PartsOfficePatterns.acknowledgeInbound]: {
110
+ payload: { id: string; actor: DocumentActor };
111
+ response: PartsOfficeOkResponseEntity;
112
+ };
113
+ /** Devuelve el recibido a la institución que lo envió, con el motivo (entre 3 y 255 caracteres). */
114
+ [PartsOfficePatterns.returnInbound]: {
115
+ payload: { id: string; reason: string; actor: DocumentActor };
116
+ response: PartsOfficeOkResponseEntity;
117
+ };
118
+ /** Archivo de un recibido: el principal o, con `attachment`, uno de sus anexos (por su posición). */
119
+ [PartsOfficePatterns.getInboundFile]: {
120
+ payload: { id: string; attachment?: number };
121
+ response: PartsOfficeFileEntity;
122
+ };
123
+ }
@@ -0,0 +1,53 @@
1
+ import { type ProcedureEntity } from '../base/entities';
2
+ import {
3
+ type ProcedureCreateResponseEntity,
4
+ type ProcedureGetAllResponseEntity,
5
+ type ProcedureGetByIdResponseEntity,
6
+ type ProcedureUpdateResponseEntity,
7
+ } from '../entities';
8
+ import { type RpcPage } from './contract';
9
+
10
+ /** Patrones NATS de `procedure`: `<servicio>.<recurso>.<acción>`. */
11
+ export const ProcedurePatterns = {
12
+ getAll: 'gestorDocumental.procedure.getAll',
13
+ getById: 'gestorDocumental.procedure.getById',
14
+ create: 'gestorDocumental.procedure.create',
15
+ update: 'gestorDocumental.procedure.update',
16
+ setEnabled: 'gestorDocumental.procedure.setEnabled',
17
+ } as const;
18
+
19
+ /** Datos de un procedimiento administrativo al crearlo o editarlo. */
20
+ export interface ProcedureWritePayload {
21
+ name: string;
22
+ cpatId?: string | null;
23
+ cpatCode?: string | null;
24
+ description?: string | null;
25
+ enabled?: boolean;
26
+ }
27
+
28
+ export interface ProcedureContract {
29
+ [ProcedurePatterns.getAll]: {
30
+ // sin `page` y `limit` responde todos en una sola página
31
+ payload: {
32
+ pagination?: { page?: number; limit?: number };
33
+ filters?: { search?: string; enabled?: boolean };
34
+ };
35
+ response: RpcPage<ProcedureGetAllResponseEntity[]>;
36
+ };
37
+ [ProcedurePatterns.getById]: {
38
+ payload: Pick<ProcedureEntity, 'id'>;
39
+ response: ProcedureGetByIdResponseEntity;
40
+ };
41
+ [ProcedurePatterns.create]: {
42
+ payload: ProcedureWritePayload;
43
+ response: ProcedureCreateResponseEntity;
44
+ };
45
+ [ProcedurePatterns.update]: {
46
+ payload: ProcedureWritePayload & Pick<ProcedureEntity, 'id'>;
47
+ response: ProcedureUpdateResponseEntity;
48
+ };
49
+ [ProcedurePatterns.setEnabled]: {
50
+ payload: Pick<ProcedureEntity, 'id' | 'enabled'>;
51
+ response: ProcedureUpdateResponseEntity;
52
+ };
53
+ }
@@ -0,0 +1,24 @@
1
+ import { type RegisterBookEntity, type RegisterBookExportEntity, type RegisterBookKind } from '../entities';
2
+
3
+ /** Patrones NATS de `registerBook` (libros de registro): `<servicio>.<recurso>.<acción>`. */
4
+ export const RegisterBookPatterns = {
5
+ get: 'gestorDocumental.registerBook.get',
6
+ export: 'gestorDocumental.registerBook.export',
7
+ } as const;
8
+
9
+ /** Qué libro y qué período: un año y, si se indica, un mes. El de un tipo documental exige el tipo. */
10
+ export interface RegisterBookQuery {
11
+ kind: RegisterBookKind;
12
+ documentTypeId?: string;
13
+ year: number;
14
+ month?: number | null;
15
+ }
16
+
17
+ export interface RegisterBookContract {
18
+ [RegisterBookPatterns.get]: { payload: RegisterBookQuery; response: RegisterBookEntity };
19
+ /** El libro en Excel o PDF. `generatedBy`: quién lo descarga (va en el encabezado). */
20
+ [RegisterBookPatterns.export]: {
21
+ payload: RegisterBookQuery & { format: 'xlsx' | 'pdf'; generatedBy: string };
22
+ response: RegisterBookExportEntity;
23
+ };
24
+ }
@@ -0,0 +1,52 @@
1
+ import {
2
+ type ScanSessionCreateResponseEntity,
3
+ type ScanSessionFileResponseEntity,
4
+ type ScanSessionPublicEntity,
5
+ type ScanSessionResponseEntity,
6
+ } from '../entities';
7
+ import { type DocumentActor } from './document.contract';
8
+
9
+ /** Patrones NATS de `scan`: escanear con el celular. */
10
+ export const ScanPatterns = {
11
+ create: 'gestorDocumental.scan.create',
12
+ getById: 'gestorDocumental.scan.getById',
13
+ getFile: 'gestorDocumental.scan.getFile',
14
+ getByToken: 'gestorDocumental.scan.getByToken',
15
+ addPage: 'gestorDocumental.scan.addPage',
16
+ finish: 'gestorDocumental.scan.finish',
17
+ } as const;
18
+
19
+ export interface ScanContract {
20
+ /**
21
+ * Abre una sesión de escaneo para el funcionario. `url` es la dirección pública del celular (sin el token): con ella
22
+ * se arma el QR que se muestra en el escritorio.
23
+ */
24
+ [ScanPatterns.create]: {
25
+ payload: { url: string; actor: DocumentActor };
26
+ response: ScanSessionCreateResponseEntity;
27
+ };
28
+ /** Estado de la sesión, para quien la abrió: el escritorio la consulta hasta que el PDF esté listo. */
29
+ [ScanPatterns.getById]: {
30
+ payload: { id: string; actor: DocumentActor };
31
+ response: ScanSessionResponseEntity;
32
+ };
33
+ [ScanPatterns.getFile]: {
34
+ payload: { id: string; actor: DocumentActor };
35
+ response: ScanSessionFileResponseEntity;
36
+ };
37
+ /** Sin sesión, desde el celular, con el token del QR. */
38
+ [ScanPatterns.getByToken]: {
39
+ payload: { token: string };
40
+ response: ScanSessionPublicEntity;
41
+ };
42
+ /** Agrega una foto ya subida al gestor de archivos (la sube el gateway). */
43
+ [ScanPatterns.addPage]: {
44
+ payload: { token: string; fileId: string; contentType: string; size: number };
45
+ response: ScanSessionPublicEntity;
46
+ };
47
+ /** Junta las fotos en un PDF y cierra la sesión. */
48
+ [ScanPatterns.finish]: {
49
+ payload: { token: string };
50
+ response: ScanSessionPublicEntity;
51
+ };
52
+ }
@@ -0,0 +1,96 @@
1
+ import { type DocumentAccessLevel } from '../base/entities';
2
+ import {
3
+ type SignatureBatchCreateResponseEntity,
4
+ type SignatureBatchGetAllResponseEntity,
5
+ type SignatureBatchGetByIdResponseEntity,
6
+ type SignatureBatchRejectResponseEntity,
7
+ type SignatureBatchSignResponseEntity,
8
+ type SignatureBatchTab,
9
+ type SignatureBatchVisaResponseEntity,
10
+ } from '../entities';
11
+ import { type RpcPage } from './contract';
12
+ import { type DocumentActor } from './document.contract';
13
+
14
+ /** Patrones NATS de `signatureBatch` (lotes de firma): `<servicio>.<recurso>.<acción>`. */
15
+ export const SignatureBatchPatterns = {
16
+ getAll: 'gestorDocumental.signatureBatch.getAll',
17
+ getById: 'gestorDocumental.signatureBatch.getById',
18
+ create: 'gestorDocumental.signatureBatch.create',
19
+ visa: 'gestorDocumental.signatureBatch.visa',
20
+ sign: 'gestorDocumental.signatureBatch.sign',
21
+ reject: 'gestorDocumental.signatureBatch.reject',
22
+ } as const;
23
+
24
+ /** Datos de quien firma, para el sello de la firma (los resuelve el gateway desde la sesión). */
25
+ export interface SignatureBatchSigner {
26
+ rut: string;
27
+ fullName: string;
28
+ role: string;
29
+ areaName: string;
30
+ }
31
+
32
+ export interface SignatureBatchContract {
33
+ [SignatureBatchPatterns.getAll]: {
34
+ payload: {
35
+ pagination?: { page?: number; limit?: number };
36
+ filters?: { search?: string; tab?: SignatureBatchTab };
37
+ actor: DocumentActor;
38
+ };
39
+ response: RpcPage<SignatureBatchGetAllResponseEntity[]>;
40
+ };
41
+ /** Lo ven su redactor y quienes visan o firman sus documentos; con `viewAll`, quien lleva el registro. */
42
+ [SignatureBatchPatterns.getById]: {
43
+ payload: { id: string; actor: DocumentActor; viewAll?: boolean };
44
+ response: SignatureBatchGetByIdResponseEntity;
45
+ };
46
+ /**
47
+ * Crea el lote y lo envía a tramitación: un documento por cada PDF, todos del mismo tipo y con el mismo flujo.
48
+ * Cada documento recibe su código de verificación y, con su primera firma, su número (si el tipo lo lleva).
49
+ */
50
+ [SignatureBatchPatterns.create]: {
51
+ payload: {
52
+ name: string;
53
+ documentTypeId: string;
54
+ keywords: string[];
55
+ accessLevel?: DocumentAccessLevel;
56
+ hasSensitiveData?: boolean;
57
+ directorateCodeReference?: number | null;
58
+ departmentId?: string | null;
59
+ visaEmployeeIds?: string[];
60
+ // Etapa de cada visador: los de una misma etapa visan a la vez.
61
+ visaStages?: number[] | null;
62
+ signatureEmployeeIds: string[];
63
+ signatureSheet?: boolean;
64
+ documents: { subject: string; file: { fileId: string; name: string } }[];
65
+ actor: DocumentActor;
66
+ };
67
+ response: SignatureBatchCreateResponseEntity;
68
+ };
69
+ /** Visa de una vez los documentos del lote que el funcionario tiene en su turno de visación. */
70
+ [SignatureBatchPatterns.visa]: {
71
+ payload: { id: string; observation?: string | null; actor: DocumentActor };
72
+ response: SignatureBatchVisaResponseEntity;
73
+ };
74
+ /**
75
+ * Firma con un solo OTP los documentos del lote que el funcionario tiene en su turno de firma. FirmaGob admite 5 MB
76
+ * por solicitud: los que no caben quedan en `remaining`, para firmarlos con un OTP nuevo.
77
+ */
78
+ [SignatureBatchPatterns.sign]: {
79
+ payload: {
80
+ id: string;
81
+ observation?: string | null;
82
+ signer: SignatureBatchSigner;
83
+ otp?: string;
84
+ actor: DocumentActor;
85
+ };
86
+ response: SignatureBatchSignResponseEntity;
87
+ };
88
+ /**
89
+ * Devuelve a su redactor los documentos del lote que el funcionario tiene en su turno: todos, o los indicados en
90
+ * `documentIds`. Los demás siguen su curso.
91
+ */
92
+ [SignatureBatchPatterns.reject]: {
93
+ payload: { id: string; observation: string; documentIds?: string[]; actor: DocumentActor };
94
+ response: SignatureBatchRejectResponseEntity;
95
+ };
96
+ }
@@ -0,0 +1,11 @@
1
+ import { type PdfSignatureReportEntity } from '../entities';
2
+
3
+ /** Patrones NATS de `signatureCheck`: revisión de las firmas electrónicas de un PDF. */
4
+ export const SignatureCheckPatterns = {
5
+ check: 'gestorDocumental.signatureCheck.check',
6
+ } as const;
7
+
8
+ export interface SignatureCheckContract {
9
+ /** Revisa un PDF ya subido al gestor de archivos (la herramienta «Validar firmas» lo sube antes). */
10
+ [SignatureCheckPatterns.check]: { payload: { fileId: string }; response: PdfSignatureReportEntity };
11
+ }
@@ -0,0 +1,53 @@
1
+ import { type TextSnippetEntity, type TextSnippetSection } from '../base/entities';
2
+ import {
3
+ type TextSnippetCreateResponseEntity,
4
+ type TextSnippetGetAllResponseEntity,
5
+ type TextSnippetGetByIdResponseEntity,
6
+ type TextSnippetUpdateResponseEntity,
7
+ } from '../entities';
8
+ import { type RpcPage } from './contract';
9
+
10
+ /** Patrones NATS de `textSnippet` (biblioteca de vistos y cláusulas): `<servicio>.<recurso>.<acción>`. */
11
+ export const TextSnippetPatterns = {
12
+ getAll: 'gestorDocumental.textSnippet.getAll',
13
+ getById: 'gestorDocumental.textSnippet.getById',
14
+ create: 'gestorDocumental.textSnippet.create',
15
+ update: 'gestorDocumental.textSnippet.update',
16
+ setEnabled: 'gestorDocumental.textSnippet.setEnabled',
17
+ } as const;
18
+
19
+ /** Datos de un texto de la biblioteca al crearlo o editarlo. */
20
+ export interface TextSnippetWritePayload {
21
+ title: string;
22
+ text: string;
23
+ section: TextSnippetSection;
24
+ keywords?: string[];
25
+ enabled?: boolean;
26
+ }
27
+
28
+ export interface TextSnippetContract {
29
+ [TextSnippetPatterns.getAll]: {
30
+ // sin `page` y `limit` responde todas en una sola página
31
+ payload: {
32
+ pagination?: { page?: number; limit?: number };
33
+ filters?: { search?: string; enabled?: boolean; section?: TextSnippetSection };
34
+ };
35
+ response: RpcPage<TextSnippetGetAllResponseEntity[]>;
36
+ };
37
+ [TextSnippetPatterns.getById]: {
38
+ payload: Pick<TextSnippetEntity, 'id'>;
39
+ response: TextSnippetGetByIdResponseEntity;
40
+ };
41
+ [TextSnippetPatterns.create]: {
42
+ payload: TextSnippetWritePayload;
43
+ response: TextSnippetCreateResponseEntity;
44
+ };
45
+ [TextSnippetPatterns.update]: {
46
+ payload: TextSnippetWritePayload & Pick<TextSnippetEntity, 'id'>;
47
+ response: TextSnippetUpdateResponseEntity;
48
+ };
49
+ [TextSnippetPatterns.setEnabled]: {
50
+ payload: Pick<TextSnippetEntity, 'id' | 'enabled'>;
51
+ response: TextSnippetUpdateResponseEntity;
52
+ };
53
+ }