@muni-sanfer/types-gestor-documental 0.0.1-beta.12 → 0.0.1-beta.14

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 (36) hide show
  1. package/dist/base/entities.d.ts +24 -1
  2. package/dist/base/entities.js +1 -0
  3. package/dist/contracts/caseFile.contract.d.ts +15 -0
  4. package/dist/contracts/documentType.contract.d.ts +2 -0
  5. package/dist/contracts/index.d.ts +11 -1
  6. package/dist/contracts/index.js +3 -0
  7. package/dist/contracts/issuingEntity.contract.d.ts +52 -0
  8. package/dist/contracts/issuingEntity.contract.js +11 -0
  9. package/dist/contracts/partsOffice.contract.d.ts +6 -0
  10. package/dist/contracts/partsOffice.contract.js +1 -0
  11. package/dist/entities/caseFile/caseFile.entity.d.ts +6 -0
  12. package/dist/entities/document/document.entity.d.ts +2 -0
  13. package/dist/entities/documentType/documentType.entity.d.ts +13 -0
  14. package/dist/entities/index.d.ts +1 -0
  15. package/dist/entities/index.js +1 -0
  16. package/dist/entities/issuingEntity/index.d.ts +1 -0
  17. package/dist/entities/issuingEntity/index.js +17 -0
  18. package/dist/entities/issuingEntity/issuingEntity.entity.d.ts +20 -0
  19. package/dist/entities/issuingEntity/issuingEntity.entity.js +2 -0
  20. package/dist/entities/partsOffice/partsOffice.entity.d.ts +4 -0
  21. package/dist/entities/registerBook/registerBook.entity.d.ts +6 -0
  22. package/package.json +1 -1
  23. package/src/base/entities.ts +25 -1
  24. package/src/contracts/caseFile.contract.ts +17 -1
  25. package/src/contracts/documentType.contract.ts +6 -1
  26. package/src/contracts/index.ts +4 -0
  27. package/src/contracts/issuingEntity.contract.ts +55 -0
  28. package/src/contracts/partsOffice.contract.ts +3 -0
  29. package/src/entities/caseFile/caseFile.entity.ts +6 -0
  30. package/src/entities/document/document.entity.ts +4 -0
  31. package/src/entities/documentType/documentType.entity.ts +7 -0
  32. package/src/entities/index.ts +1 -0
  33. package/src/entities/issuingEntity/index.ts +1 -0
  34. package/src/entities/issuingEntity/issuingEntity.entity.ts +24 -0
  35. package/src/entities/partsOffice/partsOffice.entity.ts +4 -0
  36. package/src/entities/registerBook/registerBook.entity.ts +6 -0
@@ -121,11 +121,12 @@ export declare const CaseFileActuationType: {
121
121
  Subfolder: "Subfolder";
122
122
  PowerRegistration: "PowerRegistration";
123
123
  };
124
- export type CaseFileEntryKind = 'Document' | 'File' | 'CaseFile';
124
+ export type CaseFileEntryKind = 'Document' | 'File' | 'CaseFile' | 'Physical';
125
125
  export declare const CaseFileEntryKind: {
126
126
  Document: "Document";
127
127
  File: "File";
128
128
  CaseFile: "CaseFile";
129
+ Physical: "Physical";
129
130
  };
130
131
  export type CaseFileActorRelation = 'Responsible' | 'Interested' | 'Author' | 'Referred' | 'Recipient' | 'MinisterOfFaith';
