@muni-sanfer/types-gestor-documental 0.0.1-beta.17 → 0.0.1-beta.18
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/contracts/caseFile.contract.d.ts +16 -1
- package/dist/contracts/caseFile.contract.js +1 -0
- package/dist/contracts/index.d.ts +1 -0
- package/dist/entities/caseFile/caseFile.entity.d.ts +28 -0
- package/package.json +1 -1
- package/src/contracts/caseFile.contract.ts +10 -0
- package/src/entities/caseFile/caseFile.entity.ts +26 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type CaseFileActorRelation, type CaseFileActorType, type CaseFileActuationType, type CaseFileEntity, type CaseFileStatus, type DocumentAccessLevel } from '../base/entities';
|
|
2
|
-
import { type CaseFileAddBatchResponseEntity, type CaseFileAddEntryResponseEntity, type CaseFileCreateResponseEntity, type CaseFileEntryFileResponseEntity, type CaseFileExportResponseEntity, type CaseFileGetAllResponseEntity, type CaseFileGetByIdResponseEntity, type CaseFileShareLinkCreateResponseEntity, type CaseFileShareLinkResponseEntity, type CaseFileSharedResponseEntity, type CaseFileUpdateResponseEntity } from '../entities';
|
|
2
|
+
import { type CaseFileAddBatchResponseEntity, type CaseFileAddEntryResponseEntity, type CaseFileCreateResponseEntity, type CaseFileEntryFileResponseEntity, type CaseFileExportResponseEntity, type CaseFileGetAllResponseEntity, type CaseFileGetByIdResponseEntity, type CaseFileShareLinkCreateResponseEntity, type CaseFileShareLinkResponseEntity, type CaseFileSharedResponseEntity, type CaseFileUpdateResponseEntity, type CaseFileVerifyExportResponseEntity } from '../entities';
|
|
3
3
|
import { type RpcPage } from './contract';
|
|
4
4
|
import { type DocumentActor } from './document.contract';
|
|
5
5
|
/** Patrones NATS de `caseFile`: `<servicio>.<recurso>.<acción>`. */
|
|
@@ -23,6 +23,7 @@ export declare const CaseFilePatterns: {
|
|
|
23
23
|
readonly getShared: "gestorDocumental.caseFile.getShared";
|
|
24
24
|
readonly getSharedEntryFile: "gestorDocumental.caseFile.getSharedEntryFile";
|
|
25
25
|
readonly getSharedExport: "gestorDocumental.caseFile.getSharedExport";
|
|
26
|
+
readonly verifyExport: "gestorDocumental.caseFile.verifyExport";
|
|
26
27
|
};
|
|
27
28
|
/** Enlace temporal para que alguien de fuera consulte el expediente sin sesión. */
|
|
28
29
|
export interface CaseFileShareLinkPayload {
|
|
@@ -237,6 +238,20 @@ export interface CaseFileContract {
|
|
|
237
238
|
response: CaseFileEntryFileResponseEntity;
|
|
238
239
|
};
|
|
239
240
|
/** El expediente completo, si el enlace lo permite. Queda en la trazabilidad y en el registro de accesos. */
|
|
241
|
+
/**
|
|
242
|
+
* Verificador público del ZIP exportado: sin sesión, con el identificador del expediente y la huella SHA-256 que
|
|
243
|
+
* calculó el navegador para cada actuación (el ZIP no se sube). Se compara con las huellas registradas al incorporar.
|
|
244
|
+
*/
|
|
245
|
+
[CaseFilePatterns.verifyExport]: {
|
|
246
|
+
payload: {
|
|
247
|
+
code: string;
|
|
248
|
+
entries: {
|
|
249
|
+
sequence: number;
|
|
250
|
+
sha256: string;
|
|
251
|
+
}[];
|
|
252
|
+
};
|
|
253
|
+
response: CaseFileVerifyExportResponseEntity;
|
|
254
|
+
};
|
|
240
255
|
[CaseFilePatterns.getSharedExport]: {
|
|
241
256
|
payload: {
|
|
242
257
|
token: string;
|
|
@@ -22,4 +22,5 @@ exports.CaseFilePatterns = {
|
|
|
22
22
|
getShared: 'gestorDocumental.caseFile.getShared',
|
|
23
23
|
getSharedEntryFile: 'gestorDocumental.caseFile.getSharedEntryFile',
|
|
24
24
|
getSharedExport: 'gestorDocumental.caseFile.getSharedExport',
|
|
25
|
+
verifyExport: 'gestorDocumental.caseFile.verifyExport',
|
|
25
26
|
};
|
|
@@ -93,6 +93,7 @@ export declare const GestorDocumentalPatterns: {
|
|
|
93
93
|
readonly getShared: "gestorDocumental.caseFile.getShared";
|
|
94
94
|
readonly getSharedEntryFile: "gestorDocumental.caseFile.getSharedEntryFile";
|
|
95
95
|
readonly getSharedExport: "gestorDocumental.caseFile.getSharedExport";
|
|
96
|
+
readonly verifyExport: "gestorDocumental.caseFile.verifyExport";
|
|
96
97
|
};
|
|
97
98
|
readonly partsOffice: {
|
|
98
99
|
readonly getStatus: "gestorDocumental.partsOffice.getStatus";
|
|
@@ -267,3 +267,31 @@ export interface CaseFileSharedResponseEntity {
|
|
|
267
267
|
allowExport: boolean;
|
|
268
268
|
entries: CaseFileSharedEntryEntity[];
|
|
269
269
|
}
|
|
270
|
+
/** Resultado de una actuación al verificar un ZIP exportado. */
|
|
271
|
+
export type CaseFileVerifyEntryResult =
|
|
272
|
+
/** La huella coincide con la registrada al incorporarla. */
|
|
273
|
+
'Match'
|
|
274
|
+
/** La huella no coincide: el archivo cambió. */
|
|
275
|
+
| 'Altered'
|
|
276
|
+
/** El ZIP trae una actuación con esa secuencia que el expediente no tiene. */
|
|
277
|
+
| 'NotInRegistry'
|
|
278
|
+
/** El expediente tiene esa actuación con archivo, pero el ZIP no la trae. */
|
|
279
|
+
| 'Missing'
|
|
280
|
+
/** La actuación no tiene huella registrada (incorporada antes de que se guardaran). */
|
|
281
|
+
| 'NoFingerprint';
|
|
282
|
+
export interface CaseFileVerifyExportResponseEntity {
|
|
283
|
+
code: string;
|
|
284
|
+
status: CaseFileEntity['status'];
|
|
285
|
+
closedAt: string | null;
|
|
286
|
+
/** Solo si el expediente es público y sin datos sensibles. */
|
|
287
|
+
title: string | null;
|
|
288
|
+
/** Cuántas actuaciones con archivo tiene el expediente registradas. */
|
|
289
|
+
registeredFiles: number;
|
|
290
|
+
/** `true` si todo lo registrado está en el ZIP y todo coincide. */
|
|
291
|
+
intact: boolean;
|
|
292
|
+
entries: {
|
|
293
|
+
sequence: number;
|
|
294
|
+
result: CaseFileVerifyEntryResult;
|
|
295
|
+
voided: boolean;
|
|
296
|
+
}[];
|
|
297
|
+
}
|
package/package.json
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
type CaseFileShareLinkResponseEntity,
|
|
19
19
|
type CaseFileSharedResponseEntity,
|
|
20
20
|
type CaseFileUpdateResponseEntity,
|
|
21
|
+
type CaseFileVerifyExportResponseEntity,
|
|
21
22
|
} from '../entities';
|
|
22
23
|
import { type RpcPage } from './contract';
|
|
23
24
|
import { type DocumentActor } from './document.contract';
|
|
@@ -43,6 +44,7 @@ export const CaseFilePatterns = {
|
|
|
43
44
|
getShared: 'gestorDocumental.caseFile.getShared',
|
|
44
45
|
getSharedEntryFile: 'gestorDocumental.caseFile.getSharedEntryFile',
|
|
45
46
|
getSharedExport: 'gestorDocumental.caseFile.getSharedExport',
|
|
47
|
+
verifyExport: 'gestorDocumental.caseFile.verifyExport',
|
|
46
48
|
} as const;
|
|
47
49
|
|
|
48
50
|
/** Enlace temporal para que alguien de fuera consulte el expediente sin sesión. */
|
|
@@ -211,6 +213,14 @@ export interface CaseFileContract {
|
|
|
211
213
|
response: CaseFileEntryFileResponseEntity;
|
|
212
214
|
};
|
|
213
215
|
/** El expediente completo, si el enlace lo permite. Queda en la trazabilidad y en el registro de accesos. */
|
|
216
|
+
/**
|
|
217
|
+
* Verificador público del ZIP exportado: sin sesión, con el identificador del expediente y la huella SHA-256 que
|
|
218
|
+
* calculó el navegador para cada actuación (el ZIP no se sube). Se compara con las huellas registradas al incorporar.
|
|
219
|
+
*/
|
|
220
|
+
[CaseFilePatterns.verifyExport]: {
|
|
221
|
+
payload: { code: string; entries: { sequence: number; sha256: string }[] };
|
|
222
|
+
response: CaseFileVerifyExportResponseEntity;
|
|
223
|
+
};
|
|
214
224
|
[CaseFilePatterns.getSharedExport]: {
|
|
215
225
|
payload: { token: string };
|
|
216
226
|
response: CaseFileExportResponseEntity;
|
|
@@ -293,3 +293,29 @@ export interface CaseFileSharedResponseEntity {
|
|
|
293
293
|
allowExport: boolean;
|
|
294
294
|
entries: CaseFileSharedEntryEntity[];
|
|
295
295
|
}
|
|
296
|
+
|
|
297
|
+
/** Resultado de una actuación al verificar un ZIP exportado. */
|
|
298
|
+
export type CaseFileVerifyEntryResult =
|
|
299
|
+
/** La huella coincide con la registrada al incorporarla. */
|
|
300
|
+
| 'Match'
|
|
301
|
+
/** La huella no coincide: el archivo cambió. */
|
|
302
|
+
| 'Altered'
|
|
303
|
+
/** El ZIP trae una actuación con esa secuencia que el expediente no tiene. */
|
|
304
|
+
| 'NotInRegistry'
|
|
305
|
+
/** El expediente tiene esa actuación con archivo, pero el ZIP no la trae. */
|
|
306
|
+
| 'Missing'
|
|
307
|
+
/** La actuación no tiene huella registrada (incorporada antes de que se guardaran). */
|
|
308
|
+
| 'NoFingerprint';
|
|
309
|
+
|
|
310
|
+
export interface CaseFileVerifyExportResponseEntity {
|
|
311
|
+
code: string;
|
|
312
|
+
status: CaseFileEntity['status'];
|
|
313
|
+
closedAt: string | null;
|
|
314
|
+
/** Solo si el expediente es público y sin datos sensibles. */
|
|
315
|
+
title: string | null;
|
|
316
|
+
/** Cuántas actuaciones con archivo tiene el expediente registradas. */
|
|
317
|
+
registeredFiles: number;
|
|
318
|
+
/** `true` si todo lo registrado está en el ZIP y todo coincide. */
|
|
319
|
+
intact: boolean;
|
|
320
|
+
entries: { sequence: number; result: CaseFileVerifyEntryResult; voided: boolean }[];
|
|
321
|
+
}
|