@muni-sanfer/types-gestor-documental 0.0.1-beta.4 → 0.0.1-beta.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base/entities.d.ts +1024 -4
- package/dist/base/entities.js +248 -1
- package/dist/contracts/accessRequest.contract.d.ts +109 -0
- package/dist/contracts/accessRequest.contract.js +12 -0
- package/dist/contracts/archivalSeries.contract.d.ts +56 -0
- package/dist/contracts/archivalSeries.contract.js +11 -0
- package/dist/contracts/audit.contract.d.ts +32 -0
- package/dist/contracts/audit.contract.js +8 -0
- package/dist/contracts/caseFile.contract.d.ts +124 -1
- package/dist/contracts/caseFile.contract.js +10 -0
- package/dist/contracts/dataProtection.contract.d.ts +256 -0
- package/dist/contracts/dataProtection.contract.js +23 -0
- package/dist/contracts/desk.contract.d.ts +88 -0
- package/dist/contracts/desk.contract.js +13 -0
- package/dist/contracts/document.contract.d.ts +219 -3
- package/dist/contracts/document.contract.js +15 -0
- package/dist/contracts/documentTemplate.contract.d.ts +58 -0
- package/dist/contracts/documentTemplate.contract.js +12 -0
- package/dist/contracts/documentType.contract.d.ts +13 -1
- package/dist/contracts/draftingRequest.contract.d.ts +94 -0
- package/dist/contracts/draftingRequest.contract.js +11 -0
- package/dist/contracts/holiday.contract.d.ts +30 -0
- package/dist/contracts/holiday.contract.js +9 -0
- package/dist/contracts/index.d.ts +265 -1
- package/dist/contracts/index.js +69 -0
- package/dist/contracts/indicators.contract.d.ts +103 -0
- package/dist/contracts/indicators.contract.js +15 -0
- package/dist/contracts/internalReview.contract.d.ts +86 -0
- package/dist/contracts/internalReview.contract.js +12 -0
- package/dist/contracts/issuingEntity.contract.d.ts +52 -0
- package/dist/contracts/issuingEntity.contract.js +11 -0
- package/dist/contracts/mailIntake.contract.d.ts +61 -0
- package/dist/contracts/mailIntake.contract.js +15 -0
- package/dist/contracts/partsOffice.contract.d.ts +263 -0
- package/dist/contracts/partsOffice.contract.js +27 -0
- package/dist/contracts/push.contract.d.ts +59 -0
- package/dist/contracts/push.contract.js +14 -0
- package/dist/contracts/registerBook.contract.d.ts +27 -0
- package/dist/contracts/registerBook.contract.js +8 -0
- package/dist/contracts/repositoryExport.contract.d.ts +57 -0
- package/dist/contracts/repositoryExport.contract.js +13 -0
- package/dist/contracts/retention.contract.d.ts +58 -0
- package/dist/contracts/retention.contract.js +11 -0
- package/dist/contracts/scan.contract.d.ts +63 -0
- package/dist/contracts/scan.contract.js +12 -0
- package/dist/contracts/signatureBatch.contract.d.ts +109 -0
- package/dist/contracts/signatureBatch.contract.js +12 -0
- package/dist/contracts/signatureCheck.contract.d.ts +14 -0
- package/dist/contracts/signatureCheck.contract.js +7 -0
- package/dist/contracts/textSnippet.contract.d.ts +51 -0
- package/dist/contracts/textSnippet.contract.js +11 -0
- package/dist/contracts/transparency.contract.d.ts +96 -0
- package/dist/contracts/transparency.contract.js +12 -0
- package/dist/contracts/workFolder.contract.d.ts +114 -0
- package/dist/contracts/workFolder.contract.js +16 -0
- package/dist/entities/accessRequest/accessRequest.entity.d.ts +73 -0
- package/dist/entities/accessRequest/accessRequest.entity.js +2 -0
- package/dist/entities/accessRequest/index.d.ts +1 -0
- package/dist/entities/accessRequest/index.js +17 -0
- package/dist/entities/archivalSeries/archivalSeries.entity.d.ts +32 -0
- package/dist/entities/archivalSeries/archivalSeries.entity.js +2 -0
- package/dist/entities/archivalSeries/index.d.ts +1 -0
- package/dist/entities/archivalSeries/index.js +17 -0
- package/dist/entities/audit/audit.entity.d.ts +30 -0
- package/dist/entities/audit/audit.entity.js +2 -0
- package/dist/entities/audit/index.d.ts +1 -0
- package/dist/entities/audit/index.js +17 -0
- package/dist/entities/caseFile/caseFile.entity.d.ts +135 -0
- package/dist/entities/dataProtection/dataProtection.entity.d.ts +180 -0
- package/dist/entities/dataProtection/dataProtection.entity.js +2 -0
- package/dist/entities/dataProtection/index.d.ts +1 -0
- package/dist/entities/dataProtection/index.js +17 -0
- package/dist/entities/desk/desk.entity.d.ts +25 -0
- package/dist/entities/desk/desk.entity.js +2 -0
- package/dist/entities/desk/index.d.ts +1 -0
- package/dist/entities/desk/index.js +17 -0
- package/dist/entities/document/document.entity.d.ts +436 -1
- package/dist/entities/documentTemplate/documentTemplate.entity.d.ts +51 -0
- package/dist/entities/documentTemplate/documentTemplate.entity.js +2 -0
- package/dist/entities/documentTemplate/index.d.ts +1 -0
- package/dist/entities/documentTemplate/index.js +17 -0
- package/dist/entities/documentType/documentType.entity.d.ts +25 -0
- package/dist/entities/draftingRequest/draftingRequest.entity.d.ts +76 -0
- package/dist/entities/draftingRequest/draftingRequest.entity.js +2 -0
- package/dist/entities/draftingRequest/index.d.ts +1 -0
- package/dist/entities/draftingRequest/index.js +17 -0
- package/dist/entities/holiday/holiday.entity.d.ts +10 -0
- package/dist/entities/holiday/holiday.entity.js +2 -0
- package/dist/entities/holiday/index.d.ts +1 -0
- package/dist/entities/holiday/index.js +17 -0
- package/dist/entities/index.d.ts +23 -0
- package/dist/entities/index.js +23 -0
- package/dist/entities/indicators/index.d.ts +1 -0
- package/dist/entities/indicators/index.js +17 -0
- package/dist/entities/indicators/indicators.entity.d.ts +152 -0
- package/dist/entities/indicators/indicators.entity.js +2 -0
- package/dist/entities/internalReview/index.d.ts +1 -0
- package/dist/entities/internalReview/index.js +17 -0
- package/dist/entities/internalReview/internalReview.entity.d.ts +59 -0
- package/dist/entities/internalReview/internalReview.entity.js +2 -0
- package/dist/entities/issuingEntity/index.d.ts +1 -0
- package/dist/entities/issuingEntity/index.js +17 -0
- package/dist/entities/issuingEntity/issuingEntity.entity.d.ts +20 -0
- package/dist/entities/issuingEntity/issuingEntity.entity.js +2 -0
- package/dist/entities/mailIntake/index.d.ts +1 -0
- package/dist/entities/mailIntake/index.js +17 -0
- package/dist/entities/mailIntake/mailIntake.entity.d.ts +51 -0
- package/dist/entities/mailIntake/mailIntake.entity.js +2 -0
- package/dist/entities/partsOffice/index.d.ts +1 -0
- package/dist/entities/partsOffice/index.js +17 -0
- package/dist/entities/partsOffice/partsOffice.entity.d.ts +137 -0
- package/dist/entities/partsOffice/partsOffice.entity.js +2 -0
- package/dist/entities/push/index.d.ts +1 -0
- package/dist/entities/push/index.js +17 -0
- package/dist/entities/push/push.entity.d.ts +28 -0
- package/dist/entities/push/push.entity.js +2 -0
- package/dist/entities/registerBook/index.d.ts +1 -0
- package/dist/entities/registerBook/index.js +17 -0
- package/dist/entities/registerBook/registerBook.entity.d.ts +48 -0
- package/dist/entities/registerBook/registerBook.entity.js +2 -0
- package/dist/entities/repositoryExport/index.d.ts +1 -0
- package/dist/entities/repositoryExport/index.js +17 -0
- package/dist/entities/repositoryExport/repositoryExport.entity.d.ts +124 -0
- package/dist/entities/repositoryExport/repositoryExport.entity.js +2 -0
- package/dist/entities/retention/index.d.ts +1 -0
- package/dist/entities/retention/index.js +17 -0
- package/dist/entities/retention/retention.entity.d.ts +49 -0
- package/dist/entities/retention/retention.entity.js +2 -0
- package/dist/entities/scan/index.d.ts +1 -0
- package/dist/entities/scan/index.js +17 -0
- package/dist/entities/scan/scan.entity.d.ts +29 -0
- package/dist/entities/scan/scan.entity.js +2 -0
- package/dist/entities/signatureBatch/index.d.ts +1 -0
- package/dist/entities/signatureBatch/index.js +17 -0
- package/dist/entities/signatureBatch/signatureBatch.entity.d.ts +107 -0
- package/dist/entities/signatureBatch/signatureBatch.entity.js +2 -0
- package/dist/entities/signatureCheck/index.d.ts +1 -0
- package/dist/entities/signatureCheck/index.js +17 -0
- package/dist/entities/signatureCheck/signatureCheck.entity.d.ts +60 -0
- package/dist/entities/signatureCheck/signatureCheck.entity.js +2 -0
- package/dist/entities/textSnippet/index.d.ts +1 -0
- package/dist/entities/textSnippet/index.js +17 -0
- package/dist/entities/textSnippet/textSnippet.entity.d.ts +20 -0
- package/dist/entities/textSnippet/textSnippet.entity.js +2 -0
- package/dist/entities/transparency/index.d.ts +1 -0
- package/dist/entities/transparency/index.js +17 -0
- package/dist/entities/transparency/transparency.entity.d.ts +77 -0
- package/dist/entities/transparency/transparency.entity.js +2 -0
- package/dist/entities/workFolder/index.d.ts +1 -0
- package/dist/entities/workFolder/index.js +17 -0
- package/dist/entities/workFolder/workFolder.entity.d.ts +83 -0
- package/dist/entities/workFolder/workFolder.entity.js +2 -0
- package/package.json +1 -1
- package/src/base/entities.ts +1197 -4
- package/src/contracts/accessRequest.contract.ts +81 -0
- package/src/contracts/archivalSeries.contract.ts +59 -0
- package/src/contracts/audit.contract.ts +30 -0
- package/src/contracts/caseFile.contract.ts +107 -2
- package/src/contracts/dataProtection.contract.ts +197 -0
- package/src/contracts/desk.contract.ts +72 -0
- package/src/contracts/document.contract.ts +202 -2
- package/src/contracts/documentTemplate.contract.ts +61 -0
- package/src/contracts/documentType.contract.ts +29 -3
- package/src/contracts/draftingRequest.contract.ts +73 -0
- package/src/contracts/holiday.contract.ts +16 -0
- package/src/contracts/index.ts +96 -1
- package/src/contracts/indicators.contract.ts +80 -0
- package/src/contracts/internalReview.contract.ts +66 -0
- package/src/contracts/issuingEntity.contract.ts +55 -0
- package/src/contracts/mailIntake.contract.ts +49 -0
- package/src/contracts/partsOffice.contract.ts +199 -0
- package/src/contracts/push.contract.ts +41 -0
- package/src/contracts/registerBook.contract.ts +24 -0
- package/src/contracts/repositoryExport.contract.ts +54 -0
- package/src/contracts/retention.contract.ts +44 -0
- package/src/contracts/scan.contract.ts +52 -0
- package/src/contracts/signatureBatch.contract.ts +96 -0
- package/src/contracts/signatureCheck.contract.ts +11 -0
- package/src/contracts/textSnippet.contract.ts +53 -0
- package/src/contracts/transparency.contract.ts +55 -0
- package/src/contracts/workFolder.contract.ts +75 -0
- package/src/entities/accessRequest/accessRequest.entity.ts +78 -0
- package/src/entities/accessRequest/index.ts +1 -0
- package/src/entities/archivalSeries/archivalSeries.entity.ts +37 -0
- package/src/entities/archivalSeries/index.ts +1 -0
- package/src/entities/audit/audit.entity.ts +41 -0
- package/src/entities/audit/index.ts +1 -0
- package/src/entities/caseFile/caseFile.entity.ts +132 -0
- package/src/entities/dataProtection/dataProtection.entity.ts +191 -0
- package/src/entities/dataProtection/index.ts +1 -0
- package/src/entities/desk/desk.entity.ts +28 -0
- package/src/entities/desk/index.ts +1 -0
- package/src/entities/document/document.entity.ts +412 -0
- package/src/entities/documentTemplate/documentTemplate.entity.ts +58 -0
- package/src/entities/documentTemplate/index.ts +1 -0
- package/src/entities/documentType/documentType.entity.ts +19 -0
- package/src/entities/draftingRequest/draftingRequest.entity.ts +78 -0
- package/src/entities/draftingRequest/index.ts +1 -0
- package/src/entities/holiday/holiday.entity.ts +11 -0
- package/src/entities/holiday/index.ts +1 -0
- package/src/entities/index.ts +23 -0
- package/src/entities/indicators/index.ts +1 -0
- package/src/entities/indicators/indicators.entity.ts +157 -0
- package/src/entities/internalReview/index.ts +1 -0
- package/src/entities/internalReview/internalReview.entity.ts +57 -0
- package/src/entities/issuingEntity/index.ts +1 -0
- package/src/entities/issuingEntity/issuingEntity.entity.ts +24 -0
- package/src/entities/mailIntake/index.ts +1 -0
- package/src/entities/mailIntake/mailIntake.entity.ts +55 -0
- package/src/entities/partsOffice/index.ts +1 -0
- package/src/entities/partsOffice/partsOffice.entity.ts +138 -0
- package/src/entities/push/index.ts +1 -0
- package/src/entities/push/push.entity.ts +31 -0
- package/src/entities/registerBook/index.ts +1 -0
- package/src/entities/registerBook/registerBook.entity.ts +52 -0
- package/src/entities/repositoryExport/index.ts +1 -0
- package/src/entities/repositoryExport/repositoryExport.entity.ts +86 -0
- package/src/entities/retention/index.ts +1 -0
- package/src/entities/retention/retention.entity.ts +53 -0
- package/src/entities/scan/index.ts +1 -0
- package/src/entities/scan/scan.entity.ts +32 -0
- package/src/entities/signatureBatch/index.ts +1 -0
- package/src/entities/signatureBatch/signatureBatch.entity.ts +110 -0
- package/src/entities/signatureCheck/index.ts +1 -0
- package/src/entities/signatureCheck/signatureCheck.entity.ts +63 -0
- package/src/entities/textSnippet/index.ts +1 -0
- package/src/entities/textSnippet/textSnippet.entity.ts +24 -0
- package/src/entities/transparency/index.ts +1 -0
- package/src/entities/transparency/transparency.entity.ts +78 -0
- package/src/entities/workFolder/index.ts +1 -0
- package/src/entities/workFolder/workFolder.entity.ts +84 -0
- package/tsconfig.json +1 -3
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { type AccessRequestChannel, type AccessRequestResolution } from '../base/entities';
|
|
2
|
+
import {
|
|
3
|
+
type AccessRequestDetailEntity,
|
|
4
|
+
type AccessRequestListItemEntity,
|
|
5
|
+
type AccessRequestSummaryEntity,
|
|
6
|
+
} from '../entities';
|
|
7
|
+
import { type RpcPage } from './contract';
|
|
8
|
+
|
|
9
|
+
/** Patrones NATS de `accessRequest`: solicitudes de acceso a la información pública (Ley 20.285). */
|
|
10
|
+
export const AccessRequestPatterns = {
|
|
11
|
+
getAll: 'gestorDocumental.accessRequest.getAll',
|
|
12
|
+
getById: 'gestorDocumental.accessRequest.getById',
|
|
13
|
+
getSummary: 'gestorDocumental.accessRequest.getSummary',
|
|
14
|
+
create: 'gestorDocumental.accessRequest.create',
|
|
15
|
+
update: 'gestorDocumental.accessRequest.update',
|
|
16
|
+
act: 'gestorDocumental.accessRequest.act',
|
|
17
|
+
} as const;
|
|
18
|
+
|
|
19
|
+
export interface AccessRequestWritePayload {
|
|
20
|
+
externalFolio?: string | null;
|
|
21
|
+
channel: AccessRequestChannel;
|
|
22
|
+
/** Fecha y hora de ingreso (ISO): desde ahí corren los 20 días hábiles. */
|
|
23
|
+
receivedAt: string;
|
|
24
|
+
requesterName: string;
|
|
25
|
+
requesterEmail?: string | null;
|
|
26
|
+
requesterAddress?: string | null;
|
|
27
|
+
requestText: string;
|
|
28
|
+
deliveryFormat?: string | null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Lo que se hace con una solicitud, un paso a la vez. */
|
|
32
|
+
export type AccessRequestAction =
|
|
33
|
+
| { type: 'requestCorrection'; note: string }
|
|
34
|
+
| { type: 'registerCorrection'; correctedAt?: string | null; note?: string | null }
|
|
35
|
+
| { type: 'assign'; employeeId: string; fullName: string; note?: string | null }
|
|
36
|
+
| { type: 'notifyThirdParty'; note: string }
|
|
37
|
+
| { type: 'registerOpposition'; opposed: boolean; note?: string | null }
|
|
38
|
+
| { type: 'extend'; note: string }
|
|
39
|
+
| {
|
|
40
|
+
type: 'resolve';
|
|
41
|
+
resolution: AccessRequestResolution;
|
|
42
|
+
grounds?: string[];
|
|
43
|
+
derivedTo?: string | null;
|
|
44
|
+
note?: string | null;
|
|
45
|
+
responseDocumentId?: string | null;
|
|
46
|
+
documentIds?: string[];
|
|
47
|
+
}
|
|
48
|
+
| { type: 'registerAppeal'; appealedAt?: string | null; note: string };
|
|
49
|
+
|
|
50
|
+
export interface AccessRequestActor {
|
|
51
|
+
employeeId: string;
|
|
52
|
+
fullName: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface AccessRequestContract {
|
|
56
|
+
[AccessRequestPatterns.getAll]: {
|
|
57
|
+
payload: {
|
|
58
|
+
status?: 'open' | 'resolved' | 'all';
|
|
59
|
+
year?: number | null;
|
|
60
|
+
search?: string;
|
|
61
|
+
page?: number;
|
|
62
|
+
limit?: number;
|
|
63
|
+
};
|
|
64
|
+
response: RpcPage<AccessRequestListItemEntity[]>;
|
|
65
|
+
};
|
|
66
|
+
[AccessRequestPatterns.getById]: { payload: { id: string }; response: AccessRequestDetailEntity };
|
|
67
|
+
[AccessRequestPatterns.getSummary]: { payload: { year: number }; response: AccessRequestSummaryEntity };
|
|
68
|
+
[AccessRequestPatterns.create]: {
|
|
69
|
+
payload: AccessRequestWritePayload & { actor: AccessRequestActor };
|
|
70
|
+
response: AccessRequestDetailEntity;
|
|
71
|
+
};
|
|
72
|
+
/** Corrige los datos mientras no está resuelta. */
|
|
73
|
+
[AccessRequestPatterns.update]: {
|
|
74
|
+
payload: AccessRequestWritePayload & { id: string; actor: AccessRequestActor };
|
|
75
|
+
response: AccessRequestDetailEntity;
|
|
76
|
+
};
|
|
77
|
+
[AccessRequestPatterns.act]: {
|
|
78
|
+
payload: { id: string; action: AccessRequestAction; actor: AccessRequestActor };
|
|
79
|
+
response: AccessRequestDetailEntity;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type FinalDisposition } from '../base/entities';
|
|
2
|
+
import { type ArchivalSeriesEntity } from '../base/entities';
|
|
3
|
+
import {
|
|
4
|
+
type ArchivalSeriesCreateResponseEntity,
|
|
5
|
+
type ArchivalSeriesGetAllResponseEntity,
|
|
6
|
+
type ArchivalSeriesGetByIdResponseEntity,
|
|
7
|
+
type ArchivalSeriesUpdateResponseEntity,
|
|
8
|
+
} from '../entities';
|
|
9
|
+
import { type RpcPage } from './contract';
|
|
10
|
+
|
|
11
|
+
/** Patrones NATS de `archivalSeries` (series del Cuadro de Clasificación): `<servicio>.<recurso>.<acción>`. */
|
|
12
|
+
export const ArchivalSeriesPatterns = {
|
|
13
|
+
getAll: 'gestorDocumental.archivalSeries.getAll',
|
|
14
|
+
getById: 'gestorDocumental.archivalSeries.getById',
|
|
15
|
+
create: 'gestorDocumental.archivalSeries.create',
|
|
16
|
+
update: 'gestorDocumental.archivalSeries.update',
|
|
17
|
+
setEnabled: 'gestorDocumental.archivalSeries.setEnabled',
|
|
18
|
+
} as const;
|
|
19
|
+
|
|
20
|
+
/** Datos de una serie documental al crearla o editarla. */
|
|
21
|
+
export interface ArchivalSeriesWritePayload {
|
|
22
|
+
code: string;
|
|
23
|
+
name: string;
|
|
24
|
+
section?: string | null;
|
|
25
|
+
description?: string | null;
|
|
26
|
+
enabled?: boolean;
|
|
27
|
+
/** Tabla de Retención Documental: los tres juntos o ninguno. */
|
|
28
|
+
managementYears?: number | null;
|
|
29
|
+
centralYears?: number | null;
|
|
30
|
+
finalDisposition?: FinalDisposition | null;
|
|
31
|
+
retentionNote?: string | null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface ArchivalSeriesContract {
|
|
35
|
+
[ArchivalSeriesPatterns.getAll]: {
|
|
36
|
+
// sin `page` y `limit` responde todas en una sola página
|
|
37
|
+
payload: {
|
|
38
|
+
pagination?: { page?: number; limit?: number };
|
|
39
|
+
filters?: { search?: string; enabled?: boolean };
|
|
40
|
+
};
|
|
41
|
+
response: RpcPage<ArchivalSeriesGetAllResponseEntity[]>;
|
|
42
|
+
};
|
|
43
|
+
[ArchivalSeriesPatterns.getById]: {
|
|
44
|
+
payload: Pick<ArchivalSeriesEntity, 'id'>;
|
|
45
|
+
response: ArchivalSeriesGetByIdResponseEntity;
|
|
46
|
+
};
|
|
47
|
+
[ArchivalSeriesPatterns.create]: {
|
|
48
|
+
payload: ArchivalSeriesWritePayload;
|
|
49
|
+
response: ArchivalSeriesCreateResponseEntity;
|
|
50
|
+
};
|
|
51
|
+
[ArchivalSeriesPatterns.update]: {
|
|
52
|
+
payload: ArchivalSeriesWritePayload & Pick<ArchivalSeriesEntity, 'id'>;
|
|
53
|
+
response: ArchivalSeriesUpdateResponseEntity;
|
|
54
|
+
};
|
|
55
|
+
[ArchivalSeriesPatterns.setEnabled]: {
|
|
56
|
+
payload: Pick<ArchivalSeriesEntity, 'id' | 'enabled'>;
|
|
57
|
+
response: ArchivalSeriesUpdateResponseEntity;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type AuditEventEntity, type AuditSource, type IndicatorsFileEntity } from '../entities';
|
|
2
|
+
import { type RpcPage } from './contract';
|
|
3
|
+
|
|
4
|
+
/** Patrones NATS de `audit`: la auditoría reúne todos los registros del gestor en una sola vista. */
|
|
5
|
+
export const AuditPatterns = {
|
|
6
|
+
getEvents: 'gestorDocumental.audit.getEvents',
|
|
7
|
+
export: 'gestorDocumental.audit.export',
|
|
8
|
+
} as const;
|
|
9
|
+
|
|
10
|
+
/** Qué hechos: período (días de Chile «AAAA-MM-DD», hasta un año) y filtros optativos. */
|
|
11
|
+
export interface AuditQuery {
|
|
12
|
+
from: string;
|
|
13
|
+
to: string;
|
|
14
|
+
sources?: AuditSource[];
|
|
15
|
+
/** Parte del nombre de quien actuó. */
|
|
16
|
+
person?: string;
|
|
17
|
+
/** Parte del folio, materia, IUIe, título o nombre de lo afectado. */
|
|
18
|
+
reference?: string;
|
|
19
|
+
page?: number;
|
|
20
|
+
limit?: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface AuditContract {
|
|
24
|
+
[AuditPatterns.getEvents]: { payload: AuditQuery; response: RpcPage<AuditEventEntity[]> };
|
|
25
|
+
/** Los hechos filtrados (hasta 10.000) en Excel. `generatedBy`: quién la descarga. */
|
|
26
|
+
[AuditPatterns.export]: {
|
|
27
|
+
payload: Omit<AuditQuery, 'page' | 'limit'> & { generatedBy: string };
|
|
28
|
+
response: IndicatorsFileEntity;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
@@ -7,13 +7,19 @@ import {
|
|
|
7
7
|
type DocumentAccessLevel,
|
|
8
8
|
} from '../base/entities';
|
|
9
9
|
import {
|
|
10
|
+
type CaseFileAddBatchResponseEntity,
|
|
10
11
|
type CaseFileAddEntryResponseEntity,
|
|
11
12
|
type CaseFileCreateResponseEntity,
|
|
12
13
|
type CaseFileEntryFileResponseEntity,
|
|
13
14
|
type CaseFileExportResponseEntity,
|
|
14
15
|
type CaseFileGetAllResponseEntity,
|
|
15
16
|
type CaseFileGetByIdResponseEntity,
|
|
17
|
+
type CaseFileShareLinkCreateResponseEntity,
|
|
18
|
+
type CaseFileShareLinkResponseEntity,
|
|
19
|
+
type CaseFileSharedResponseEntity,
|
|
16
20
|
type CaseFileUpdateResponseEntity,
|
|
21
|
+
type CaseFileVerifyExportResponseEntity,
|
|
22
|
+
type DocumentPublicFileResponseEntity,
|
|
17
23
|
} from '../entities';
|
|
18
24
|
import { type RpcPage } from './contract';
|
|
19
25
|
import { type DocumentActor } from './document.contract';
|
|
@@ -25,14 +31,37 @@ export const CaseFilePatterns = {
|
|
|
25
31
|
create: 'gestorDocumental.caseFile.create',
|
|
26
32
|
update: 'gestorDocumental.caseFile.update',
|
|
27
33
|
addEntry: 'gestorDocumental.caseFile.addEntry',
|
|
34
|
+
addBatch: 'gestorDocumental.caseFile.addBatch',
|
|
28
35
|
voidEntry: 'gestorDocumental.caseFile.voidEntry',
|
|
36
|
+
moveEntry: 'gestorDocumental.caseFile.moveEntry',
|
|
29
37
|
share: 'gestorDocumental.caseFile.share',
|
|
30
38
|
unshare: 'gestorDocumental.caseFile.unshare',
|
|
31
39
|
close: 'gestorDocumental.caseFile.close',
|
|
32
40
|
getEntryFile: 'gestorDocumental.caseFile.getEntryFile',
|
|
33
41
|
getExport: 'gestorDocumental.caseFile.getExport',
|
|
42
|
+
getIntegratedPdf: 'gestorDocumental.caseFile.getIntegratedPdf',
|
|
43
|
+
createShareLink: 'gestorDocumental.caseFile.createShareLink',
|
|
44
|
+
getShareLinks: 'gestorDocumental.caseFile.getShareLinks',
|
|
45
|
+
revokeShareLink: 'gestorDocumental.caseFile.revokeShareLink',
|
|
46
|
+
getShared: 'gestorDocumental.caseFile.getShared',
|
|
47
|
+
getSharedEntryFile: 'gestorDocumental.caseFile.getSharedEntryFile',
|
|
48
|
+
getSharedExport: 'gestorDocumental.caseFile.getSharedExport',
|
|
49
|
+
verifyExport: 'gestorDocumental.caseFile.verifyExport',
|
|
34
50
|
} as const;
|
|
35
51
|
|
|
52
|
+
/** Enlace temporal para que alguien de fuera consulte el expediente sin sesión. */
|
|
53
|
+
export interface CaseFileShareLinkPayload {
|
|
54
|
+
/** A quién se entrega. Ej: «Contraloría Regional». */
|
|
55
|
+
recipient: string;
|
|
56
|
+
/** Si se indica, el gateway le envía el enlace por correo. */
|
|
57
|
+
recipientEmail?: string | null;
|
|
58
|
+
purpose?: string | null;
|
|
59
|
+
/** Cuántos días dura: de 1 a 30. */
|
|
60
|
+
days: number;
|
|
61
|
+
/** Puede descargar el expediente completo (ZIP). Por omisión, sí. */
|
|
62
|
+
allowExport?: boolean;
|
|
63
|
+
}
|
|
64
|
+
|
|
36
65
|
/** Persona u organización relacionada con el expediente (MGDEE54). */
|
|
37
66
|
export interface CaseFileActorInput {
|
|
38
67
|
relation: CaseFileActorRelation;
|
|
@@ -49,6 +78,10 @@ export interface CaseFileWritePayload {
|
|
|
49
78
|
procedureId: string;
|
|
50
79
|
accessLevel: DocumentAccessLevel;
|
|
51
80
|
hasSensitiveData: boolean;
|
|
81
|
+
/** MGDEE8_2: fin de la restricción de acceso (ISO 8601), si no es público. */
|
|
82
|
+
restrictionEndsAt?: string | null;
|
|
83
|
+
/** MGDEE1_2: serie del Cuadro de Clasificación. */
|
|
84
|
+
archivalSeriesId?: string | null;
|
|
52
85
|
actors?: CaseFileActorInput[];
|
|
53
86
|
}
|
|
54
87
|
|
|
@@ -68,7 +101,23 @@ export type CaseFileEntryInput =
|
|
|
68
101
|
accessLevel: DocumentAccessLevel;
|
|
69
102
|
hasSensitiveData: boolean;
|
|
70
103
|
}
|
|
71
|
-
| { kind: 'CaseFile'; actuationType: CaseFileActuationType; linkedCaseFileId: string }
|
|
104
|
+
| { kind: 'CaseFile'; actuationType: CaseFileActuationType; linkedCaseFileId: string }
|
|
105
|
+
| {
|
|
106
|
+
kind: 'Physical';
|
|
107
|
+
actuationType: CaseFileActuationType;
|
|
108
|
+
title: string;
|
|
109
|
+
documentTypeName?: string | null;
|
|
110
|
+
originDate?: string | null;
|
|
111
|
+
author?: string | null;
|
|
112
|
+
/** Dónde está el papel: oficina, archivador, caja (MGDDE5_5). */
|
|
113
|
+
physicalLocation: string;
|
|
114
|
+
/** Por qué no se pudo digitalizar. */
|
|
115
|
+
physicalReason: string;
|
|
116
|
+
pageCount?: number | null;
|
|
117
|
+
keywords: string[];
|
|
118
|
+
accessLevel: DocumentAccessLevel;
|
|
119
|
+
hasSensitiveData: boolean;
|
|
120
|
+
};
|
|
72
121
|
|
|
73
122
|
/** Quién hace la operación (de la sesión) y si puede ver todos los expedientes. */
|
|
74
123
|
interface CaseFileActorPayload {
|
|
@@ -100,11 +149,22 @@ export interface CaseFileContract {
|
|
|
100
149
|
payload: CaseFileWritePayload & Pick<CaseFileEntity, 'id'> & { actor: DocumentActor };
|
|
101
150
|
response: CaseFileUpdateResponseEntity;
|
|
102
151
|
};
|
|
152
|
+
/** Incorpora los documentos finalizados de un lote de firma, en su orden; omite los que ya están en el expediente. */
|
|
153
|
+
[CaseFilePatterns.addBatch]: {
|
|
154
|
+
payload: { id: string; batchId: string; actuationType: CaseFileActuationType } & CaseFileActorPayload;
|
|
155
|
+
response: CaseFileAddBatchResponseEntity;
|
|
156
|
+
};
|
|
103
157
|
[CaseFilePatterns.addEntry]: {
|
|
104
|
-
|
|
158
|
+
// `folder`: subcarpeta del índice en que queda (sin valor: en la raíz)
|
|
159
|
+
payload: Pick<CaseFileEntity, 'id'> & { entry: CaseFileEntryInput; folder?: string | null } & CaseFileActorPayload;
|
|
105
160
|
response: CaseFileAddEntryResponseEntity;
|
|
106
161
|
};
|
|
107
162
|
/** Deja una actuación sin efecto, con su motivo. No se elimina del índice. */
|
|
163
|
+
/** Pasa una actuación a otra subcarpeta del índice (`null`: a la raíz). El orden de incorporación no cambia. */
|
|
164
|
+
[CaseFilePatterns.moveEntry]: {
|
|
165
|
+
payload: { id: string; entryId: string; folder: string | null } & CaseFileActorPayload;
|
|
166
|
+
response: CaseFileUpdateResponseEntity;
|
|
167
|
+
};
|
|
108
168
|
[CaseFilePatterns.voidEntry]: {
|
|
109
169
|
payload: Pick<CaseFileEntity, 'id'> & { entryId: string; reason: string; actor: DocumentActor };
|
|
110
170
|
response: CaseFileUpdateResponseEntity;
|
|
@@ -131,4 +191,49 @@ export interface CaseFileContract {
|
|
|
131
191
|
payload: Pick<CaseFileEntity, 'id'> & CaseFileActorPayload;
|
|
132
192
|
response: CaseFileExportResponseEntity;
|
|
133
193
|
};
|
|
194
|
+
/**
|
|
195
|
+
* PDF integrador: todas las actuaciones en un solo PDF, en orden de incorporación, con portada e índice. Queda en la
|
|
196
|
+
* trazabilidad y en el registro de accesos, como la exportación. Sin el sello de copia autorizada (necesita firma
|
|
197
|
+
* desatendida).
|
|
198
|
+
*/
|
|
199
|
+
[CaseFilePatterns.getIntegratedPdf]: {
|
|
200
|
+
payload: Pick<CaseFileEntity, 'id'> & CaseFileActorPayload;
|
|
201
|
+
response: DocumentPublicFileResponseEntity;
|
|
202
|
+
};
|
|
203
|
+
/** Crea un enlace temporal: solo su responsable. El token viaja solo en esta respuesta. */
|
|
204
|
+
[CaseFilePatterns.createShareLink]: {
|
|
205
|
+
payload: Pick<CaseFileEntity, 'id'> & CaseFileShareLinkPayload & { actor: DocumentActor };
|
|
206
|
+
response: CaseFileShareLinkCreateResponseEntity;
|
|
207
|
+
};
|
|
208
|
+
/** Enlaces del expediente, vigentes o no, con cuántas veces se usaron: su responsable o quien ve todos. */
|
|
209
|
+
[CaseFilePatterns.getShareLinks]: {
|
|
210
|
+
payload: Pick<CaseFileEntity, 'id'> & CaseFileActorPayload;
|
|
211
|
+
response: CaseFileShareLinkResponseEntity[];
|
|
212
|
+
};
|
|
213
|
+
[CaseFilePatterns.revokeShareLink]: {
|
|
214
|
+
payload: Pick<CaseFileEntity, 'id'> & { linkId: string; actor: DocumentActor };
|
|
215
|
+
response: CaseFileUpdateResponseEntity;
|
|
216
|
+
};
|
|
217
|
+
/** Sin sesión, con el token del enlace: metadatos e índice. Queda en el registro de accesos. */
|
|
218
|
+
[CaseFilePatterns.getShared]: {
|
|
219
|
+
payload: { token: string };
|
|
220
|
+
response: CaseFileSharedResponseEntity;
|
|
221
|
+
};
|
|
222
|
+
[CaseFilePatterns.getSharedEntryFile]: {
|
|
223
|
+
payload: { token: string; entryId: string };
|
|
224
|
+
response: CaseFileEntryFileResponseEntity;
|
|
225
|
+
};
|
|
226
|
+
/** El expediente completo, si el enlace lo permite. Queda en la trazabilidad y en el registro de accesos. */
|
|
227
|
+
/**
|
|
228
|
+
* Verificador público del ZIP exportado: sin sesión, con el identificador del expediente y la huella SHA-256 que
|
|
229
|
+
* calculó el navegador para cada actuación (el ZIP no se sube). Se compara con las huellas registradas al incorporar.
|
|
230
|
+
*/
|
|
231
|
+
[CaseFilePatterns.verifyExport]: {
|
|
232
|
+
payload: { code: string; entries: { sequence: number; sha256: string }[] };
|
|
233
|
+
response: CaseFileVerifyExportResponseEntity;
|
|
234
|
+
};
|
|
235
|
+
[CaseFilePatterns.getSharedExport]: {
|
|
236
|
+
payload: { token: string };
|
|
237
|
+
response: CaseFileExportResponseEntity;
|
|
238
|
+
};
|
|
134
239
|
}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type CommunicationMeans,
|
|
3
|
+
type DataBreachKind,
|
|
4
|
+
type DataBreachNoticeMeans,
|
|
5
|
+
type DataLegalBasis,
|
|
6
|
+
type DataRight,
|
|
7
|
+
type DataRightsChannel,
|
|
8
|
+
type DataRightsResolution,
|
|
9
|
+
} from '../base/entities';
|
|
10
|
+
import {
|
|
11
|
+
type DataBreachResponseEntity,
|
|
12
|
+
type DataProtectionPolicyEntity,
|
|
13
|
+
type IndicatorsFileEntity,
|
|
14
|
+
type DataRightsRequestDetailEntity,
|
|
15
|
+
type DataRightsRequestListItemEntity,
|
|
16
|
+
type DataRightsSummaryEntity,
|
|
17
|
+
type DataTreatmentResponseEntity,
|
|
18
|
+
} from '../entities';
|
|
19
|
+
import { type RpcPage } from './contract';
|
|
20
|
+
|
|
21
|
+
/** Patrones NATS de `dataProtection`: tratamientos de datos y solicitudes de los titulares (Ley 19.628). */
|
|
22
|
+
export const DataProtectionPatterns = {
|
|
23
|
+
getTreatments: 'gestorDocumental.dataProtection.getTreatments',
|
|
24
|
+
createTreatment: 'gestorDocumental.dataProtection.createTreatment',
|
|
25
|
+
updateTreatment: 'gestorDocumental.dataProtection.updateTreatment',
|
|
26
|
+
setTreatmentEnabled: 'gestorDocumental.dataProtection.setTreatmentEnabled',
|
|
27
|
+
getPolicy: 'gestorDocumental.dataProtection.getPolicy',
|
|
28
|
+
getRequests: 'gestorDocumental.dataProtection.getRequests',
|
|
29
|
+
getRequest: 'gestorDocumental.dataProtection.getRequest',
|
|
30
|
+
getSummary: 'gestorDocumental.dataProtection.getSummary',
|
|
31
|
+
createRequest: 'gestorDocumental.dataProtection.createRequest',
|
|
32
|
+
updateRequest: 'gestorDocumental.dataProtection.updateRequest',
|
|
33
|
+
actOnRequest: 'gestorDocumental.dataProtection.actOnRequest',
|
|
34
|
+
getBreaches: 'gestorDocumental.dataProtection.getBreaches',
|
|
35
|
+
getBreach: 'gestorDocumental.dataProtection.getBreach',
|
|
36
|
+
createBreach: 'gestorDocumental.dataProtection.createBreach',
|
|
37
|
+
updateBreach: 'gestorDocumental.dataProtection.updateBreach',
|
|
38
|
+
actOnBreach: 'gestorDocumental.dataProtection.actOnBreach',
|
|
39
|
+
getBreachPdf: 'gestorDocumental.dataProtection.getBreachPdf',
|
|
40
|
+
} as const;
|
|
41
|
+
|
|
42
|
+
type TActor = { employeeId: string; fullName: string };
|
|
43
|
+
|
|
44
|
+
/** Datos de un tratamiento al crearlo o editarlo. */
|
|
45
|
+
export interface DataTreatmentWritePayload {
|
|
46
|
+
name: string;
|
|
47
|
+
purpose: string;
|
|
48
|
+
legalBasis: DataLegalBasis;
|
|
49
|
+
legalBasisDetail?: string | null;
|
|
50
|
+
dataCategories: string[];
|
|
51
|
+
sensitiveData?: boolean;
|
|
52
|
+
dataSubjects: string;
|
|
53
|
+
recipients?: string | null;
|
|
54
|
+
source?: string | null;
|
|
55
|
+
retention?: string | null;
|
|
56
|
+
securityMeasures?: string | null;
|
|
57
|
+
internationalTransfer?: string | null;
|
|
58
|
+
responsibleUnit?: string | null;
|
|
59
|
+
published?: boolean;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** Datos de una solicitud al ingresarla o corregirla. */
|
|
63
|
+
export interface DataRightsRequestWritePayload {
|
|
64
|
+
channel: DataRightsChannel;
|
|
65
|
+
receivedAt: string;
|
|
66
|
+
rights: DataRight[];
|
|
67
|
+
requesterName: string;
|
|
68
|
+
requesterRut?: string | null;
|
|
69
|
+
requesterEmail?: string | null;
|
|
70
|
+
requesterAddress?: string | null;
|
|
71
|
+
representativeName?: string | null;
|
|
72
|
+
requestText: string;
|
|
73
|
+
treatmentId?: string | null;
|
|
74
|
+
/** Bloqueo temporal: solo con rectificación, supresión u oposición, y fundado. */
|
|
75
|
+
blockingRequested?: boolean;
|
|
76
|
+
blockingReason?: string | null;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** Un paso de la tramitación. */
|
|
80
|
+
export type DataRightsAction =
|
|
81
|
+
| { type: 'acknowledge'; note?: string | null }
|
|
82
|
+
| { type: 'verifyIdentity'; note?: string | null }
|
|
83
|
+
| { type: 'assign'; employeeId: string; fullName: string; note?: string | null }
|
|
84
|
+
/** Bloqueo temporal, en 2 días hábiles; si se rechaza, fundado (y se comunica a la Agencia). */
|
|
85
|
+
| { type: 'resolveBlocking'; granted: boolean; note?: string | null }
|
|
86
|
+
/** Levanta el bloqueo concedido (también después de responder): esos datos se vuelven a tratar. */
|
|
87
|
+
| { type: 'liftBlocking'; note?: string | null }
|
|
88
|
+
| { type: 'extend'; note: string }
|
|
89
|
+
| {
|
|
90
|
+
type: 'resolve';
|
|
91
|
+
resolution: DataRightsResolution;
|
|
92
|
+
grounds?: string[];
|
|
93
|
+
note?: string | null;
|
|
94
|
+
responseDocumentId?: string | null;
|
|
95
|
+
}
|
|
96
|
+
/** Respaldo del envío de la respuesta escrita (art. 11). */
|
|
97
|
+
| {
|
|
98
|
+
type: 'registerResponseSent';
|
|
99
|
+
sentAt?: string | null;
|
|
100
|
+
sentTo: string;
|
|
101
|
+
means: CommunicationMeans;
|
|
102
|
+
note?: string | null;
|
|
103
|
+
}
|
|
104
|
+
| { type: 'registerComplaint'; complaintAt?: string | null; note: string };
|
|
105
|
+
|
|
106
|
+
/** Datos de una vulneración al registrarla o corregirla. */
|
|
107
|
+
export interface DataBreachWritePayload {
|
|
108
|
+
detectedAt: string;
|
|
109
|
+
occurredAt?: string | null;
|
|
110
|
+
kinds: DataBreachKind[];
|
|
111
|
+
description: string;
|
|
112
|
+
effects?: string | null;
|
|
113
|
+
dataCategories: string[];
|
|
114
|
+
affectedCount?: number | null;
|
|
115
|
+
measures?: string | null;
|
|
116
|
+
sensitiveData?: boolean;
|
|
117
|
+
minorsData?: boolean;
|
|
118
|
+
financialData?: boolean;
|
|
119
|
+
riskToRights?: boolean;
|
|
120
|
+
treatmentId?: string | null;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/** Un paso de la gestión de una vulneración. */
|
|
124
|
+
export type DataBreachAction =
|
|
125
|
+
/** Reporte a la Agencia, con el medio y su número o folio. */
|
|
126
|
+
| { type: 'reportAgency'; reportedAt?: string | null; note: string }
|
|
127
|
+
/** Comunicación a los titulares: a cada uno o, si no es posible, un aviso en un medio masivo nacional. */
|
|
128
|
+
| { type: 'notifyHolders'; notifiedAt?: string | null; means: DataBreachNoticeMeans; note: string }
|
|
129
|
+
| { type: 'close'; note?: string | null };
|
|
130
|
+
|
|
131
|
+
export interface DataProtectionContract {
|
|
132
|
+
[DataProtectionPatterns.getTreatments]: {
|
|
133
|
+
payload: { enabled?: boolean | null };
|
|
134
|
+
response: DataTreatmentResponseEntity[];
|
|
135
|
+
};
|
|
136
|
+
[DataProtectionPatterns.createTreatment]: {
|
|
137
|
+
payload: DataTreatmentWritePayload;
|
|
138
|
+
response: DataTreatmentResponseEntity;
|
|
139
|
+
};
|
|
140
|
+
[DataProtectionPatterns.updateTreatment]: {
|
|
141
|
+
payload: DataTreatmentWritePayload & { id: string };
|
|
142
|
+
response: DataTreatmentResponseEntity;
|
|
143
|
+
};
|
|
144
|
+
[DataProtectionPatterns.setTreatmentEnabled]: {
|
|
145
|
+
payload: { id: string; enabled: boolean };
|
|
146
|
+
response: DataTreatmentResponseEntity;
|
|
147
|
+
};
|
|
148
|
+
/** Lo que se publica sin sesión (art. 14 ter): los tratamientos habilitados y publicados. */
|
|
149
|
+
[DataProtectionPatterns.getPolicy]: { payload: Record<string, never>; response: DataProtectionPolicyEntity };
|
|
150
|
+
[DataProtectionPatterns.getRequests]: {
|
|
151
|
+
payload: {
|
|
152
|
+
status?: 'open' | 'resolved' | 'all';
|
|
153
|
+
year?: number | null;
|
|
154
|
+
search?: string;
|
|
155
|
+
page?: number;
|
|
156
|
+
limit?: number;
|
|
157
|
+
};
|
|
158
|
+
response: RpcPage<DataRightsRequestListItemEntity[]>;
|
|
159
|
+
};
|
|
160
|
+
[DataProtectionPatterns.getRequest]: { payload: { id: string }; response: DataRightsRequestDetailEntity };
|
|
161
|
+
[DataProtectionPatterns.getSummary]: { payload: { year: number }; response: DataRightsSummaryEntity };
|
|
162
|
+
[DataProtectionPatterns.createRequest]: {
|
|
163
|
+
payload: DataRightsRequestWritePayload & { actor: TActor };
|
|
164
|
+
response: DataRightsRequestDetailEntity;
|
|
165
|
+
};
|
|
166
|
+
[DataProtectionPatterns.updateRequest]: {
|
|
167
|
+
payload: DataRightsRequestWritePayload & { id: string; actor: TActor };
|
|
168
|
+
response: DataRightsRequestDetailEntity;
|
|
169
|
+
};
|
|
170
|
+
[DataProtectionPatterns.actOnRequest]: {
|
|
171
|
+
payload: { id: string; action: DataRightsAction; actor: TActor };
|
|
172
|
+
response: DataRightsRequestDetailEntity;
|
|
173
|
+
};
|
|
174
|
+
/** Las vulneraciones del año (o todas las abiertas), de la más reciente a la más antigua. */
|
|
175
|
+
[DataProtectionPatterns.getBreaches]: {
|
|
176
|
+
payload: { year?: number | null; openOnly?: boolean };
|
|
177
|
+
response: DataBreachResponseEntity[];
|
|
178
|
+
};
|
|
179
|
+
[DataProtectionPatterns.getBreach]: { payload: { id: string }; response: DataBreachResponseEntity };
|
|
180
|
+
[DataProtectionPatterns.createBreach]: {
|
|
181
|
+
payload: DataBreachWritePayload & { actor: TActor };
|
|
182
|
+
response: DataBreachResponseEntity;
|
|
183
|
+
};
|
|
184
|
+
[DataProtectionPatterns.updateBreach]: {
|
|
185
|
+
payload: DataBreachWritePayload & { id: string; actor: TActor };
|
|
186
|
+
response: DataBreachResponseEntity;
|
|
187
|
+
};
|
|
188
|
+
[DataProtectionPatterns.actOnBreach]: {
|
|
189
|
+
payload: { id: string; action: DataBreachAction; actor: TActor };
|
|
190
|
+
response: DataBreachResponseEntity;
|
|
191
|
+
};
|
|
192
|
+
/** El registro de la vulneración en PDF, para reportarla o archivarla. */
|
|
193
|
+
[DataProtectionPatterns.getBreachPdf]: {
|
|
194
|
+
payload: { id: string; generatedBy: string };
|
|
195
|
+
response: IndicatorsFileEntity;
|
|
196
|
+
};
|
|
197
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { type CaseFileActuationType, type DeskFileSource, type DocumentAccessLevel } from '../base/entities';
|
|
2
|
+
import {
|
|
3
|
+
type CaseFileAddEntryResponseEntity,
|
|
4
|
+
type DeskFileResponseEntity,
|
|
5
|
+
type DeskOkResponseEntity,
|
|
6
|
+
type DeskSummaryEntity,
|
|
7
|
+
type DocumentPublicFileResponseEntity,
|
|
8
|
+
} from '../entities';
|
|
9
|
+
import { type DocumentActor } from './document.contract';
|
|
10
|
+
|
|
11
|
+
/** Patrones NATS de `desk`: el escritorio de documentos de cada funcionario («Sin clasificar»). */
|
|
12
|
+
export const DeskPatterns = {
|
|
13
|
+
getFiles: 'gestorDocumental.desk.getFiles',
|
|
14
|
+
getSummary: 'gestorDocumental.desk.getSummary',
|
|
15
|
+
addFiles: 'gestorDocumental.desk.addFiles',
|
|
16
|
+
getFile: 'gestorDocumental.desk.getFile',
|
|
17
|
+
remove: 'gestorDocumental.desk.remove',
|
|
18
|
+
classify: 'gestorDocumental.desk.classify',
|
|
19
|
+
moveToCaseFile: 'gestorDocumental.desk.moveToCaseFile',
|
|
20
|
+
} as const;
|
|
21
|
+
|
|
22
|
+
export interface DeskContract {
|
|
23
|
+
/** Los archivos sin clasificar de quien tiene la sesión, del más reciente al más antiguo. */
|
|
24
|
+
[DeskPatterns.getFiles]: { payload: { actor: DocumentActor }; response: DeskFileResponseEntity[] };
|
|
25
|
+
/** `email`, el correo institucional de la sesión, cuenta también los correos que esperan que elija sus adjuntos. */
|
|
26
|
+
[DeskPatterns.getSummary]: {
|
|
27
|
+
payload: { email?: string | null; actor: DocumentActor };
|
|
28
|
+
response: DeskSummaryEntity;
|
|
29
|
+
};
|
|
30
|
+
/** Archivos ya subidos a la carpeta del gestor (por el gateway), que quedan en el escritorio. */
|
|
31
|
+
[DeskPatterns.addFiles]: {
|
|
32
|
+
payload: {
|
|
33
|
+
files: { fileId: string; fileName: string }[];
|
|
34
|
+
source?: DeskFileSource;
|
|
35
|
+
description?: string | null;
|
|
36
|
+
actor: DocumentActor;
|
|
37
|
+
};
|
|
38
|
+
response: DeskFileResponseEntity[];
|
|
39
|
+
};
|
|
40
|
+
/** El archivo, solo para su dueño. */
|
|
41
|
+
[DeskPatterns.getFile]: {
|
|
42
|
+
payload: { id: string; actor: DocumentActor };
|
|
43
|
+
response: DocumentPublicFileResponseEntity;
|
|
44
|
+
};
|
|
45
|
+
/** Lo quita del escritorio. El archivo no se borra. */
|
|
46
|
+
[DeskPatterns.remove]: { payload: { id: string; actor: DocumentActor }; response: DeskOkResponseEntity };
|
|
47
|
+
/** Se redactó o firmó un documento con este archivo: deja el escritorio. El documento tiene que ser de su dueño. */
|
|
48
|
+
[DeskPatterns.classify]: {
|
|
49
|
+
payload: { id: string; documentId: string; actor: DocumentActor };
|
|
50
|
+
response: DeskOkResponseEntity;
|
|
51
|
+
};
|
|
52
|
+
/** Lo incorpora como actuación a un expediente abierto en que puede incorporar, con sus metadatos. */
|
|
53
|
+
[DeskPatterns.moveToCaseFile]: {
|
|
54
|
+
payload: {
|
|
55
|
+
id: string;
|
|
56
|
+
caseFileId: string;
|
|
57
|
+
entry: {
|
|
58
|
+
actuationType: CaseFileActuationType;
|
|
59
|
+
title: string;
|
|
60
|
+
documentTypeName?: string | null;
|
|
61
|
+
originDate?: string | null;
|
|
62
|
+
author?: string | null;
|
|
63
|
+
keywords: string[];
|
|
64
|
+
accessLevel: DocumentAccessLevel;
|
|
65
|
+
hasSensitiveData: boolean;
|
|
66
|
+
};
|
|
67
|
+
folder?: string | null;
|
|
68
|
+
actor: DocumentActor;
|
|
69
|
+
};
|
|
70
|
+
response: CaseFileAddEntryResponseEntity;
|
|
71
|
+
};
|
|
72
|
+
}
|