131
132
  export declare const CaseFileActorRelation: {
@@ -177,6 +178,11 @@ export interface DocumentTypeEntity {
177
178
  resetsYearly: boolean;
178
179
  numbered: boolean;
179
180
  directorateCodeReference?: number | null;
181
+ issuingEntity?: IssuingEntityEntity | null;
182
+ issuingEntityId?: string | null;
183
+ sharesNumberingWith?: DocumentTypeEntity | null;
184
+ sharesNumberingWithId?: string | null;
185
+ numberingMembers?: DocumentTypeEntity[];
180
186
  enabled: boolean;
181
187
  documents?: DocumentEntity[];
182
188
  annulledNumbers?: DocumentAnnulledNumberEntity[];
@@ -439,6 +445,9 @@ export interface CaseFileEntryEntity {
439
445
  keywords: string[];
440
446
  accessLevel?: DocumentAccessLevel | null;
441
447
  hasSensitiveData?: boolean | null;
448
+ physicalLocation?: string | null;
449
+ physicalReason?: string | null;
450
+ pageCount?: number | null;
442
451
  linkedCaseFile?: CaseFileEntity | null;
443
452
  linkedCaseFileId?: string | null;
444
453
  sha256?: string | null;
@@ -531,6 +540,8 @@ export interface DocDigitalInboundEntity {
531
540
  senderEntityName?: string | null;
532
541
  senderName?: string | null;
533
542
  senderPosition?: string | null;
543
+ recipientEntityId?: number | null;
544
+ recipientEntityName?: string | null;
534
545
  fileId?: string | null;
535
546
  fileName?: string | null;
536
547
  attachments: JsonValue;
@@ -548,6 +559,18 @@ export interface DocDigitalInboundEntity {
548
559
  createdAt: string;
549
560
  updatedAt: string;
550
561
  }
562
+ export interface IssuingEntityEntity {
563
+ id: string;
564
+ name: string;
565
+ shortName?: string | null;
566
+ directorateCodeReferences: number[];
567
+ docDigitalEntityId?: number | null;
568
+ enabled: boolean;
569
+ documentTypes?: DocumentTypeEntity[];
570
+ deleted: boolean;
571
+ createdAt: string;
572
+ updatedAt: string;
573
+ }
551
574
  export interface IntakeSequenceEntity {
552
575
  year: number;
553
576
  next: number;
@@ -112,6 +112,7 @@ exports.CaseFileEntryKind = {
112
112
  Document: 'Document',
113
113
  File: 'File',
114
114
  CaseFile: 'CaseFile',
115
+ Physical: 'Physical',
115
116
  };
116
117
  exports.CaseFileActorRelation = {
117
118
  Responsible: 'Responsible',
@@ -56,6 +56,21 @@ export type CaseFileEntryInput = {
56
56
  kind: 'CaseFile';
57
57
  actuationType: CaseFileActuationType;
58
58
  linkedCaseFileId: string;
59
+ } | {
60
+ kind: 'Physical';
61
+ actuationType: CaseFileActuationType;
62
+ title: string;
63
+ documentTypeName?: string | null;
64
+ originDate?: string | null;
65
+ author?: string | null;
66
+ /** Dónde está el papel: oficina, archivador, caja (MGDDE5_5). */
67
+ physicalLocation: string;
68
+ /** Por qué no se pudo digitalizar. */
69
+ physicalReason: string;
70
+ pageCount?: number | null;
71
+ keywords: string[];
72
+ accessLevel: DocumentAccessLevel;
73
+ hasSensitiveData: boolean;
59
74
  };
60
75
  /** Quién hace la operación (de la sesión) y si puede ver todos los expedientes. */
61
76
  interface CaseFileActorPayload {
@@ -36,6 +36,8 @@ export interface DocumentTypeWritePayload {
36
36
  resetsYearly?: boolean;
37
37
  numbered?: boolean;
38
38
  directorateCodeReference?: number | null;
39
+ issuingEntityId?: string | null;
40
+ sharesNumberingWithId?: string | null;
39
41
  enabled?: boolean;
40
42
  flowSteps?: DocumentFlowStepInput[];
41
43
  }
@@ -1,6 +1,7 @@
1
1
  import { type CaseFileContract } from './caseFile.contract';
2
2
  import { type DocumentContract } from './document.contract';
3
3
  import { type DocumentTypeContract } from './documentType.contract';
4
+ import { type IssuingEntityContract } from './issuingEntity.contract';
4
5
  import { type PartsOfficeContract } from './partsOffice.contract';
5
6
  import { type ProcedureContract } from './procedure.contract';
6
7
  import { type RegisterBookContract } from './registerBook.contract';
@@ -10,6 +11,7 @@ export * from './contract';
10
11
  export * from './document.contract';
11
12
  export * from './documentType.contract';
12
13
  export * from './procedure.contract';
14
+ export * from './issuingEntity.contract';
13
15
  export * from './caseFile.contract';
14
16
  export * from './partsOffice.contract';
15
17
  export * from './registerBook.contract';
@@ -52,6 +54,13 @@ export declare const GestorDocumentalPatterns: {
52
54
  readonly update: "gestorDocumental.procedure.update";
53
55
  readonly setEnabled: "gestorDocumental.procedure.setEnabled";
54
56
  };
57
+ readonly issuingEntity: {
58
+ readonly getAll: "gestorDocumental.issuingEntity.getAll";
59
+ readonly getById: "gestorDocumental.issuingEntity.getById";
60
+ readonly create: "gestorDocumental.issuingEntity.create";
61
+ readonly update: "gestorDocumental.issuingEntity.update";
62
+ readonly setEnabled: "gestorDocumental.issuingEntity.setEnabled";
63
+ };
55
64
  readonly caseFile: {
56
65
  readonly getAll: "gestorDocumental.caseFile.getAll";
57
66
  readonly getById: "gestorDocumental.caseFile.getById";
@@ -71,6 +80,7 @@ export declare const GestorDocumentalPatterns: {
71
80
  readonly getStatus: "gestorDocumental.partsOffice.getStatus";
72
81
  readonly getSummary: "gestorDocumental.partsOffice.getSummary";
73
82
  readonly getEntities: "gestorDocumental.partsOffice.getEntities";
83
+ readonly getOwnEntities: "gestorDocumental.partsOffice.getOwnEntities";
74
84
  readonly getUsers: "gestorDocumental.partsOffice.getUsers";
75
85
  readonly getDocumentTypes: "gestorDocumental.partsOffice.getDocumentTypes";
76
86
  readonly getDispatches: "gestorDocumental.partsOffice.getDispatches";
@@ -111,4 +121,4 @@ export declare const GestorDocumentalPatterns: {
111
121
  };
112
122
  };
113
123
  /** Contrato completo de gestor-documental-ms: la unión de los contratos de sus recursos. */
114
- export type GestorDocumentalContract = DocumentTypeContract & DocumentContract & ProcedureContract & CaseFileContract & PartsOfficeContract & RegisterBookContract & SignatureBatchContract & WorkFolderContract;
124
+ export type GestorDocumentalContract = DocumentTypeContract & DocumentContract & ProcedureContract & IssuingEntityContract & CaseFileContract & PartsOfficeContract & RegisterBookContract & SignatureBatchContract & WorkFolderContract;
@@ -18,6 +18,7 @@ exports.GestorDocumentalPatterns = void 0;
18
18
  const caseFile_contract_1 = require("./caseFile.contract");
19
19
  const document_contract_1 = require("./document.contract");
20
20
  const documentType_contract_1 = require("./documentType.contract");
21
+ const issuingEntity_contract_1 = require("./issuingEntity.contract");
21
22
  const partsOffice_contract_1 = require("./partsOffice.contract");
22
23
  const procedure_contract_1 = require("./procedure.contract");
23
24
  const registerBook_contract_1 = require("./registerBook.contract");
@@ -27,6 +28,7 @@ __exportStar(require("./contract"), exports);
27
28
  __exportStar(require("./document.contract"), exports);
28
29
  __exportStar(require("./documentType.contract"), exports);
29
30
  __exportStar(require("./procedure.contract"), exports);
31
+ __exportStar(require("./issuingEntity.contract"), exports);
30
32
  __exportStar(require("./caseFile.contract"), exports);
31
33
  __exportStar(require("./partsOffice.contract"), exports);
32
34
  __exportStar(require("./registerBook.contract"), exports);
@@ -37,6 +39,7 @@ exports.GestorDocumentalPatterns = {
37
39
  documentType: documentType_contract_1.DocumentTypePatterns,
38
40
  document: document_contract_1.DocumentPatterns,
39
41
  procedure: procedure_contract_1.ProcedurePatterns,
42
+ issuingEntity: issuingEntity_contract_1.IssuingEntityPatterns,
40
43
  caseFile: caseFile_contract_1.CaseFilePatterns,
41
44
  partsOffice: partsOffice_contract_1.PartsOfficePatterns,
42
45
  registerBook: registerBook_contract_1.RegisterBookPatterns,
@@ -0,0 +1,52 @@
1
+ import { type IssuingEntityEntity } from '../base/entities';
2
+ import { type IssuingEntityCreateResponseEntity, type IssuingEntityGetAllResponseEntity, type IssuingEntityGetByIdResponseEntity, type IssuingEntityUpdateResponseEntity } from '../entities';
3
+ import { type RpcPage } from './contract';
4
+ /** Patrones NATS de `issuingEntity`: `<servicio>.<recurso>.<acción>`. */
5
+ export declare const IssuingEntityPatterns: {
6
+ readonly getAll: "gestorDocumental.issuingEntity.getAll";
7
+ readonly getById: "gestorDocumental.issuingEntity.getById";
8
+ readonly create: "gestorDocumental.issuingEntity.create";
9
+ readonly update: "gestorDocumental.issuingEntity.update";
10
+ readonly setEnabled: "gestorDocumental.issuingEntity.setEnabled";
11
+ };
12
+ /** Datos de una entidad emisora al crearla o editarla. */
13
+ export interface IssuingEntityWritePayload {
14
+ name: string;
15
+ shortName?: string | null;
16
+ /** Direcciones (código de caschile) cuyos funcionarios actúan por la entidad. */
17
+ directorateCodeReferences: number[];
18
+ /** Su entidad en DocDigital, entre las asociadas a las credenciales del gestor. */
19
+ docDigitalEntityId?: number | null;
20
+ enabled?: boolean;
21
+ }
22
+ export interface IssuingEntityContract {
23
+ [IssuingEntityPatterns.getAll]: {
24
+ payload: {
25
+ pagination?: {
26
+ page?: number;
27
+ limit?: number;
28
+ };
29
+ filters?: {
30
+ search?: string;
31
+ enabled?: boolean;
32
+ };
33
+ };
34
+ response: RpcPage<IssuingEntityGetAllResponseEntity[]>;
35
+ };
36
+ [IssuingEntityPatterns.getById]: {
37
+ payload: Pick<IssuingEntityEntity, 'id'>;
38
+ response: IssuingEntityGetByIdResponseEntity;
39
+ };
40
+ [IssuingEntityPatterns.create]: {
41
+ payload: IssuingEntityWritePayload;
42
+ response: IssuingEntityCreateResponseEntity;
43
+ };
44
+ [IssuingEntityPatterns.update]: {
45
+ payload: IssuingEntityWritePayload & Pick<IssuingEntityEntity, 'id'>;
46
+ response: IssuingEntityUpdateResponseEntity;
47
+ };
48
+ [IssuingEntityPatterns.setEnabled]: {
49
+ payload: Pick<IssuingEntityEntity, 'id' | 'enabled'>;
50
+ response: IssuingEntityUpdateResponseEntity;
51
+ };
52
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IssuingEntityPatterns = void 0;
4
+ /** Patrones NATS de `issuingEntity`: `<servicio>.<recurso>.<acción>`. */
5
+ exports.IssuingEntityPatterns = {
6
+ getAll: 'gestorDocumental.issuingEntity.getAll',
7
+ getById: 'gestorDocumental.issuingEntity.getById',
8
+ create: 'gestorDocumental.issuingEntity.create',
9
+ update: 'gestorDocumental.issuingEntity.update',
10
+ setEnabled: 'gestorDocumental.issuingEntity.setEnabled',
11
+ };
@@ -7,6 +7,7 @@ export declare const PartsOfficePatterns: {
7
7
  readonly getStatus: "gestorDocumental.partsOffice.getStatus";
8
8
  readonly getSummary: "gestorDocumental.partsOffice.getSummary";
9
9
  readonly getEntities: "gestorDocumental.partsOffice.getEntities";
10
+ readonly getOwnEntities: "gestorDocumental.partsOffice.getOwnEntities";
10
11
  readonly getUsers: "gestorDocumental.partsOffice.getUsers";
11
12
  readonly getDocumentTypes: "gestorDocumental.partsOffice.getDocumentTypes";
12
13
  readonly getDispatches: "gestorDocumental.partsOffice.getDispatches";
@@ -62,6 +63,11 @@ export interface PartsOfficeContract {
62
63
  };
63
64
  response: DocDigitalEntityEntity[];
64
65
  };
66
+ /** Entidades asociadas a las credenciales del gestor: la del municipio y las de sus entidades emisoras. */
67
+ [PartsOfficePatterns.getOwnEntities]: {
68
+ payload: Record<string, never>;
69
+ response: DocDigitalEntityEntity[];
70
+ };
65
71
  [PartsOfficePatterns.getUsers]: {
66
72
  payload: {
67
73
  entityId: number;
@@ -6,6 +6,7 @@ exports.PartsOfficePatterns = {
6
6
  getStatus: 'gestorDocumental.partsOffice.getStatus',
7
7
  getSummary: 'gestorDocumental.partsOffice.getSummary',
8
8
  getEntities: 'gestorDocumental.partsOffice.getEntities',
9
+ getOwnEntities: 'gestorDocumental.partsOffice.getOwnEntities',
9
10
  getUsers: 'gestorDocumental.partsOffice.getUsers',
10
11
  getDocumentTypes: 'gestorDocumental.partsOffice.getDocumentTypes',
11
12
  getDispatches: 'gestorDocumental.partsOffice.getDispatches',
@@ -35,6 +35,10 @@ export interface CaseFileEntryResponseEntity {
35
35
  sequence: CaseFileEntryEntity['sequence'];
36
36
  /** Subcarpeta del índice (sin valor: en la raíz). */
37
37
  folder: CaseFileEntryEntity['folder'];
38
+ /** Documento en papel: dónde está, por qué no se digitalizó y cuántas páginas tiene. */
39
+ physicalLocation: CaseFileEntryEntity['physicalLocation'];
40
+ physicalReason: CaseFileEntryEntity['physicalReason'];
41
+ pageCount: CaseFileEntryEntity['pageCount'];
38
42
  kind: CaseFileEntryEntity['kind'];
39
43
  actuationType: CaseFileEntryEntity['actuationType'];
40
44
  title: CaseFileEntryEntity['title'];
@@ -111,6 +115,8 @@ export interface CaseFileGetByIdResponseEntity extends CaseFileGetAllResponseEnt
111
115
  uri: string | null;
112
116
  closedByFullName: CaseFileEntity['closedByFullName'];
113
117
  closingNote: CaseFileEntity['closingNote'];
118
+ /** Expediente híbrido: tiene documentos en papel que no se pudieron digitalizar. */
119
+ isHybrid: boolean;
114
120
  index: CaseFileEntryResponseEntity[];
115
121
  sharedWith: CaseFileParticipantResponseEntity[];
116
122
  actors: CaseFileActorResponseEntity[];
@@ -114,6 +114,7 @@ export interface DocumentInboxItemEntity extends DocumentDeliveryResponseEntity
114
114
  }
115
115
  export interface DocumentGetByIdResponseEntity {
116
116
  id: DocumentEntity['id'];
117
+ issuerName: string;
117
118
  subject: DocumentEntity['subject'];
118
119
  keywords: DocumentEntity['keywords'];
119
120
  accessLevel: DocumentEntity['accessLevel'];
@@ -282,6 +283,7 @@ export interface DocumentVerifyResponseEntity {
282
283
  state: DocumentVerificationState;
283
284
  verificationCode: string;
284
285
  documentType: Pick<DocumentTypeSummaryEntity, 'name' | 'abbreviation'>;
286
+ issuerName: string;
285
287
  correlative: DocumentEntity['correlative'];
286
288
  correlativeYear: DocumentEntity['correlativeYear'];
287
289
  numberedAt: DocumentEntity['numberedAt'];
@@ -22,6 +22,19 @@ export interface DocumentTypeGetAllResponseEntity {
22
22
  resetsYearly: DocumentTypeEntity['resetsYearly'];
23
23
  numbered: DocumentTypeEntity['numbered'];
24
24
  directorateCodeReference: DocumentTypeEntity['directorateCodeReference'];
25
+ issuingEntity: {
26
+ id: string;
27
+ name: string;
28
+ shortName: string | null;
29
+ } | null;
30
+ sharesNumberingWith: {
31
+ id: string;
32
+ name: string;
33
+ } | null;
34
+ numberingMembers: {
35
+ id: string;
36
+ name: string;
37
+ }[];
25
38
  enabled: DocumentTypeEntity['enabled'];
26
39
  flow: {
27
40
  visa: number;
@@ -1,6 +1,7 @@
1
1
  export * from './documentType';
2
2
  export * from './document';
3
3
  export * from './procedure';
4
+ export * from './issuingEntity';
4
5
  export * from './caseFile';
5
6
  export * from './partsOffice';
6
7
  export * from './registerBook';
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./documentType"), exports);
18
18
  __exportStar(require("./document"), exports);
19
19
  __exportStar(require("./procedure"), exports);
20
+ __exportStar(require("./issuingEntity"), exports);
20
21
  __exportStar(require("./caseFile"), exports);
21
22
  __exportStar(require("./partsOffice"), exports);
22
23
  __exportStar(require("./registerBook"), exports);
@@ -0,0 +1 @@
1
+ export * from './issuingEntity.entity';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./issuingEntity.entity"), exports);
@@ -0,0 +1,20 @@
1
+ import { IssuingEntityEntity } from '../../base/entities';
2
+ export interface IssuingEntityGetAllResponseEntity {
3
+ id: IssuingEntityEntity['id'];
4
+ name: IssuingEntityEntity['name'];
5
+ shortName: IssuingEntityEntity['shortName'];
6
+ directorateCodeReferences: IssuingEntityEntity['directorateCodeReferences'];
7
+ docDigitalEntityId: IssuingEntityEntity['docDigitalEntityId'];
8
+ enabled: IssuingEntityEntity['enabled'];
9
+ /** Cuántos tipos documentales emite. */
10
+ documentTypes: number;
11
+ }
12
+ export type IssuingEntityGetByIdResponseEntity = IssuingEntityGetAllResponseEntity;
13
+ export interface IssuingEntityCreateResponseEntity {
14
+ id: IssuingEntityEntity['id'];
15
+ ok: boolean;
16
+ }
17
+ export interface IssuingEntityUpdateResponseEntity {
18
+ id: IssuingEntityEntity['id'];
19
+ ok: boolean;
20
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -32,6 +32,8 @@ export interface PartsOfficeDispatchEntity extends DocumentDispatchResponseEntit
32
32
  accessLevel: string;
33
33
  };
34
34
  externalRecipients: DocumentExternalRecipientResponseEntity[];
35
+ /** A nombre de quién sale: la entidad emisora del tipo documental o la municipalidad. */
36
+ issuerName: string;
35
37
  createdAt: string;
36
38
  }
37
39
  /** Documento que llegó por DocDigital. */
@@ -45,6 +47,8 @@ export interface PartsOfficeInboundEntity {
45
47
  folioDate: string | null;
46
48
  typeName: string | null;
47
49
  reserved: boolean;
50
+ /** Entidad propia a la que llegó (la municipalidad o una entidad emisora). */
51
+ recipientEntityName: string | null;
48
52
  senderEntityName: string | null;
49
53
  senderName: string | null;
50
54
  senderPosition: string | null;
@@ -24,11 +24,17 @@ export interface RegisterBookRowEntity {
24
24
  dispatch: string | null;
25
25
  /** Motivo de la anulación (del documento o del número). */
26
26
  observation: string | null;
27
+ /** Numeración compartida: tipo documental del número (`null` en un salto o si el libro es de un solo tipo). */
28
+ documentTypeName: string | null;
27
29
  }
28
30
  export interface RegisterBookEntity {
29
31
  kind: RegisterBookKind;
30
32
  /** «Decreto alcaldicio exento» o «Ingresos de Oficina de Partes». */
31
33
  title: string;
34
+ /** Quién lleva el libro: la entidad emisora del tipo o la municipalidad. */
35
+ issuerName: string;
36
+ /** Numeración compartida: los tipos que numeran en la serie del libro (vacío si es de un solo tipo). */
37
+ series: string[];
32
38
  year: number;
33
39
  month: number | null;
34
40
  rows: RegisterBookRowEntity[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@muni-sanfer/types-gestor-documental",
3
- "version": "0.0.1-beta.12",
3
+ "version": "0.0.1-beta.14",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -183,12 +183,13 @@ export const CaseFileActuationType = {
183
183
  PowerRegistration: 'PowerRegistration',
184
184
  } satisfies Record<string, CaseFileActuationType>;
185
185
 
186
- export type CaseFileEntryKind = 'Document' | 'File' | 'CaseFile';
186
+ export type CaseFileEntryKind = 'Document' | 'File' | 'CaseFile' | 'Physical';
187
187
 
188
188
  export const CaseFileEntryKind = {
189
189
  Document: 'Document',
190
190
  File: 'File',
191
191
  CaseFile: 'CaseFile',
192
+ Physical: 'Physical',
192
193
  } satisfies Record<string, CaseFileEntryKind>;
193
194
 
194
195
  export type CaseFileActorRelation =
@@ -261,6 +262,11 @@ export interface DocumentTypeEntity {
261
262
  resetsYearly: boolean;
262
263
  numbered: boolean;
263
264
  directorateCodeReference?: number | null;
265
+ issuingEntity?: IssuingEntityEntity | null;
266
+ issuingEntityId?: string | null;
267
+ sharesNumberingWith?: DocumentTypeEntity | null;
268
+ sharesNumberingWithId?: string | null;
269
+ numberingMembers?: DocumentTypeEntity[];
264
270
  enabled: boolean;
265
271
  documents?: DocumentEntity[];
266
272
  annulledNumbers?: DocumentAnnulledNumberEntity[];
@@ -538,6 +544,9 @@ export interface CaseFileEntryEntity {
538
544
  keywords: string[];
539
545
  accessLevel?: DocumentAccessLevel | null;
540
546
  hasSensitiveData?: boolean | null;
547
+ physicalLocation?: string | null;
548
+ physicalReason?: string | null;
549
+ pageCount?: number | null;
541
550
  linkedCaseFile?: CaseFileEntity | null;
542
551
  linkedCaseFileId?: string | null;
543
552
  sha256?: string | null;
@@ -636,6 +645,8 @@ export interface DocDigitalInboundEntity {
636
645
  senderEntityName?: string | null;
637
646
  senderName?: string | null;
638
647
  senderPosition?: string | null;
648
+ recipientEntityId?: number | null;
649
+ recipientEntityName?: string | null;
639
650
  fileId?: string | null;
640
651
  fileName?: string | null;
641
652
  attachments: JsonValue;
@@ -654,6 +665,19 @@ export interface DocDigitalInboundEntity {
654
665
  updatedAt: string;
655
666
  }
656
667
 
668
+ export interface IssuingEntityEntity {
669
+ id: string;
670
+ name: string;
671
+ shortName?: string | null;
672
+ directorateCodeReferences: number[];
673
+ docDigitalEntityId?: number | null;
674
+ enabled: boolean;
675
+ documentTypes?: DocumentTypeEntity[];
676
+ deleted: boolean;
677
+ createdAt: string;
678
+ updatedAt: string;
679
+ }
680
+
657
681
  export interface IntakeSequenceEntity {
658
682
  year: number;
659
683
  next: number;
@@ -71,7 +71,23 @@ export type CaseFileEntryInput =
71
71
  accessLevel: DocumentAccessLevel;
72
72
  hasSensitiveData: boolean;
73
73
  }
74
- | { kind: 'CaseFile'; actuationType: CaseFileActuationType; linkedCaseFileId: string };
74
+ | { kind: 'CaseFile'; actuationType: CaseFileActuationType; linkedCaseFileId: string }
75
+ | {
76
+ kind: 'Physical';
77
+ actuationType: CaseFileActuationType;
78
+ title: string;
79
+ documentTypeName?: string | null;
80
+ originDate?: string | null;
81
+ author?: string | null;
82
+ /** Dónde está el papel: oficina, archivador, caja (MGDDE5_5). */
83
+ physicalLocation: string;
84
+ /** Por qué no se pudo digitalizar. */
85
+ physicalReason: string;
86
+ pageCount?: number | null;
87
+ keywords: string[];
88
+ accessLevel: DocumentAccessLevel;
89
+ hasSensitiveData: boolean;
90
+ };
75
91
 
76
92
  /** Quién hace la operación (de la sesión) y si puede ver todos los expedientes. */
77
93
  interface CaseFileActorPayload {
@@ -41,6 +41,10 @@ export interface DocumentTypeWritePayload {
41
41
  // Sus documentos llevan número (por omisión, sí).
42
42
  numbered?: boolean;
43
43
  directorateCodeReference?: number | null;
44
+ // Entidad emisora (sin valor: la municipalidad).
45
+ issuingEntityId?: string | null;
46
+ // Tipo cuyo correlativo comparte (sin valor: el suyo propio).
47
+ sharesNumberingWithId?: string | null;
44
48
  enabled?: boolean;
45
49
  // Flujo sugerido, en el orden en que les toca dentro de cada rol. Al editar, si no viene, el flujo no cambia.
46
50
  flowSteps?: DocumentFlowStepInput[];
@@ -58,7 +62,8 @@ export interface DocumentTypeContract {
58
62
  search?: string;
59
63
  enabled?: boolean;
60
64
  category?: DocumentCategory;
61
- // Solo los que puede usar quien redacta: los de toda la municipalidad y los de estas direcciones.
65
+ // Solo los que puede usar quien redacta: los de toda la municipalidad y los de estas direcciones (o de una
66
+ // entidad emisora por la que actúan).
62
67
  usableByDirectorates?: number[];
63
68
  };
64
69
  };
@@ -1,6 +1,7 @@
1
1
  import { CaseFilePatterns, type CaseFileContract } from './caseFile.contract';
2
2
  import { DocumentPatterns, type DocumentContract } from './document.contract';
3
3
  import { DocumentTypePatterns, type DocumentTypeContract } from './documentType.contract';
4
+ import { IssuingEntityPatterns, type IssuingEntityContract } from './issuingEntity.contract';
4
5
  import { PartsOfficePatterns, type PartsOfficeContract } from './partsOffice.contract';
5
6
  import { ProcedurePatterns, type ProcedureContract } from './procedure.contract';
6
7
  import { RegisterBookPatterns, type RegisterBookContract } from './registerBook.contract';
@@ -11,6 +12,7 @@ export * from './contract';
11
12
  export * from './document.contract';
12
13
  export * from './documentType.contract';
13
14
  export * from './procedure.contract';
15
+ export * from './issuingEntity.contract';
14
16
  export * from './caseFile.contract';
15
17
  export * from './partsOffice.contract';
16
18
  export * from './registerBook.contract';
@@ -22,6 +24,7 @@ export const GestorDocumentalPatterns = {
22
24
  documentType: DocumentTypePatterns,
23
25
  document: DocumentPatterns,
24
26
  procedure: ProcedurePatterns,
27
+ issuingEntity: IssuingEntityPatterns,
25
28
  caseFile: CaseFilePatterns,
26
29
  partsOffice: PartsOfficePatterns,
27
30
  registerBook: RegisterBookPatterns,
@@ -33,6 +36,7 @@ export const GestorDocumentalPatterns = {
33
36
  export type GestorDocumentalContract = DocumentTypeContract &
34
37
  DocumentContract &
35
38
  ProcedureContract &
39
+ IssuingEntityContract &
36
40
  CaseFileContract &
37
41
  PartsOfficeContract &
38
42
  RegisterBookContract &
@@ -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
+ }
@@ -20,6 +20,7 @@ export const PartsOfficePatterns = {
20
20
  getStatus: 'gestorDocumental.partsOffice.getStatus',
21
21
  getSummary: 'gestorDocumental.partsOffice.getSummary',
22
22
  getEntities: 'gestorDocumental.partsOffice.getEntities',
23
+ getOwnEntities: 'gestorDocumental.partsOffice.getOwnEntities',
23
24
  getUsers: 'gestorDocumental.partsOffice.getUsers',
24
25
  getDocumentTypes: 'gestorDocumental.partsOffice.getDocumentTypes',
25
26
  getDispatches: 'gestorDocumental.partsOffice.getDispatches',
@@ -51,6 +52,8 @@ export interface PartsOfficeContract {
51
52
  [PartsOfficePatterns.getSummary]: { payload: Record<string, never>; response: PartsOfficeSummaryEntity };
52
53
  /** Directorio de DocDigital: instituciones por nombre. */
53
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[] };
54
57
  [PartsOfficePatterns.getUsers]: {
55
58
  payload: { entityId: number; search?: string };
56
59
  response: DocDigitalUserEntity[];
@@ -49,6 +49,10 @@ export interface CaseFileEntryResponseEntity {
49
49
  sequence: CaseFileEntryEntity['sequence'];
50
50
  /** Subcarpeta del índice (sin valor: en la raíz). */
51
51
  folder: CaseFileEntryEntity['folder'];
52
+ /** Documento en papel: dónde está, por qué no se digitalizó y cuántas páginas tiene. */
53
+ physicalLocation: CaseFileEntryEntity['physicalLocation'];
54
+ physicalReason: CaseFileEntryEntity['physicalReason'];
55
+ pageCount: CaseFileEntryEntity['pageCount'];
52
56
  kind: CaseFileEntryEntity['kind'];
53
57
  actuationType: CaseFileEntryEntity['actuationType'];
54
58
  title: CaseFileEntryEntity['title'];
@@ -131,6 +135,8 @@ export interface CaseFileGetByIdResponseEntity extends CaseFileGetAllResponseEnt
131
135
  uri: string | null;
132
136
  closedByFullName: CaseFileEntity['closedByFullName'];
133
137
  closingNote: CaseFileEntity['closingNote'];
138
+ /** Expediente híbrido: tiene documentos en papel que no se pudieron digitalizar. */
139
+ isHybrid: boolean;
134
140
  index: CaseFileEntryResponseEntity[];
135
141
  sharedWith: CaseFileParticipantResponseEntity[];
136
142
  actors: CaseFileActorResponseEntity[];
@@ -136,6 +136,8 @@ export interface DocumentInboxItemEntity extends DocumentDeliveryResponseEntity
136
136
 
137
137
  export interface DocumentGetByIdResponseEntity {
138
138
  id: DocumentEntity['id'];
139
+ // Quién lo emite: la entidad emisora del tipo (Educación, Salud, Juzgado) o la municipalidad.
140
+ issuerName: string;
139
141
  subject: DocumentEntity['subject'];
140
142
  keywords: DocumentEntity['keywords'];
141
143
  accessLevel: DocumentEntity['accessLevel'];
@@ -321,6 +323,8 @@ export interface DocumentVerifyResponseEntity {
321
323
  state: DocumentVerificationState;
322
324
  verificationCode: string;
323
325
  documentType: Pick<DocumentTypeSummaryEntity, 'name' | 'abbreviation'>;
326
+ // Quién lo emite: la entidad emisora del tipo (Educación, Salud, Juzgado) o la municipalidad.
327
+ issuerName: string;
324
328
  correlative: DocumentEntity['correlative'];
325
329
  correlativeYear: DocumentEntity['correlativeYear'];
326
330
  numberedAt: DocumentEntity['numberedAt'];
@@ -27,6 +27,13 @@ export interface DocumentTypeGetAllResponseEntity {
27
27
  // Sin numeración, sus documentos solo llevan fecha, código de verificación y QR.
28
28
  numbered: DocumentTypeEntity['numbered'];
29
29
  directorateCodeReference: DocumentTypeEntity['directorateCodeReference'];
30
+ // Entidad que emite sus documentos (Educación, Salud, Juzgado). `null`: la municipalidad.
31
+ issuingEntity: { id: string; name: string; shortName: string | null } | null;
32
+ // Tipo cuyo correlativo comparte: sus números salen de esa serie (y `nextCorrelative`, `correlativeYear` y
33
+ // `resetsYearly` son los de ese tipo). `null`: lleva su propio correlativo.
34
+ sharesNumberingWith: { id: string; name: string } | null;
35
+ // Tipos que toman sus números del correlativo de este.
36
+ numberingMembers: { id: string; name: string }[];
30
37
  enabled: DocumentTypeEntity['enabled'];
31
38
  // Cuántos visadores y firmantes tiene su flujo sugerido.
32
39
  flow: { visa: number; signature: number };
@@ -1,6 +1,7 @@
1
1
  export * from './documentType';
2
2
  export * from './document';
3
3
  export * from './procedure';
4
+ export * from './issuingEntity';
4
5
  export * from './caseFile';
5
6
  export * from './partsOffice';
6
7
  export * from './registerBook';
@@ -0,0 +1 @@
1
+ export * from './issuingEntity.entity';
@@ -0,0 +1,24 @@
1
+ import { IssuingEntityEntity } from '../../base/entities';
2
+
3
+ export interface IssuingEntityGetAllResponseEntity {
4
+ id: IssuingEntityEntity['id'];
5
+ name: IssuingEntityEntity['name'];
6
+ shortName: IssuingEntityEntity['shortName'];
7
+ directorateCodeReferences: IssuingEntityEntity['directorateCodeReferences'];
8
+ docDigitalEntityId: IssuingEntityEntity['docDigitalEntityId'];
9
+ enabled: IssuingEntityEntity['enabled'];
10
+ /** Cuántos tipos documentales emite. */
11
+ documentTypes: number;
12
+ }
13
+
14
+ export type IssuingEntityGetByIdResponseEntity = IssuingEntityGetAllResponseEntity;
15
+
16
+ export interface IssuingEntityCreateResponseEntity {
17
+ id: IssuingEntityEntity['id'];
18
+ ok: boolean;
19
+ }
20
+
21
+ export interface IssuingEntityUpdateResponseEntity {
22
+ id: IssuingEntityEntity['id'];
23
+ ok: boolean;
24
+ }
@@ -40,6 +40,8 @@ export interface PartsOfficeSummaryEntity {
40
40
  export interface PartsOfficeDispatchEntity extends DocumentDispatchResponseEntity {
41
41
  document: DocumentLinkEntity & { accessLevel: string };
42
42
  externalRecipients: DocumentExternalRecipientResponseEntity[];
43
+ /** A nombre de quién sale: la entidad emisora del tipo documental o la municipalidad. */
44
+ issuerName: string;
43
45
  createdAt: string;
44
46
  }
45
47
 
@@ -54,6 +56,8 @@ export interface PartsOfficeInboundEntity {
54
56
  folioDate: string | null;
55
57
  typeName: string | null;
56
58
  reserved: boolean;
59
+ /** Entidad propia a la que llegó (la municipalidad o una entidad emisora). */
60
+ recipientEntityName: string | null;
57
61
  senderEntityName: string | null;
58
62
  senderName: string | null;
59
63
  senderPosition: string | null;
@@ -26,12 +26,18 @@ export interface RegisterBookRowEntity {
26
26
  dispatch: string | null;
27
27
  /** Motivo de la anulación (del documento o del número). */
28
28
  observation: string | null;
29
+ /** Numeración compartida: tipo documental del número (`null` en un salto o si el libro es de un solo tipo). */
30
+ documentTypeName: string | null;
29
31
  }
30
32
 
31
33
  export interface RegisterBookEntity {
32
34
  kind: RegisterBookKind;
33
35
  /** «Decreto alcaldicio exento» o «Ingresos de Oficina de Partes». */
34
36
  title: string;
37
+ /** Quién lleva el libro: la entidad emisora del tipo o la municipalidad. */
38
+ issuerName: string;
39
+ /** Numeración compartida: los tipos que numeran en la serie del libro (vacío si es de un solo tipo). */
40
+ series: string[];
35
41
  year: number;
36
42
  month: number | null;
37
43
  rows: RegisterBookRowEntity[];