@muni-sanfer/types-gestor-documental 0.0.1-beta.5 → 0.0.1-beta.50

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 (242) hide show
  1. package/dist/base/entities.d.ts +996 -5
  2. package/dist/base/entities.js +235 -1
  3. package/dist/contracts/accessRequest.contract.d.ts +109 -0
  4. package/dist/contracts/accessRequest.contract.js +12 -0
  5. package/dist/contracts/archivalSeries.contract.d.ts +56 -0
  6. package/dist/contracts/archivalSeries.contract.js +11 -0
  7. package/dist/contracts/audit.contract.d.ts +32 -0
  8. package/dist/contracts/audit.contract.js +8 -0
  9. package/dist/contracts/caseFile.contract.d.ts +124 -1
  10. package/dist/contracts/caseFile.contract.js +10 -0
  11. package/dist/contracts/dataProtection.contract.d.ts +256 -0
  12. package/dist/contracts/dataProtection.contract.js +23 -0
  13. package/dist/contracts/desk.contract.d.ts +88 -0
  14. package/dist/contracts/desk.contract.js +13 -0
  15. package/dist/contracts/document.contract.d.ts +218 -3
  16. package/dist/contracts/document.contract.js +15 -0
  17. package/dist/contracts/documentTemplate.contract.d.ts +17 -0
  18. package/dist/contracts/documentTemplate.contract.js +10 -0
  19. package/dist/contracts/documentType.contract.d.ts +15 -2
  20. package/dist/contracts/draftingRequest.contract.d.ts +94 -0
  21. package/dist/contracts/draftingRequest.contract.js +11 -0
  22. package/dist/contracts/holiday.contract.d.ts +39 -0
  23. package/dist/contracts/holiday.contract.js +10 -0
  24. package/dist/contracts/index.d.ts +246 -4
  25. package/dist/contracts/index.js +69 -0
  26. package/dist/contracts/indicators.contract.d.ts +103 -0
  27. package/dist/contracts/indicators.contract.js +15 -0
  28. package/dist/contracts/internalReview.contract.d.ts +55 -0
  29. package/dist/contracts/internalReview.contract.js +9 -0
  30. package/dist/contracts/issuingEntity.contract.d.ts +52 -0
  31. package/dist/contracts/issuingEntity.contract.js +11 -0
  32. package/dist/contracts/mailIntake.contract.d.ts +61 -0
  33. package/dist/contracts/mailIntake.contract.js +15 -0
  34. package/dist/contracts/partsOffice.contract.d.ts +94 -2
  35. package/dist/contracts/partsOffice.contract.js +5 -0
  36. package/dist/contracts/procedure.contract.d.ts +14 -23
  37. package/dist/contracts/procedure.contract.js +6 -4
  38. package/dist/contracts/push.contract.d.ts +59 -0
  39. package/dist/contracts/push.contract.js +14 -0
  40. package/dist/contracts/registerBook.contract.d.ts +27 -0
  41. package/dist/contracts/registerBook.contract.js +8 -0
  42. package/dist/contracts/repositoryExport.contract.d.ts +57 -0
  43. package/dist/contracts/repositoryExport.contract.js +13 -0
  44. package/dist/contracts/retention.contract.d.ts +58 -0
  45. package/dist/contracts/retention.contract.js +11 -0
  46. package/dist/contracts/richImage.contract.d.ts +33 -0
  47. package/dist/contracts/richImage.contract.js +8 -0
  48. package/dist/contracts/scan.contract.d.ts +63 -0
  49. package/dist/contracts/scan.contract.js +12 -0
  50. package/dist/contracts/signatureBatch.contract.d.ts +109 -0
  51. package/dist/contracts/signatureBatch.contract.js +12 -0
  52. package/dist/contracts/signatureCheck.contract.d.ts +14 -0
  53. package/dist/contracts/signatureCheck.contract.js +7 -0
  54. package/dist/contracts/textSnippet.contract.d.ts +51 -0
  55. package/dist/contracts/textSnippet.contract.js +11 -0
  56. package/dist/contracts/transparency.contract.d.ts +96 -0
  57. package/dist/contracts/transparency.contract.js +12 -0
  58. package/dist/contracts/workFolder.contract.d.ts +114 -0
  59. package/dist/contracts/workFolder.contract.js +16 -0
  60. package/dist/entities/accessRequest/accessRequest.entity.d.ts +73 -0
  61. package/dist/entities/accessRequest/accessRequest.entity.js +2 -0
  62. package/dist/entities/accessRequest/index.d.ts +1 -0
  63. package/dist/entities/accessRequest/index.js +17 -0
  64. package/dist/entities/archivalSeries/archivalSeries.entity.d.ts +32 -0
  65. package/dist/entities/archivalSeries/archivalSeries.entity.js +2 -0
  66. package/dist/entities/archivalSeries/index.d.ts +1 -0
  67. package/dist/entities/archivalSeries/index.js +17 -0
  68. package/dist/entities/audit/audit.entity.d.ts +30 -0
  69. package/dist/entities/audit/audit.entity.js +2 -0
  70. package/dist/entities/audit/index.d.ts +1 -0
  71. package/dist/entities/audit/index.js +17 -0
  72. package/dist/entities/caseFile/caseFile.entity.d.ts +135 -0
  73. package/dist/entities/dataProtection/dataProtection.entity.d.ts +180 -0
  74. package/dist/entities/dataProtection/dataProtection.entity.js +2 -0
  75. package/dist/entities/dataProtection/index.d.ts +1 -0
  76. package/dist/entities/dataProtection/index.js +17 -0
  77. package/dist/entities/desk/desk.entity.d.ts +25 -0
  78. package/dist/entities/desk/desk.entity.js +2 -0
  79. package/dist/entities/desk/index.d.ts +1 -0
  80. package/dist/entities/desk/index.js +17 -0
  81. package/dist/entities/document/document.entity.d.ts +429 -1
  82. package/dist/entities/document/index.d.ts +1 -0
  83. package/dist/entities/document/index.js +1 -0
  84. package/dist/entities/document/richStyle.d.ts +212 -0
  85. package/dist/entities/document/richStyle.js +81 -0
  86. package/dist/entities/documentTemplate/documentTemplate.entity.d.ts +25 -0
  87. package/dist/entities/documentTemplate/documentTemplate.entity.js +2 -0
  88. package/dist/entities/documentTemplate/index.d.ts +1 -0
  89. package/dist/entities/documentTemplate/index.js +17 -0
  90. package/dist/entities/documentType/documentType.entity.d.ts +43 -0
  91. package/dist/entities/draftingRequest/draftingRequest.entity.d.ts +76 -0
  92. package/dist/entities/draftingRequest/draftingRequest.entity.js +2 -0
  93. package/dist/entities/draftingRequest/index.d.ts +1 -0
  94. package/dist/entities/draftingRequest/index.js +17 -0
  95. package/dist/entities/holiday/holiday.entity.d.ts +32 -0
  96. package/dist/entities/holiday/holiday.entity.js +2 -0
  97. package/dist/entities/holiday/index.d.ts +1 -0
  98. package/dist/entities/holiday/index.js +17 -0
  99. package/dist/entities/index.d.ts +22 -0
  100. package/dist/entities/index.js +22 -0
  101. package/dist/entities/indicators/index.d.ts +1 -0
  102. package/dist/entities/indicators/index.js +17 -0
  103. package/dist/entities/indicators/indicators.entity.d.ts +152 -0
  104. package/dist/entities/indicators/indicators.entity.js +2 -0
  105. package/dist/entities/internalReview/index.d.ts +1 -0
  106. package/dist/entities/internalReview/index.js +17 -0
  107. package/dist/entities/internalReview/internalReview.entity.d.ts +50 -0
  108. package/dist/entities/internalReview/internalReview.entity.js +2 -0
  109. package/dist/entities/issuingEntity/index.d.ts +1 -0
  110. package/dist/entities/issuingEntity/index.js +17 -0
  111. package/dist/entities/issuingEntity/issuingEntity.entity.d.ts +20 -0
  112. package/dist/entities/issuingEntity/issuingEntity.entity.js +2 -0
  113. package/dist/entities/mailIntake/index.d.ts +1 -0
  114. package/dist/entities/mailIntake/index.js +17 -0
  115. package/dist/entities/mailIntake/mailIntake.entity.d.ts +51 -0
  116. package/dist/entities/mailIntake/mailIntake.entity.js +2 -0
  117. package/dist/entities/partsOffice/partsOffice.entity.d.ts +39 -0
  118. package/dist/entities/procedure/procedure.entity.d.ts +27 -6
  119. package/dist/entities/push/index.d.ts +1 -0
  120. package/dist/entities/push/index.js +17 -0
  121. package/dist/entities/push/push.entity.d.ts +28 -0
  122. package/dist/entities/push/push.entity.js +2 -0
  123. package/dist/entities/registerBook/index.d.ts +1 -0
  124. package/dist/entities/registerBook/index.js +17 -0
  125. package/dist/entities/registerBook/registerBook.entity.d.ts +48 -0
  126. package/dist/entities/registerBook/registerBook.entity.js +2 -0
  127. package/dist/entities/repositoryExport/index.d.ts +1 -0
  128. package/dist/entities/repositoryExport/index.js +17 -0
  129. package/dist/entities/repositoryExport/repositoryExport.entity.d.ts +124 -0
  130. package/dist/entities/repositoryExport/repositoryExport.entity.js +2 -0
  131. package/dist/entities/retention/index.d.ts +1 -0
  132. package/dist/entities/retention/index.js +17 -0
  133. package/dist/entities/retention/retention.entity.d.ts +49 -0
  134. package/dist/entities/retention/retention.entity.js +2 -0
  135. package/dist/entities/scan/index.d.ts +1 -0
  136. package/dist/entities/scan/index.js +17 -0
  137. package/dist/entities/scan/scan.entity.d.ts +29 -0
  138. package/dist/entities/scan/scan.entity.js +2 -0
  139. package/dist/entities/signatureBatch/index.d.ts +1 -0
  140. package/dist/entities/signatureBatch/index.js +17 -0
  141. package/dist/entities/signatureBatch/signatureBatch.entity.d.ts +107 -0
  142. package/dist/entities/signatureBatch/signatureBatch.entity.js +2 -0
  143. package/dist/entities/signatureCheck/index.d.ts +1 -0
  144. package/dist/entities/signatureCheck/index.js +17 -0
  145. package/dist/entities/signatureCheck/signatureCheck.entity.d.ts +60 -0
  146. package/dist/entities/signatureCheck/signatureCheck.entity.js +2 -0
  147. package/dist/entities/textSnippet/index.d.ts +1 -0
  148. package/dist/entities/textSnippet/index.js +17 -0
  149. package/dist/entities/textSnippet/textSnippet.entity.d.ts +20 -0
  150. package/dist/entities/textSnippet/textSnippet.entity.js +2 -0
  151. package/dist/entities/transparency/index.d.ts +1 -0
  152. package/dist/entities/transparency/index.js +17 -0
  153. package/dist/entities/transparency/transparency.entity.d.ts +77 -0
  154. package/dist/entities/transparency/transparency.entity.js +2 -0
  155. package/dist/entities/workFolder/index.d.ts +1 -0
  156. package/dist/entities/workFolder/index.js +17 -0
  157. package/dist/entities/workFolder/workFolder.entity.d.ts +83 -0
  158. package/dist/entities/workFolder/workFolder.entity.js +2 -0
  159. package/package.json +1 -1
  160. package/src/base/entities.ts +1164 -5
  161. package/src/contracts/accessRequest.contract.ts +81 -0
  162. package/src/contracts/archivalSeries.contract.ts +59 -0
  163. package/src/contracts/audit.contract.ts +30 -0
  164. package/src/contracts/caseFile.contract.ts +107 -2
  165. package/src/contracts/dataProtection.contract.ts +197 -0
  166. package/src/contracts/desk.contract.ts +72 -0
  167. package/src/contracts/document.contract.ts +200 -3
  168. package/src/contracts/documentTemplate.contract.ts +17 -0
  169. package/src/contracts/documentType.contract.ts +32 -3
  170. package/src/contracts/draftingRequest.contract.ts +73 -0
  171. package/src/contracts/holiday.contract.ts +25 -0
  172. package/src/contracts/index.ts +93 -1
  173. package/src/contracts/indicators.contract.ts +80 -0
  174. package/src/contracts/internalReview.contract.ts +48 -0
  175. package/src/contracts/issuingEntity.contract.ts +55 -0
  176. package/src/contracts/mailIntake.contract.ts +49 -0
  177. package/src/contracts/partsOffice.contract.ts +81 -2
  178. package/src/contracts/procedure.contract.ts +11 -27
  179. package/src/contracts/push.contract.ts +41 -0
  180. package/src/contracts/registerBook.contract.ts +24 -0
  181. package/src/contracts/repositoryExport.contract.ts +54 -0
  182. package/src/contracts/retention.contract.ts +44 -0
  183. package/src/contracts/richImage.contract.ts +23 -0
  184. package/src/contracts/scan.contract.ts +52 -0
  185. package/src/contracts/signatureBatch.contract.ts +96 -0
  186. package/src/contracts/signatureCheck.contract.ts +11 -0
  187. package/src/contracts/textSnippet.contract.ts +53 -0
  188. package/src/contracts/transparency.contract.ts +55 -0
  189. package/src/contracts/workFolder.contract.ts +75 -0
  190. package/src/entities/accessRequest/accessRequest.entity.ts +78 -0
  191. package/src/entities/accessRequest/index.ts +1 -0
  192. package/src/entities/archivalSeries/archivalSeries.entity.ts +37 -0
  193. package/src/entities/archivalSeries/index.ts +1 -0
  194. package/src/entities/audit/audit.entity.ts +41 -0
  195. package/src/entities/audit/index.ts +1 -0
  196. package/src/entities/caseFile/caseFile.entity.ts +132 -0
  197. package/src/entities/dataProtection/dataProtection.entity.ts +191 -0
  198. package/src/entities/dataProtection/index.ts +1 -0
  199. package/src/entities/desk/desk.entity.ts +28 -0
  200. package/src/entities/desk/index.ts +1 -0
  201. package/src/entities/document/document.entity.ts +413 -1
  202. package/src/entities/document/index.ts +1 -0
  203. package/src/entities/document/richStyle.ts +193 -0
  204. package/src/entities/documentTemplate/documentTemplate.entity.ts +27 -0
  205. package/src/entities/documentTemplate/index.ts +1 -0
  206. package/src/entities/documentType/documentType.entity.ts +45 -0
  207. package/src/entities/draftingRequest/draftingRequest.entity.ts +78 -0
  208. package/src/entities/draftingRequest/index.ts +1 -0
  209. package/src/entities/holiday/holiday.entity.ts +36 -0
  210. package/src/entities/holiday/index.ts +1 -0
  211. package/src/entities/index.ts +22 -0
  212. package/src/entities/indicators/index.ts +1 -0
  213. package/src/entities/indicators/indicators.entity.ts +157 -0
  214. package/src/entities/internalReview/index.ts +1 -0
  215. package/src/entities/internalReview/internalReview.entity.ts +50 -0
  216. package/src/entities/issuingEntity/index.ts +1 -0
  217. package/src/entities/issuingEntity/issuingEntity.entity.ts +24 -0
  218. package/src/entities/mailIntake/index.ts +1 -0
  219. package/src/entities/mailIntake/mailIntake.entity.ts +55 -0
  220. package/src/entities/partsOffice/partsOffice.entity.ts +35 -0
  221. package/src/entities/procedure/procedure.entity.ts +27 -6
  222. package/src/entities/push/index.ts +1 -0
  223. package/src/entities/push/push.entity.ts +31 -0
  224. package/src/entities/registerBook/index.ts +1 -0
  225. package/src/entities/registerBook/registerBook.entity.ts +52 -0
  226. package/src/entities/repositoryExport/index.ts +1 -0
  227. package/src/entities/repositoryExport/repositoryExport.entity.ts +86 -0
  228. package/src/entities/retention/index.ts +1 -0
  229. package/src/entities/retention/retention.entity.ts +53 -0
  230. package/src/entities/scan/index.ts +1 -0
  231. package/src/entities/scan/scan.entity.ts +32 -0
  232. package/src/entities/signatureBatch/index.ts +1 -0
  233. package/src/entities/signatureBatch/signatureBatch.entity.ts +110 -0
  234. package/src/entities/signatureCheck/index.ts +1 -0
  235. package/src/entities/signatureCheck/signatureCheck.entity.ts +63 -0
  236. package/src/entities/textSnippet/index.ts +1 -0
  237. package/src/entities/textSnippet/textSnippet.entity.ts +24 -0
  238. package/src/entities/transparency/index.ts +1 -0
  239. package/src/entities/transparency/transparency.entity.ts +78 -0
  240. package/src/entities/workFolder/index.ts +1 -0
  241. package/src/entities/workFolder/workFolder.entity.ts +84 -0
  242. package/tsconfig.json +1 -3
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Formato del editor del gestor que comparten el navegador y el microservicio: tipografías, colores, tamaños de hoja y
3
+ * márgenes. Todo lo que el PDF muestra sale de aquí, así que el editor y el documento oficial se ven igual.
4
+ */
5
+
6
+ /**
7
+ * Tipografías incrustadas en el PDF (PDF/A exige fuentes incrustadas). Liberation Sans, Liberation Serif y Carlito
8
+ * miden igual que Arial, Times New Roman y Calibri: lo que se pegó desde Word ocupa lo mismo.
9
+ */
10
+ export const RICH_FONTS = {
11
+ Roboto: 'Roboto',
12
+ LiberationSans: 'Liberation Sans (Arial)',
13
+ LiberationSerif: 'Liberation Serif (Times New Roman)',
14
+ Carlito: 'Carlito (Calibri)',
15
+ } as const;
16
+
17
+ export type RichFont = keyof typeof RICH_FONTS;
18
+
19
+ /** Tamaños de letra que se ofrecen, en puntos. */
20
+ export const RICH_FONT_SIZES = [8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 24] as const;
21
+
22
+ /** Colores de letra: una paleta acotada, sobria, para documentos oficiales. */
23
+ export const RICH_COLORS = {
24
+ black: { label: 'Negro', hex: '#111827' },
25
+ gray: { label: 'Gris', hex: '#4B5563' },
26
+ blue: { label: 'Azul', hex: '#1E40AF' },
27
+ red: { label: 'Rojo', hex: '#B91C1C' },
28
+ green: { label: 'Verde', hex: '#166534' },
29
+ brown: { label: 'Café', hex: '#78350F' },
30
+ } as const;
31
+
32
+ export type RichColor = keyof typeof RICH_COLORS;
33
+
34
+ /** Resaltado del texto. */
35
+ export const RICH_HIGHLIGHTS = {
36
+ yellow: { label: 'Amarillo', hex: '#FEF08A' },
37
+ green: { label: 'Verde', hex: '#BBF7D0' },
38
+ blue: { label: 'Celeste', hex: '#BFDBFE' },
39
+ pink: { label: 'Rosado', hex: '#FBCFE8' },
40
+ gray: { label: 'Gris', hex: '#E5E7EB' },
41
+ } as const;
42
+
43
+ export type RichHighlight = keyof typeof RICH_HIGHLIGHTS;
44
+
45
+ /** Formato propio de un trozo de texto, además de sus marcas. Sin valor, el de la página. */
46
+ export interface RichTextStyle {
47
+ font?: RichFont;
48
+ size?: number;
49
+ color?: RichColor;
50
+ highlight?: RichHighlight;
51
+ }
52
+
53
+ /** Espaciado y sangría de un párrafo, título o punto de lista, en puntos (el interlineado, en veces la letra). */
54
+ export interface RichSpacing {
55
+ before?: number;
56
+ after?: number;
57
+ lineHeight?: number;
58
+ /** Sangría de la primera línea. */
59
+ firstLine?: number;
60
+ /** Sangría de todo el párrafo, desde el margen izquierdo. */
61
+ left?: number;
62
+ }
63
+
64
+ /** Límites del espaciado, en puntos. */
65
+ export const RICH_SPACING_LIMITS = { maxSpace: 72, maxIndent: 216, minLineHeight: 0.8, maxLineHeight: 3 } as const;
66
+
67
+ /** Tamaños de hoja, en puntos. Oficio es el chileno: 216 x 330 mm. */
68
+ export const RICH_PAGE_SIZES = {
69
+ letter: { label: 'Carta (216 x 279 mm)', width: 612, height: 792 },
70
+ oficio: { label: 'Oficio (216 x 330 mm)', width: 612, height: 936 },
71
+ } as const;
72
+
73
+ export type RichPageSize = keyof typeof RICH_PAGE_SIZES;
74
+
75
+ export interface RichMargins {
76
+ top: number;
77
+ right: number;
78
+ bottom: number;
79
+ left: number;
80
+ }
81
+
82
+ /**
83
+ * Márgenes mínimos, en puntos: arriba van el membrete y el número con la fecha que estampa el sistema; abajo, la
84
+ * franja del QR en cada página; a los costados, los sellos. Con menos, lo estampado taparía el texto.
85
+ */
86
+ export const RICH_MIN_MARGINS: RichMargins = { top: 64, right: 42, bottom: 64, left: 42 };
87
+
88
+ /** Márgenes máximos, en puntos (unos 5 cm). */
89
+ export const RICH_MAX_MARGIN = 144;
90
+
91
+ /** Página de un documento: tamaño, márgenes y letra base. La define la plantilla; quien redacta no la cambia. */
92
+ export interface RichPage {
93
+ size: RichPageSize;
94
+ margins: RichMargins;
95
+ font: RichFont;
96
+ fontSize: number;
97
+ lineHeight: number;
98
+ }
99
+
100
+ /** Página de siempre: Carta, con el espacio del membrete y los sellos, en Roboto 11. */
101
+ export const RICH_DEFAULT_PAGE: RichPage = {
102
+ size: 'letter',
103
+ margins: { top: 104, right: 64, bottom: 76, left: 72 },
104
+ font: 'Roboto',
105
+ fontSize: 11,
106
+ lineHeight: 1.2,
107
+ };
108
+
109
+ /**
110
+ * Una imagen del encabezado (logo, escudo, sello) en el diseño libre: imagen registrada en el gestor, con su lugar y su
111
+ * tamaño en puntos desde la esquina superior izquierda de la hoja. Cabe en el margen superior.
112
+ */
113
+ export interface RichLetterheadImage {
114
+ imageId: string;
115
+ x: number;
116
+ y: number;
117
+ width: number;
118
+ height: number;
119
+ }
120
+
121
+ export type RichLetterheadAlign = 'left' | 'center' | 'right';
122
+
123
+ /** El texto del membrete (nombre de la municipalidad, unidad y líneas propias) en el diseño libre. */
124
+ export interface RichLetterheadText {
125
+ x: number;
126
+ y: number;
127
+ width: number;
128
+ align: RichLetterheadAlign;
129
+ /** Tamaño del nombre de la municipalidad, en puntos (sin valor, 10). */
130
+ organSize?: number;
131
+ /** Tamaño de la unidad y de las líneas propias, en puntos (sin valor, 8). */
132
+ lineSize?: number;
133
+ }
134
+
135
+ /**
136
+ * Membrete de la plantilla, en el margen superior de cada página: un logo o escudo (opcional) y el nombre de la
137
+ * municipalidad y de la unidad que emite. Va a la izquierda: a la derecha el sistema estampa el número y la fecha.
138
+ *
139
+ * Con `text`, el diseño es libre: las imágenes de `images` y el texto van donde se ubicaron (y `imageId` e
140
+ * `imageHeight` no se usan). Sin `text`, el de siempre: el logo de `imageId` y, a su lado, el texto.
141
+ */
142
+ export interface RichLetterhead {
143
+ /** Imagen registrada en el gestor (`RichImage`), no un archivo de Drive. */
144
+ imageId?: string | null;
145
+ /** Alto del logo, en puntos. */
146
+ imageHeight?: number;
147
+ showOrganName: boolean;
148
+ showUnitName: boolean;
149
+ /** Líneas propias bajo el nombre, como la dirección o el teléfono. */
150
+ lines?: string[];
151
+ /** Diseño libre: las imágenes del encabezado, donde se ubicaron. */
152
+ images?: RichLetterheadImage[];
153
+ /** Diseño libre: dónde va el texto y con qué tamaño. */
154
+ text?: RichLetterheadText;
155
+ /** Línea divisoria bajo el encabezado, de margen a margen. */
156
+ rule?: boolean;
157
+ }
158
+
159
+ /** Límites del diseño libre del encabezado. */
160
+ export const RICH_LETTERHEAD_LIMITS = {
161
+ maxImages: 4,
162
+ /** Lado mínimo de una imagen, en puntos. */
163
+ minImageSize: 12,
164
+ /** Ancho mínimo del texto, en puntos. */
165
+ minTextWidth: 60,
166
+ organSizes: [8, 9, 10, 11, 12, 13, 14, 16],
167
+ lineSizes: [6, 7, 8, 9, 10, 11, 12],
168
+ } as const;
169
+
170
+ /**
171
+ * Lo que ocupa en la primera página el número y la fecha que estampa el sistema, arriba a la derecha: el encabezado no
172
+ * debe taparlo. En puntos; `right` es la distancia al borde derecho.
173
+ */
174
+ export const RICH_NUMBER_ZONE = { right: 36, top: 18, height: 30, width: 230 } as const;
175
+
176
+ export const RICH_DEFAULT_LETTERHEAD: RichLetterhead = { imageId: null, showOrganName: true, showUnitName: true };
177
+
178
+ /** Límites de una imagen: formatos, peso y tamaño en el texto. */
179
+ export const RICH_IMAGE_LIMITS = {
180
+ types: ['image/png', 'image/jpeg'],
181
+ maxBytes: 2_000_000,
182
+ minWidth: 24,
183
+ maxLetterheadHeight: 56,
184
+ } as const;
185
+
186
+ /** Imagen subida al gestor para el editor: se usa por su id; el archivo está en Drive. */
187
+ export interface RichImageResponseEntity {
188
+ id: string;
189
+ name: string;
190
+ mimeType: string;
191
+ width: number;
192
+ height: number;
193
+ }
@@ -0,0 +1,27 @@
1
+ import { type DocumentTemplateEntity } from '../../base/entities';
2
+ import { type RichBlock, type RichField } from '../document/document.entity';
3
+ import { type RichLetterhead, type RichPage } from '../document/richStyle';
4
+
5
+ /**
6
+ * Contenido de la plantilla de un tipo documental: los bloques del editor (con sus partes fijas) y los campos que
7
+ * completa quien redacta (en la plantilla, sin valor).
8
+ */
9
+ export interface DocumentTemplateContent {
10
+ blocks: RichBlock[];
11
+ fields: RichField[];
12
+ /** Tamaño de hoja, márgenes y letra base. Sin valor, la página de siempre (`RICH_DEFAULT_PAGE`). */
13
+ page?: RichPage;
14
+ /** Membrete con logo. Sin valor, el nombre de la municipalidad y de la unidad. */
15
+ letterhead?: RichLetterhead;
16
+ }
17
+
18
+ /** La plantilla de un tipo documental, que se aplica al redactar uno de sus documentos: lista para usar. */
19
+ export interface DocumentTemplateAvailableResponseEntity {
20
+ id: DocumentTemplateEntity['id'];
21
+ name: DocumentTemplateEntity['name'];
22
+ description: string | null;
23
+ version: DocumentTemplateEntity['version'];
24
+ content: DocumentTemplateContent;
25
+ /** Es la plantilla del tipo documental pedido: se aplica sola al redactar. */
26
+ ownedByType: boolean;
27
+ }
@@ -0,0 +1 @@
1
+ export * from './documentTemplate.entity';
@@ -1,4 +1,5 @@
1
1
  import { DocumentTypeEntity, DocumentTypeFlowStepEntity } from '../../base/entities';
