@muni-sanfer/types-gestor-documental 0.0.1-beta.0 → 0.0.1-beta.10
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 +459 -2
- package/dist/base/entities.js +102 -1
- package/dist/contracts/caseFile.contract.d.ts +159 -0
- package/dist/contracts/caseFile.contract.js +18 -0
- package/dist/contracts/document.contract.d.ts +167 -3
- package/dist/contracts/document.contract.js +10 -0
- package/dist/contracts/documentType.contract.d.ts +18 -1
- package/dist/contracts/index.d.ts +86 -1
- package/dist/contracts/index.js +18 -0
- package/dist/contracts/partsOffice.contract.d.ts +171 -0
- package/dist/contracts/partsOffice.contract.js +22 -0
- package/dist/contracts/procedure.contract.d.ts +50 -0
- package/dist/contracts/procedure.contract.js +11 -0
- package/dist/contracts/registerBook.contract.d.ts +27 -0
- package/dist/contracts/registerBook.contract.js +8 -0
- package/dist/contracts/signatureBatch.contract.d.ts +109 -0
- package/dist/contracts/signatureBatch.contract.js +12 -0
- package/dist/contracts/workFolder.contract.d.ts +114 -0
- package/dist/contracts/workFolder.contract.js +16 -0
- package/dist/entities/caseFile/caseFile.entity.d.ts +176 -0
- package/dist/entities/caseFile/caseFile.entity.js +2 -0
- package/dist/entities/caseFile/index.d.ts +1 -0
- package/dist/entities/caseFile/index.js +17 -0
- package/dist/entities/document/document.entity.d.ts +250 -1
- package/dist/entities/documentType/documentType.entity.d.ts +18 -1
- package/dist/entities/index.d.ts +6 -0
- package/dist/entities/index.js +6 -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 +98 -0
- package/dist/entities/partsOffice/partsOffice.entity.js +2 -0
- package/dist/entities/procedure/index.d.ts +1 -0
- package/dist/entities/procedure/index.js +17 -0
- package/dist/entities/procedure/procedure.entity.d.ts +20 -0
- package/dist/entities/procedure/procedure.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 +42 -0
- package/dist/entities/registerBook/registerBook.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/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 +544 -2
- package/src/contracts/caseFile.contract.ts +141 -0
- package/src/contracts/document.contract.ts +153 -0
- package/src/contracts/documentType.contract.ts +14 -1
- package/src/contracts/index.ts +26 -1
- package/src/contracts/partsOffice.contract.ts +120 -0
- package/src/contracts/procedure.contract.ts +53 -0
- package/src/contracts/registerBook.contract.ts +24 -0
- package/src/contracts/signatureBatch.contract.ts +96 -0
- package/src/contracts/workFolder.contract.ts +75 -0
- package/src/entities/caseFile/caseFile.entity.ts +204 -0
- package/src/entities/caseFile/index.ts +1 -0
- package/src/entities/document/document.entity.ts +271 -0
- package/src/entities/documentType/documentType.entity.ts +20 -1
- package/src/entities/index.ts +6 -0
- package/src/entities/partsOffice/index.ts +1 -0
- package/src/entities/partsOffice/partsOffice.entity.ts +103 -0
- package/src/entities/procedure/index.ts +1 -0
- package/src/entities/procedure/procedure.entity.ts +24 -0
- package/src/entities/registerBook/index.ts +1 -0
- package/src/entities/registerBook/registerBook.entity.ts +46 -0
- package/src/entities/signatureBatch/index.ts +1 -0
- package/src/entities/signatureBatch/signatureBatch.entity.ts +110 -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,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,75 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type WorkFolderConvertInput,
|
|
3
|
+
type WorkFolderConvertResponseEntity,
|
|
4
|
+
type WorkFolderGetAllResponseEntity,
|
|
5
|
+
type WorkFolderGetByIdResponseEntity,
|
|
6
|
+
type WorkFolderWriteResponseEntity,
|
|
7
|
+
} from '../entities';
|
|
8
|
+
import { type RpcPage } from './contract';
|
|
9
|
+
import { type DocumentActor } from './document.contract';
|
|
10
|
+
|
|
11
|
+
/** Patrones NATS de `workFolder` (carpetas de trabajo): `<servicio>.<recurso>.<acción>`. */
|
|
12
|
+
export const WorkFolderPatterns = {
|
|
13
|
+
getAll: 'gestorDocumental.workFolder.getAll',
|
|
14
|
+
getById: 'gestorDocumental.workFolder.getById',
|
|
15
|
+
create: 'gestorDocumental.workFolder.create',
|
|
16
|
+
update: 'gestorDocumental.workFolder.update',
|
|
17
|
+
share: 'gestorDocumental.workFolder.share',
|
|
18
|
+
unshare: 'gestorDocumental.workFolder.unshare',
|
|
19
|
+
addItem: 'gestorDocumental.workFolder.addItem',
|
|
20
|
+
removeItem: 'gestorDocumental.workFolder.removeItem',
|
|
21
|
+
remove: 'gestorDocumental.workFolder.remove',
|
|
22
|
+
convert: 'gestorDocumental.workFolder.convert',
|
|
23
|
+
} as const;
|
|
24
|
+
|
|
25
|
+
/** Lo que se agrega a una carpeta: un documento finalizado del gestor o un archivo ya subido. */
|
|
26
|
+
export type WorkFolderItemInput =
|
|
27
|
+
{ kind: 'Document'; documentId: string } | { kind: 'File'; fileId: string; fileName: string; title: string };
|
|
28
|
+
|
|
29
|
+
type TActor = { actor: DocumentActor };
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Carpetas de trabajo: agrupan y comparten documentos y archivos sin procedimiento asociado. Las ven su responsable y
|
|
33
|
+
* aquellos con quienes la compartió.
|
|
34
|
+
*/
|
|
35
|
+
export interface WorkFolderContract {
|
|
36
|
+
[WorkFolderPatterns.getAll]: {
|
|
37
|
+
payload: { pagination?: { page?: number; limit?: number }; filters?: { search?: string } } & TActor;
|
|
38
|
+
response: RpcPage<WorkFolderGetAllResponseEntity[]>;
|
|
39
|
+
};
|
|
40
|
+
[WorkFolderPatterns.getById]: { payload: { id: string } & TActor; response: WorkFolderGetByIdResponseEntity };
|
|
41
|
+
[WorkFolderPatterns.create]: {
|
|
42
|
+
payload: { name: string; description?: string | null } & TActor;
|
|
43
|
+
response: WorkFolderWriteResponseEntity;
|
|
44
|
+
};
|
|
45
|
+
[WorkFolderPatterns.update]: {
|
|
46
|
+
payload: { id: string; name: string; description?: string | null } & TActor;
|
|
47
|
+
response: WorkFolderWriteResponseEntity;
|
|
48
|
+
};
|
|
49
|
+
[WorkFolderPatterns.share]: {
|
|
50
|
+
payload: { id: string; employeeIds: string[] } & TActor;
|
|
51
|
+
response: WorkFolderWriteResponseEntity;
|
|
52
|
+
};
|
|
53
|
+
[WorkFolderPatterns.unshare]: {
|
|
54
|
+
payload: { id: string; participantId: string } & TActor;
|
|
55
|
+
response: WorkFolderWriteResponseEntity;
|
|
56
|
+
};
|
|
57
|
+
[WorkFolderPatterns.addItem]: {
|
|
58
|
+
payload: { id: string; item: WorkFolderItemInput } & TActor;
|
|
59
|
+
response: WorkFolderWriteResponseEntity;
|
|
60
|
+
};
|
|
61
|
+
[WorkFolderPatterns.removeItem]: {
|
|
62
|
+
payload: { id: string; itemId: string } & TActor;
|
|
63
|
+
response: WorkFolderWriteResponseEntity;
|
|
64
|
+
};
|
|
65
|
+
/** La carpeta deja de verse. Lo que contiene no se toca: los documentos siguen en el gestor. */
|
|
66
|
+
[WorkFolderPatterns.remove]: { payload: { id: string } & TActor; response: WorkFolderWriteResponseEntity };
|
|
67
|
+
/**
|
|
68
|
+
* La convierte en expediente: lo crea con estos metadatos, lo comparte con los mismos funcionarios e incorpora sus
|
|
69
|
+
* ítems al índice en el orden en que se agregaron. Desde ahí la carpeta queda solo de consulta.
|
|
70
|
+
*/
|
|
71
|
+
[WorkFolderPatterns.convert]: {
|
|
72
|
+
payload: { id: string } & WorkFolderConvertInput & TActor;
|
|
73
|
+
response: WorkFolderConvertResponseEntity;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CaseFileAccessEntity,
|
|
3
|
+
CaseFileActorEntity,
|
|
4
|
+
CaseFileEntity,
|
|
5
|
+
CaseFileEntryEntity,
|
|
6
|
+
CaseFileMetadataChangeEntity,
|
|
7
|
+
CaseFileParticipantEntity,
|
|
8
|
+
CaseFileTrackingEntity,
|
|
9
|
+
DocumentEntity,
|
|
10
|
+
ProcedureEntity,
|
|
11
|
+
} from '../../base/entities';
|
|
12
|
+
import { DocumentTypeSummaryEntity } from '../document';
|
|
13
|
+
|
|
14
|
+
/** Expediente al que se hace referencia desde otro lado: cómo se cita y en qué estado está. */
|
|
15
|
+
export interface CaseFileLinkEntity {
|
|
16
|
+
id: CaseFileEntity['id'];
|
|
17
|
+
code: CaseFileEntity['code'];
|
|
18
|
+
title: CaseFileEntity['title'];
|
|
19
|
+
status: CaseFileEntity['status'];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface CaseFileGetAllResponseEntity extends CaseFileLinkEntity {
|
|
23
|
+
subject: CaseFileEntity['subject'];
|
|
24
|
+
accessLevel: CaseFileEntity['accessLevel'];
|
|
25
|
+
hasSensitiveData: CaseFileEntity['hasSensitiveData'];
|
|
26
|
+
procedure: Pick<ProcedureEntity, 'id' | 'name'>;
|
|
27
|
+
responsibleEmployeeId: CaseFileEntity['responsibleEmployeeId'];
|
|
28
|
+
responsibleFullName: CaseFileEntity['responsibleFullName'];
|
|
29
|
+
/** Actuaciones vigentes del índice (las que quedaron sin efecto no cuentan). */
|
|
30
|
+
entries: number;
|
|
31
|
+
participants: number;
|
|
32
|
+
createdAt: CaseFileEntity['createdAt'];
|
|
33
|
+
closedAt: CaseFileEntity['closedAt'];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** Documento del gestor incorporado al expediente. */
|
|
37
|
+
export interface CaseFileEntryDocumentEntity {
|
|
38
|
+
id: DocumentEntity['id'];
|
|
39
|
+
subject: DocumentEntity['subject'];
|
|
40
|
+
status: DocumentEntity['status'];
|
|
41
|
+
correlative: DocumentEntity['correlative'];
|
|
42
|
+
correlativeYear: DocumentEntity['correlativeYear'];
|
|
43
|
+
documentType: DocumentTypeSummaryEntity;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Entrada del índice electrónico: una actuación, en su orden de incorporación. */
|
|
47
|
+
export interface CaseFileEntryResponseEntity {
|
|
48
|
+
id: CaseFileEntryEntity['id'];
|
|
49
|
+
sequence: CaseFileEntryEntity['sequence'];
|
|
50
|
+
kind: CaseFileEntryEntity['kind'];
|
|
51
|
+
actuationType: CaseFileEntryEntity['actuationType'];
|
|
52
|
+
title: CaseFileEntryEntity['title'];
|
|
53
|
+
document: CaseFileEntryDocumentEntity | null;
|
|
54
|
+
fileName: CaseFileEntryEntity['fileName'];
|
|
55
|
+
documentTypeName: CaseFileEntryEntity['documentTypeName'];
|
|
56
|
+
originDate: CaseFileEntryEntity['originDate'];
|
|
57
|
+
author: CaseFileEntryEntity['author'];
|
|
58
|
+
keywords: CaseFileEntryEntity['keywords'];
|
|
59
|
+
accessLevel: CaseFileEntryEntity['accessLevel'];
|
|
60
|
+
hasSensitiveData: CaseFileEntryEntity['hasSensitiveData'];
|
|
61
|
+
linkedCaseFile: CaseFileLinkEntity | null;
|
|
62
|
+
/** `true` si la entrada tiene un archivo que se puede abrir (un documento o un archivo subido). */
|
|
63
|
+
hasFile: boolean;
|
|
64
|
+
sha256: CaseFileEntryEntity['sha256'];
|
|
65
|
+
size: CaseFileEntryEntity['size'];
|
|
66
|
+
hasAdvancedSignature: CaseFileEntryEntity['hasAdvancedSignature'];
|
|
67
|
+
incorporatedByEmployeeId: CaseFileEntryEntity['incorporatedByEmployeeId'];
|
|
68
|
+
incorporatedByFullName: CaseFileEntryEntity['incorporatedByFullName'];
|
|
69
|
+
createdAt: CaseFileEntryEntity['createdAt'];
|
|
70
|
+
voidedAt: CaseFileEntryEntity['voidedAt'];
|
|
71
|
+
voidedByFullName: CaseFileEntryEntity['voidedByFullName'];
|
|
72
|
+
voidReason: CaseFileEntryEntity['voidReason'];
|
|
73
|
+
/** `true` si quien consulta puede dejarla sin efecto: el responsable o quien la incorporó, con el expediente abierto. */
|
|
74
|
+
canVoid: boolean;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface CaseFileParticipantResponseEntity {
|
|
78
|
+
id: CaseFileParticipantEntity['id'];
|
|
79
|
+
employeeId: CaseFileParticipantEntity['employeeId'];
|
|
80
|
+
fullName: CaseFileParticipantEntity['fullName'];
|
|
81
|
+
position: CaseFileParticipantEntity['position'];
|
|
82
|
+
addedByFullName: CaseFileParticipantEntity['addedByFullName'];
|
|
83
|
+
createdAt: CaseFileParticipantEntity['createdAt'];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface CaseFileActorResponseEntity {
|
|
87
|
+
id: CaseFileActorEntity['id'];
|
|
88
|
+
relation: CaseFileActorEntity['relation'];
|
|
89
|
+
actorType: CaseFileActorEntity['actorType'];
|
|
90
|
+
identifier: CaseFileActorEntity['identifier'];
|
|
91
|
+
name: CaseFileActorEntity['name'];
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export interface CaseFileTrackingResponseEntity {
|
|
95
|
+
id: CaseFileTrackingEntity['id'];
|
|
96
|
+
action: CaseFileTrackingEntity['action'];
|
|
97
|
+
observation: CaseFileTrackingEntity['observation'];
|
|
98
|
+
employeeFullName: CaseFileTrackingEntity['employeeFullName'];
|
|
99
|
+
createdAt: CaseFileTrackingEntity['createdAt'];
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface CaseFileMetadataChangeResponseEntity {
|
|
103
|
+
id: CaseFileMetadataChangeEntity['id'];
|
|
104
|
+
/** Código oficial del metadato. Ej: `MGDEE1_5`. */
|
|
105
|
+
field: CaseFileMetadataChangeEntity['field'];
|
|
106
|
+
previousValue: CaseFileMetadataChangeEntity['previousValue'];
|
|
107
|
+
newValue: CaseFileMetadataChangeEntity['newValue'];
|
|
108
|
+
employeeFullName: CaseFileMetadataChangeEntity['employeeFullName'];
|
|
109
|
+
createdAt: CaseFileMetadataChangeEntity['createdAt'];
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface CaseFileAccessResponseEntity {
|
|
113
|
+
id: CaseFileAccessEntity['id'];
|
|
114
|
+
action: CaseFileAccessEntity['action'];
|
|
115
|
+
entryId: CaseFileAccessEntity['entryId'];
|
|
116
|
+
/** Título del documento que se abrió, si el acceso fue a uno. */
|
|
117
|
+
entryTitle: string | null;
|
|
118
|
+
employeeFullName: CaseFileAccessEntity['employeeFullName'];
|
|
119
|
+
createdAt: CaseFileAccessEntity['createdAt'];
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export interface CaseFileGetByIdResponseEntity extends CaseFileGetAllResponseEntity {
|
|
123
|
+
summary: CaseFileEntity['summary'];
|
|
124
|
+
procedure: Pick<ProcedureEntity, 'id' | 'name' | 'cpatId' | 'cpatCode'>;
|
|
125
|
+
responsiblePosition: CaseFileEntity['responsiblePosition'];
|
|
126
|
+
incorporationMechanism: CaseFileEntity['incorporationMechanism'];
|
|
127
|
+
schemaVersion: CaseFileEntity['schemaVersion'];
|
|
128
|
+
/** Enlace persistente del expediente (MGDEE4_2). `null` si el servicio no tiene configurada la dirección. */
|
|
129
|
+
uri: string | null;
|
|
130
|
+
closedByFullName: CaseFileEntity['closedByFullName'];
|
|
131
|
+
closingNote: CaseFileEntity['closingNote'];
|
|
132
|
+
index: CaseFileEntryResponseEntity[];
|
|
133
|
+
sharedWith: CaseFileParticipantResponseEntity[];
|
|
134
|
+
actors: CaseFileActorResponseEntity[];
|
|
135
|
+
trackings: CaseFileTrackingResponseEntity[];
|
|
136
|
+
metadataChanges: CaseFileMetadataChangeResponseEntity[];
|
|
137
|
+
/** Registro de accesos. Solo lo recibe el responsable y quien puede ver todos los expedientes. */
|
|
138
|
+
accesses: CaseFileAccessResponseEntity[];
|
|
139
|
+
/** Qué puede hacer con el expediente quien lo consulta. Sin `actor` en la consulta, no viene. */
|
|
140
|
+
actorCapabilities?: {
|
|
141
|
+
isResponsible: boolean;
|
|
142
|
+
/** Editar sus metadatos y cerrarlo: el responsable, mientras esté abierto. */
|
|
143
|
+
canEdit: boolean;
|
|
144
|
+
/** Incorporar actuaciones: el responsable y aquellos con quienes se compartió, mientras esté abierto. */
|
|
145
|
+
canIncorporate: boolean;
|
|
146
|
+
/** Compartirlo con otros funcionarios: el responsable, también después de cerrado. */
|
|
147
|
+
canShare: boolean;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export interface CaseFileCreateResponseEntity {
|
|
152
|
+
id: CaseFileEntity['id'];
|
|
153
|
+
code: CaseFileEntity['code'];
|
|
154
|
+
ok: boolean;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export interface CaseFileUpdateResponseEntity {
|
|
158
|
+
id: CaseFileEntity['id'];
|
|
159
|
+
ok: boolean;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** Lote incorporado: cuántos documentos entraron y cuántos se omitieron (ya estaban, o no finalizados). */
|
|
163
|
+
export interface CaseFileAddBatchResponseEntity {
|
|
164
|
+
id: CaseFileEntity['id'];
|
|
165
|
+
added: number;
|
|
166
|
+
skipped: number;
|
|
167
|
+
ok: boolean;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export interface CaseFileAddEntryResponseEntity {
|
|
171
|
+
id: CaseFileEntity['id'];
|
|
172
|
+
entryId: CaseFileEntryEntity['id'];
|
|
173
|
+
sequence: CaseFileEntryEntity['sequence'];
|
|
174
|
+
ok: boolean;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/** Archivo de una entrada del índice, para servirlo a quien puede ver el expediente. */
|
|
178
|
+
export interface CaseFileEntryFileResponseEntity {
|
|
179
|
+
fileId: string;
|
|
180
|
+
fileName: string;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/** Archivo que va dentro del expediente exportado, con la huella que tenía al incorporarse. */
|
|
184
|
+
export interface CaseFileExportFileEntity {
|
|
185
|
+
entryId: CaseFileEntryEntity['id'];
|
|
186
|
+
sequence: CaseFileEntryEntity['sequence'];
|
|
187
|
+
/** Ruta dentro del ZIP. Ej: `documentos/001-decreto-alcaldicio-exento-590-2026.pdf`. */
|
|
188
|
+
path: string;
|
|
189
|
+
fileId: string;
|
|
190
|
+
sha256: string | null;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Expediente listo para exportar: los metadatos con sus códigos oficiales (va tal cual como `expediente.json`) y los
|
|
195
|
+
* archivos que hay que agregar. El ZIP lo arma el gateway.
|
|
196
|
+
*/
|
|
197
|
+
export interface CaseFileExportResponseEntity {
|
|
198
|
+
code: CaseFileEntity['code'];
|
|
199
|
+
manifest: Record<string, unknown>;
|
|
200
|
+
files: CaseFileExportFileEntity[];
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/** Expediente en que está incorporado un documento, visto desde el documento. */
|
|
204
|
+
export type DocumentCaseFileEntity = CaseFileLinkEntity;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './caseFile.entity';
|