2
+ import { type DocumentTemplateContent } from '../documentTemplate/documentTemplate.entity';
2
3
 
3
4
  /** Paso del flujo sugerido de un tipo documental: quién visa o firma, en su orden. */
4
5
  export interface DocumentTypeFlowStepResponseEntity {
@@ -11,6 +12,8 @@ export interface DocumentTypeFlowStepResponseEntity {
11
12
  // Nombre del funcionario o de la dirección, como estaba al definir el flujo.
12
13
  name: DocumentTypeFlowStepEntity['name'];
13
14
  position: DocumentTypeFlowStepEntity['position'];
15
+ // Visa a la vez con el paso anterior (visación en paralelo).
16
+ withPrevious: DocumentTypeFlowStepEntity['withPrevious'];
14
17
  }
15
18
 
16
19
  export interface DocumentTypeGetAllResponseEntity {
@@ -22,10 +25,48 @@ export interface DocumentTypeGetAllResponseEntity {
22
25
  nextCorrelative: DocumentTypeEntity['nextCorrelative'];
23
26
  correlativeYear: DocumentTypeEntity['correlativeYear'];
24
27
  resetsYearly: DocumentTypeEntity['resetsYearly'];
28
+ // Sin numeración, sus documentos solo llevan fecha, código de verificación y QR.
29
+ numbered: DocumentTypeEntity['numbered'];
30
+ /** Transparencia Activa: sus documentos se publican cada mes, en esta sección del Portal. */
31
+ activeTransparency: DocumentTypeEntity['activeTransparency'];
32
+ transparencySection: DocumentTypeEntity['transparencySection'];
25
33
  directorateCodeReference: DocumentTypeEntity['directorateCodeReference'];
34
+ // Dirección cuya jefatura revisa los borradores antes de enviarlos a tramitación (sin valor: no hay revisión).
35
+ draftReviewDirectorateCode: DocumentTypeEntity['draftReviewDirectorateCode'];
36
+ draftReviewDirectorateName: DocumentTypeEntity['draftReviewDirectorateName'];
37
+ // Serie documental del Cuadro de Clasificación a la que van sus documentos (MGDDE1_2).
38
+ archivalSeries: { id: string; code: string; name: string } | null;
39
+ // Entidad que emite sus documentos (Educación, Salud, Juzgado). `null`: la municipalidad.
40
+ issuingEntity: { id: string; name: string; shortName: string | null } | null;
41
+ // Tipo cuyo correlativo comparte: sus números salen de esa serie (y `nextCorrelative`, `correlativeYear` y
42
+ // `resetsYearly` son los de ese tipo). `null`: lleva su propio correlativo.
43
+ sharesNumberingWith: { id: string; name: string } | null;
44
+ // Tipos que toman sus números del correlativo de este.
45
+ numberingMembers: { id: string; name: string }[];
26
46
  enabled: DocumentTypeEntity['enabled'];
47
+ // Versión vigente de su configuración: la toman los documentos nuevos y los borradores al guardarse.
48
+ version: DocumentTypeEntity['version'];
27
49
  // Cuántos visadores y firmantes tiene su flujo sugerido.
28
50
  flow: { visa: number; signature: number };
51
+ // Tiene plantilla propia: se aplica sola al redactar.
52
+ hasTemplate: boolean;
53
+ }
54
+
55
+ /** Plantilla propia de un tipo documental: la versión vigente de su contenido. */
56
+ export interface DocumentTypeTemplateResponseEntity {
57
+ id: string;
58
+ version: number;
59
+ content: DocumentTemplateContent;
60
+ }
61
+
62
+ /** Una versión de la configuración del tipo: los documentos enviados a tramitación con ella la conservan. */
63
+ export interface DocumentTypeVersionResponseEntity {
64
+ version: number;
65
+ createdAt: string;
66
+ // Quién guardó el cambio (sin valor en la primera versión de un tipo anterior a las versiones).
67
+ createdByFullName: string | null;
68
+ // Documentos en tramitación (o devueltos para corregir) que siguen con esta versión.
69
+ documentsInProcess: number;
29
70
  }
30
71
 
31
72
  export interface DocumentTypeGetByIdResponseEntity extends DocumentTypeGetAllResponseEntity {
@@ -34,6 +75,10 @@ export interface DocumentTypeGetByIdResponseEntity extends DocumentTypeGetAllRes
34
75
  lastCorrelative: number | null;
35
76
  // Flujo sugerido: primero los visadores y después los firmantes, cada grupo en su orden.
36
77
  flowSteps: DocumentTypeFlowStepResponseEntity[];
78
+ // Plantilla propia del tipo (sin valor: no la tiene).
79
+ template: DocumentTypeTemplateResponseEntity | null;
80
+ // Versiones, de la más nueva a la más antigua.
81
+ versions: DocumentTypeVersionResponseEntity[];
37
82
  }
38
83
 
39
84
  export interface DocumentTypeCreateResponseEntity {
@@ -0,0 +1,78 @@
1
+ import { type DocumentStatus, type DraftingRequestEventAction, type DraftingRequestStatus } from '../../base/entities';
2
+
3
+ /**
4
+ * Cómo va la solicitud, para mostrarla: sin tomar, tomada (aún sin documento), en redacción (con documento en curso),
5
+ * atendida (su documento quedó finalizado), devuelta o retirada.
6
+ */
7
+ export type DraftingRequestState = 'Pending' | 'Taken' | 'Drafting' | 'Completed' | 'Declined' | 'Cancelled';
8
+
9
+ /** Documento que atiende la solicitud. */
10
+ export interface DraftingRequestDocumentEntity {
11
+ id: string;
12
+ status: DocumentStatus;
13
+ /** «D.E. N° 590/2026», o `null` mientras no tiene número. */
14
+ folio: string | null;
15
+ }
16
+
17
+ export interface DraftingRequestListItemEntity {
18
+ id: string;
19
+ /** «N° 3/2026». */
20
+ label: string;
21
+ subject: string;
22
+ status: DraftingRequestStatus;
23
+ state: DraftingRequestState;
24
+ requesterEmployeeId: string;
25
+ requesterFullName: string;
26
+ requesterAreaName: string | null;
27
+ targetDirectorateCode: number;
28
+ targetDirectorateName: string;
29
+ takenByEmployeeId: string | null;
30
+ takenByFullName: string | null;
31
+ documentType: { id: string; name: string } | null;
32
+ dueAt: string | null;
33
+ createdAt: string;
34
+ document: DraftingRequestDocumentEntity | null;
35
+ }
36
+
37
+ export interface DraftingRequestAttachmentResponseEntity {
38
+ id: string;
39
+ name: string;
40
+ }
41
+
42
+ export interface DraftingRequestEventResponseEntity {
43
+ id: string;
44
+ action: DraftingRequestEventAction;
45
+ note: string | null;
46
+ employeeFullName: string;
47
+ createdAt: string;
48
+ }
49
+
50
+ export interface DraftingRequestDetailEntity extends DraftingRequestListItemEntity {
51
+ details: string;
52
+ takenAt: string | null;
53
+ closedAt: string | null;
54
+ closingNote: string | null;
55
+ /** Funcionarios de la dirección a los que les llegó. */
56
+ recipientCount: number;
57
+ attachments: DraftingRequestAttachmentResponseEntity[];
58
+ events: DraftingRequestEventResponseEntity[];
59
+ /** Qué puede hacer con ella quien la consulta. */
60
+ capabilities: {
61
+ canTake: boolean;
62
+ canRelease: boolean;
63
+ canDecline: boolean;
64
+ canCancel: boolean;
65
+ /** La tomó y aún no tiene documento (o lo descartó): puede redactarlo. */
66
+ canDraft: boolean;
67
+ };
68
+ /** Funcionarios a los que avisar de la operación que se acaba de hacer (lo usa el gateway). */
69
+ notify?: { employeeIds: string[] };
70
+ }
71
+
72
+ /** Solicitud enlazada a un documento, como se muestra en su detalle. */
73
+ export interface DocumentDraftingRequestEntity {
74
+ id: string;
75
+ label: string;
76
+ requesterFullName: string;
77
+ requesterAreaName: string | null;
78
+ }
@@ -0,0 +1 @@
1
+ export * from './draftingRequest.entity';
@@ -0,0 +1,36 @@
1
+ import { type HolidaySource } from '../../base/entities';
2
+
3
+ /** Feriado: el día («AAAA-MM-DD») no cuenta como hábil en los plazos. */
4
+ export interface HolidayResponseEntity {
5
+ id: string;
6
+ date: string;
7
+ name: string;
8
+ /** Cargado a mano o traído de la API pública de feriados. */
9
+ source: HolidaySource;
10
+ /** Como lo informa la API. Ej: «Civil e Irrenunciable». */
11
+ kind: string | null;
12
+ /** Uno de la API que se quitó a mano: no cuenta, y la próxima actualización no lo vuelve a agregar. */
13
+ excluded: boolean;
14
+ }
15
+
16
+ /** Feriados de un año y cuándo se trajeron de la API por última vez (`null` si nunca). */
17
+ export interface HolidayListResponseEntity {
18
+ holidays: HolidayResponseEntity[];
19
+ syncedAt: string | null;
20
+ }
21
+
22
+ export interface HolidayRemoveResponseEntity {
23
+ id: string;
24
+ ok: boolean;
25
+ }
26
+
27
+ /** Resultado de traer de la API los feriados de un año: los agregados, actualizados y quitados por la API. */
28
+ export interface HolidaySyncResponseEntity {
29
+ year: number;
30
+ added: number;
31
+ updated: number;
32
+ removed: number;
33
+ /** Cuántos informó la API para ese año. */
34
+ total: number;
35
+ syncedAt: string;
36
+ }
@@ -0,0 +1 @@
1
+ export * from './holiday.entity';
@@ -1,5 +1,27 @@
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';
7
+ export * from './registerBook';
8
+ export * from './signatureBatch';
9
+ export * from './workFolder';
10
+ export * from './scan';
11
+ export * from './archivalSeries';
12
+ export * from './textSnippet';
13
+ export * from './holiday';
14
+ export * from './indicators';
15
+ export * from './audit';
16
+ export * from './signatureCheck';
17
+ export * from './repositoryExport';
18
+ export * from './retention';
19
+ export * from './accessRequest';
20
+ export * from './transparency';
21
+ export * from './dataProtection';
22
+ export * from './desk';
23
+ export * from './mailIntake';
24
+ export * from './push';
25
+ export * from './documentTemplate';
26
+ export * from './draftingRequest';
27
+ export * from './internalReview';
@@ -0,0 +1 @@
1
+ export * from './indicators.entity';
@@ -0,0 +1,157 @@
1
+ import { type DocumentParticipantRole, type QualityMetricKey, type ServiceOutageKind } from '../../base/entities';
2
+
3
+ /** Tiempos de tramitación, desde el primer envío a tramitación hasta la última firma. En días corridos y hábiles. */
4
+ export interface ProcessingTimeEntity {
5
+ count: number;
6
+ averageDays: number | null;
7
+ medianDays: number | null;
8
+ p90Days: number | null;
9
+ averageBusinessDays: number | null;
10
+ }
11
+
12
+ export interface IndicatorsByTypeEntity {
13
+ documentTypeId: string;
14
+ name: string;
15
+ submitted: number;
16
+ finished: number;
17
+ rejections: number;
18
+ averageDays: number | null;
19
+ averageBusinessDays: number | null;
20
+ }
21
+
22
+ /** Unidad emisora: una dirección (código de caschile) o un departamento; el nombre lo pone el front. */
23
+ export interface IndicatorsByUnitEntity {
24
+ directorateCode: number | null;
25
+ departmentId: string | null;
26
+ submitted: number;
27
+ finished: number;
28
+ averageDays: number | null;
29
+ averageBusinessDays: number | null;
30
+ }
31
+
32
+ /** Quién demora más en su turno de visación o firma, y cuánto tiene pendiente hoy. */
33
+ export interface IndicatorsBottleneckEntity {
34
+ employeeId: string;
35
+ fullName: string;
36
+ role: DocumentParticipantRole;
37
+ resolved: number;
38
+ averageDays: number | null;
39
+ pending: number;
40
+ oldestPendingDays: number | null;
41
+ }
42
+
43
+ export interface ManagementIndicatorsEntity {
44
+ /** Período consultado, días de Chile «AAAA-MM-DD». */
45
+ from: string;
46
+ to: string;
47
+ generatedAt: string;
48
+ filters: { documentTypeId: string | null; directorateCode: number | null };
49
+ volume: {
50
+ /** Enviados a tramitación por primera vez en el período. */
51
+ submitted: number;
52
+ finished: number;
53
+ /** Rechazos de visadores y firmantes (un documento puede tener varios). */
54
+ rejections: number;
55
+ annulled: number;
56
+ discarded: number;
57
+ /** En tramitación hoy, sin importar el período. */
58
+ inProcess: number;
59
+ };
60
+ processing: ProcessingTimeEntity;
61
+ byType: IndicatorsByTypeEntity[];
62
+ byUnit: IndicatorsByUnitEntity[];
63
+ /** Por mes de Chile «AAAA-MM». */
64
+ monthly: { month: string; submitted: number; finished: number }[];
65
+ bottlenecks: IndicatorsBottleneckEntity[];
66
+ /** Plazos de lo recibido y derivado que vencían en el período. */
67
+ deadlines: {
68
+ withDeadline: number;
69
+ onTime: number;
70
+ late: number;
71
+ /** Vencidos sin atender. */
72
+ overdue: number;
73
+ /** Sin atender, todavía en plazo. */
74
+ pending: number;
75
+ /** A tiempo sobre los ya resueltos o vencidos, en %. */
76
+ onTimeRate: number | null;
77
+ };
78
+ partsOffice: {
79
+ received: number;
80
+ registered: number;
81
+ returned: number;
82
+ /** Días desde que llegó por DocDigital hasta que Partes lo ingresó. */
83
+ averageIntakeDays: number | null;
84
+ dispatched: number;
85
+ dispatchReturned: number;
86
+ };
87
+ }
88
+
89
+ export type QualityMetricUnit = 'Percent' | 'Ratio' | 'Milliseconds';
90
+ export type QualityMetricDirection = 'AtLeast' | 'AtMost';
91
+
92
+ /** Una métrica del Plan de Mejora Continua, con su valor en el período y su umbral. */
93
+ export interface QualityMetricEntity {
94
+ key: QualityMetricKey;
95
+ /** Subcaracterística de la ISO/IEC 25010 que mide. */
96
+ subcharacteristic: string;
97
+ model: 'Product' | 'InUse';
98
+ name: string;
99
+ description: string;
100
+ /** La mide el sistema o la declara quien administra la calidad, con su respaldo. */
101
+ source: 'Measured' | 'Declared';
102
+ value: number | null;
103
+ unit: QualityMetricUnit;
104
+ threshold: number;
105
+ direction: QualityMetricDirection;
106
+ /** Cumple el umbral. `null` sin valor. */
107
+ meets: boolean | null;
108
+ /** Con qué se calculó: cantidades del período. */
109
+ detail: string | null;
110
+ declaredNote: string | null;
111
+ declaredAt: string | null;
112
+ declaredByFullName: string | null;
113
+ }
114
+
115
+ export interface ServiceOutageResponseEntity {
116
+ id: string;
117
+ kind: ServiceOutageKind;
118
+ startedAt: string;
119
+ endedAt: string | null;
120
+ /** Duración en minutos; si sigue caído, hasta ahora. */
121
+ minutes: number;
122
+ cause: string;
123
+ affectedServices: string | null;
124
+ createdByFullName: string;
125
+ updatedByFullName: string | null;
126
+ createdAt: string;
127
+ }
128
+
129
+ export interface QualityReportEntity {
130
+ from: string;
131
+ to: string;
132
+ generatedAt: string;
133
+ metrics: QualityMetricEntity[];
134
+ /** Caídas que tocan el período. */
135
+ outages: ServiceOutageResponseEntity[];
136
+ }
137
+
138
+ export interface QualityMetricSettingResponseEntity {
139
+ key: QualityMetricKey;
140
+ threshold: number;
141
+ declaredValue: number | null;
142
+ declaredNote: string | null;
143
+ declaredAt: string | null;
144
+ declaredByFullName: string | null;
145
+ }
146
+
147
+ export interface ServiceOutageRemoveResponseEntity {
148
+ id: string;
149
+ ok: boolean;
150
+ }
151
+
152
+ /** Un archivo generado (planilla o certificado), en base64. */
153
+ export interface IndicatorsFileEntity {
154
+ fileName: string;
155
+ contentType: string;
156
+ contentBase64: string;
157
+ }
@@ -0,0 +1 @@
1
+ export * from './internalReview.entity';
@@ -0,0 +1,50 @@
1
+ import { type DocumentStatus } from '../../base/entities';
2
+
3
+ /** Qué espera de la jefatura un documento de la cola de revisión. */
4
+ export type InternalReviewTurn = 'Visa' | 'Signature' | 'DraftReview';
5
+
6
+ /** Documento que espera a la jefatura para la que revisa la funcionaria. */
7
+ export interface InternalReviewQueueItemEntity {
8
+ documentId: string;
9
+ subject: string;
10
+ documentTypeName: string;
11
+ /** «D.E. N° 590/2026», o `null` mientras no tiene número. */
12
+ folio: string | null;
13
+ status: DocumentStatus;
14
+ createdByFullName: string;
15
+ directorateCode: number;
16
+ directorateName: string;
17
+ /** Quién de la jefatura tiene el turno (titular o subrogante). */
18
+ headFullName: string;
19
+ turn: InternalReviewTurn;
20
+ /** Ya le toca a la jefatura (si no, espera turnos anteriores). */
21
+ isCurrent: boolean;
22
+ /** Observaciones internas ya dejadas para esta jefatura. */
23
+ notes: number;
24
+ updatedAt: string;
25
+ }
26
+
27
+ /** Observación interna para la jefatura de una dirección. */
28
+ export interface InternalNoteResponseEntity {
29
+ id: string;
30
+ directorateCode: number;
31
+ directorateName: string;
32
+ authorFullName: string;
33
+ /** `Reviewer`: la revisora; `Head`: la jefatura que responde. */
34
+ authorRole: 'Reviewer' | 'Head';
35
+ versionNumber: number;
36
+ text: string;
37
+ createdAt: string;
38
+ }
39
+
40
+ export interface DocumentInternalNotesResponseEntity {
41
+ notes: InternalNoteResponseEntity[];
42
+ /** Direcciones para las que quien consulta puede dejar una observación en este documento. */
43
+ canAddFor: { directorateCode: number; directorateName: string }[];
44
+ }
45
+
46
+ export interface DocumentInternalNoteResponseEntity {
47
+ note: InternalNoteResponseEntity;
48
+ /** A quién avisar (lo usa el gateway): la jefatura, si escribió la revisora; las revisoras, si respondió la jefatura. */
49
+ notify: { employeeIds: string[] };
50
+ }
@@ -0,0 +1 @@
1
+ export * from './issuingEntity.entity';