@sigmatech/pergamo 0.1.56 → 0.1.58
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/entities/index.d.ts +3 -0
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/index.js +4 -1
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/person/person-sb2.helper.d.ts +52 -0
- package/dist/entities/person/person-sb2.helper.d.ts.map +1 -0
- package/dist/entities/person/person-sb2.helper.js +240 -0
- package/dist/entities/person/person-sb2.helper.js.map +1 -0
- package/dist/entities/person/person-sb2.types.d.ts +140 -0
- package/dist/entities/person/person-sb2.types.d.ts.map +1 -0
- package/dist/entities/person/person-sb2.types.js +7 -0
- package/dist/entities/person/person-sb2.types.js.map +1 -0
- package/dist/entities/person/person.entity.d.ts +11 -1
- package/dist/entities/person/person.entity.d.ts.map +1 -1
- package/dist/entities/person/person.entity.js.map +1 -1
- package/dist/entities/recim/recim-detail-view.entity.d.ts +46 -0
- package/dist/entities/recim/recim-detail-view.entity.d.ts.map +1 -0
- package/dist/entities/recim/recim-detail-view.entity.js +77 -0
- package/dist/entities/recim/recim-detail-view.entity.js.map +1 -0
- package/dist/entities/recim/recim-entry.entity.d.ts +1 -1
- package/dist/entities/recim/recim-entry.entity.js +1 -1
- package/dist/entities/recim/recim-entry.entity.js.map +1 -1
- package/dist/migrations/1738001000000-AddRecimPerformanceIndexes.d.ts +14 -0
- package/dist/migrations/1738001000000-AddRecimPerformanceIndexes.d.ts.map +1 -0
- package/dist/migrations/1738001000000-AddRecimPerformanceIndexes.js +39 -0
- package/dist/migrations/1738001000000-AddRecimPerformanceIndexes.js.map +1 -0
- package/package.json +9 -8
package/dist/entities/index.d.ts
CHANGED
|
@@ -23,10 +23,13 @@ export * from "./person/person-characterization.entity";
|
|
|
23
23
|
export * from "./person/characterization-annex.entity";
|
|
24
24
|
export * from "./person/characterization-family.entity";
|
|
25
25
|
export * from "./person/characterization-linkage.entity";
|
|
26
|
+
export * from "./person/person-sb2.types";
|
|
27
|
+
export * from "./person/person-sb2.helper";
|
|
26
28
|
export * from "./vehicle";
|
|
27
29
|
export * from "./accreditation";
|
|
28
30
|
export * from "./recim/recim-entry.entity";
|
|
29
31
|
export * from "./recim/recim-fingerprint.entity";
|
|
32
|
+
export * from "./recim/recim-detail-view.entity";
|
|
30
33
|
export * from "./telefonia/telefonia.entity";
|
|
31
34
|
export * from "./telefonia/historial-ubicacion.entity";
|
|
32
35
|
export * from "./telefonia/bts.entity";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AAGjE,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AAGjE,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AACzD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAG3C,cAAc,WAAW,CAAC;AAG1B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AAGjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,0CAA0C,CAAC;AAGzD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AAGvD,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,sBAAsB,CAAC;AAGrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAG1C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6BAA6B,CAAC;AAG5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,qCAAqC,CAAC;AAGpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAGlD,cAAc,yCAAyC,CAAC;AAGxD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,+CAA+C,CAAC;AAG9D,cAAc,oCAAoC,CAAC;AACnD,cAAc,2CAA2C,CAAC;AAG1D,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AAGvD,cAAc,eAAe,CAAC;AAG9B,cAAc,QAAQ,CAAC;AAGvB,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mDAAmD,CAAC;AAClE,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AAGvC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAGlD,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC"}
|
package/dist/entities/index.js
CHANGED
|
@@ -42,13 +42,16 @@ __exportStar(require("./person/person-characterization.entity"), exports);
|
|
|
42
42
|
__exportStar(require("./person/characterization-annex.entity"), exports);
|
|
43
43
|
__exportStar(require("./person/characterization-family.entity"), exports);
|
|
44
44
|
__exportStar(require("./person/characterization-linkage.entity"), exports);
|
|
45
|
+
__exportStar(require("./person/person-sb2.types"), exports);
|
|
46
|
+
__exportStar(require("./person/person-sb2.helper"), exports);
|
|
45
47
|
// Vehicle module
|
|
46
48
|
__exportStar(require("./vehicle"), exports);
|
|
47
49
|
// Accreditation module
|
|
48
50
|
__exportStar(require("./accreditation"), exports);
|
|
49
|
-
// RECIM module (Registro
|
|
51
|
+
// RECIM module (Registro de Contrainteligencia Militar)
|
|
50
52
|
__exportStar(require("./recim/recim-entry.entity"), exports);
|
|
51
53
|
__exportStar(require("./recim/recim-fingerprint.entity"), exports);
|
|
54
|
+
__exportStar(require("./recim/recim-detail-view.entity"), exports);
|
|
52
55
|
// Telefonia module
|
|
53
56
|
__exportStar(require("./telefonia/telefonia.entity"), exports);
|
|
54
57
|
__exportStar(require("./telefonia/historial-ubicacion.entity"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAEH,gBAAgB;AAChB,+CAA6B;AAC7B,sDAAoC;AAEpC,sBAAsB;AACtB,8EAA4D;AAC5D,mFAAiE;AAEjE,gBAAgB;AAChB,yDAAuC;AACvC,wEAAsD;AACtD,mEAAiD;AACjD,qEAAmD;AACnD,6DAA2C;AAC3C,wEAAsD;AACtD,+DAA6C;AAC7C,wDAAsC;AACtC,uEAAqD;AACrD,oEAAkD;AAClD,qEAAmD;AACnD,qEAAmD;AACnD,sEAAoD;AACpD,0EAAwD;AACxD,yEAAuD;AACvD,0EAAwD;AACxD,2EAAyD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAEH,gBAAgB;AAChB,+CAA6B;AAC7B,sDAAoC;AAEpC,sBAAsB;AACtB,8EAA4D;AAC5D,mFAAiE;AAEjE,gBAAgB;AAChB,yDAAuC;AACvC,wEAAsD;AACtD,mEAAiD;AACjD,qEAAmD;AACnD,6DAA2C;AAC3C,wEAAsD;AACtD,+DAA6C;AAC7C,wDAAsC;AACtC,uEAAqD;AACrD,oEAAkD;AAClD,qEAAmD;AACnD,qEAAmD;AACnD,sEAAoD;AACpD,0EAAwD;AACxD,yEAAuD;AACvD,0EAAwD;AACxD,2EAAyD;AACzD,4DAA0C;AAC1C,6DAA2C;AAE3C,iBAAiB;AACjB,4CAA0B;AAE1B,uBAAuB;AACvB,kDAAgC;AAEhC,wDAAwD;AACxD,6DAA2C;AAC3C,mEAAiD;AACjD,mEAAiD;AAEjD,mBAAmB;AACnB,+DAA6C;AAC7C,yEAAuD;AACvD,yDAAuC;AACvC,sEAAoD;AACpD,uEAAqD;AACrD,oEAAkD;AAClD,oEAAkD;AAClD,2EAAyD;AAEzD,kBAAkB;AAClB,6DAA2C;AAC3C,yEAAuD;AAEvD,cAAc;AACd,qDAAmC;AACnC,2DAAyC;AACzC,0DAAwC;AACxC,4DAA0C;AAE1C,eAAe;AACf,uDAAqC;AAErC,cAAc;AACd,yDAAuC;AACvC,yDAAuC;AAEvC,cAAc;AACd,4DAA0C;AAC1C,6DAA2C;AAC3C,iEAA+C;AAC/C,oEAAkD;AAClD,4DAA0C;AAE1C,sBAAsB;AACtB,8EAA4D;AAC5D,gFAA8D;AAC9D,8DAA4C;AAE5C,uBAAuB;AACvB,yDAAuC;AACvC,6DAA2C;AAE3C,kBAAkB;AAClB,sEAAoD;AAEpD,sBAAsB;AACtB,iEAA+C;AAC/C,wEAAsD;AACtD,oEAAkD;AAElD,qBAAqB;AACrB,0EAAwD;AAExD,uBAAuB;AACvB,6EAA2D;AAC3D,gFAA8D;AAE9D,mBAAmB;AACnB,qEAAmD;AACnD,4EAA0D;AAE1D,sBAAsB;AACtB,2EAAyD;AACzD,wEAAsD;AACtD,yEAAuD;AAEvD,cAAc;AACd,gDAA8B;AAE9B,cAAc;AACd,yCAAuB;AAEvB,aAAa;AACb,sDAAoC;AAEpC,YAAY;AACZ,qDAAmC;AAEnC,yBAAyB;AACzB,oFAAkE;AAClE,gEAA8C;AAC9C,yDAAuC;AAEvC,aAAa;AACb,6DAA2C;AAE3C,aAAa;AACb,2DAAyC;AACzC,+DAA6C;AAC7C,kEAAgD;AAChD,oEAAkD;AAElD,kBAAkB;AAClB,6CAA2B;AAE3B,eAAe;AACf,0CAAwB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper functions para trabajar con Person.sb2 (Multi-Model Facial Recognition Status)
|
|
3
|
+
* Proporciona utilidades para leer, actualizar y migrar datos de entrenamiento facial
|
|
4
|
+
*/
|
|
5
|
+
import { PersonSb2Data, FacialRecognitionModel, FacialDataSource, ModelTrainingStatus, TrainingStatusSummary } from './person-sb2.types';
|
|
6
|
+
/**
|
|
7
|
+
* Verifica si una persona tiene entrenamiento en un modelo específico
|
|
8
|
+
*/
|
|
9
|
+
export declare function hasModelTrained(sb2: PersonSb2Data | undefined | null, model: FacialRecognitionModel, source?: FacialDataSource): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Verifica si una persona tiene ALGÚN modelo entrenado (legacy o nuevo formato)
|
|
12
|
+
*/
|
|
13
|
+
export declare function hasAnyModelTrained(sb2: PersonSb2Data | undefined | null): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Obtiene el estado de entrenamiento para un modelo y fuente específicos
|
|
16
|
+
*/
|
|
17
|
+
export declare function getModelTrainingStatus(sb2: PersonSb2Data | undefined | null, model: FacialRecognitionModel, source: FacialDataSource): ModelTrainingStatus | null;
|
|
18
|
+
/**
|
|
19
|
+
* Actualiza el estado de entrenamiento para un modelo y fuente
|
|
20
|
+
* Mantiene compatibilidad con formato legacy
|
|
21
|
+
*/
|
|
22
|
+
export declare function setModelTrainingStatus(sb2: PersonSb2Data | undefined | null, model: FacialRecognitionModel, source: FacialDataSource, status: ModelTrainingStatus): PersonSb2Data;
|
|
23
|
+
/**
|
|
24
|
+
* Migra datos de formato legacy a formato multi-modelo
|
|
25
|
+
*/
|
|
26
|
+
export declare function migrateLegacyToMultiModel(sb2: PersonSb2Data | undefined | null): PersonSb2Data;
|
|
27
|
+
/**
|
|
28
|
+
* Obtiene resumen completo del estado de entrenamiento
|
|
29
|
+
*/
|
|
30
|
+
export declare function getTrainingStatusSummary(sb2: PersonSb2Data | undefined | null): TrainingStatusSummary;
|
|
31
|
+
/**
|
|
32
|
+
* Obtiene el mejor modelo disponible para verificación
|
|
33
|
+
* Prioridad: iResNet100 > Buffalo-L > dlib
|
|
34
|
+
*/
|
|
35
|
+
export declare function getBestAvailableModel(sb2: PersonSb2Data | undefined | null): FacialRecognitionModel | null;
|
|
36
|
+
/**
|
|
37
|
+
* Obtiene el modelo configurado por el usuario o el mejor disponible
|
|
38
|
+
*/
|
|
39
|
+
export declare function getPreferredModel(sb2: PersonSb2Data | undefined | null, purpose?: 'verification' | 'training'): FacialRecognitionModel | null;
|
|
40
|
+
/**
|
|
41
|
+
* Obtiene los modelos a entrenar automáticamente
|
|
42
|
+
*/
|
|
43
|
+
export declare function getAutoTrainModels(sb2: PersonSb2Data | undefined | null): FacialRecognitionModel[];
|
|
44
|
+
/**
|
|
45
|
+
* Verifica si el quality check está habilitado
|
|
46
|
+
*/
|
|
47
|
+
export declare function isQualityCheckEnabled(sb2: PersonSb2Data | undefined | null): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Formatea información de entrenamiento para display
|
|
50
|
+
*/
|
|
51
|
+
export declare function formatTrainingInfo(status: ModelTrainingStatus): string;
|
|
52
|
+
//# sourceMappingURL=person-sb2.helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"person-sb2.helper.d.ts","sourceRoot":"","sources":["../../../src/entities/person/person-sb2.helper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EAEtB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,EACrC,KAAK,EAAE,sBAAsB,EAC7B,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAWT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAkBjF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,EACrC,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,gBAAgB,GACvB,mBAAmB,GAAG,IAAI,CAG5B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,EACrC,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CAoBf;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,GAAG,aAAa,CA0B9F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,GAAG,qBAAqB,CAoDrG;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,GAAG,sBAAsB,GAAG,IAAI,CAgB1G;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,EACrC,OAAO,GAAE,cAAc,GAAG,UAA2B,GACpD,sBAAsB,GAAG,IAAI,CAmB/B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,GAAG,sBAAsB,EAAE,CAQlG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAEpF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAWtE"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Helper functions para trabajar con Person.sb2 (Multi-Model Facial Recognition Status)
|
|
4
|
+
* Proporciona utilidades para leer, actualizar y migrar datos de entrenamiento facial
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.hasModelTrained = hasModelTrained;
|
|
8
|
+
exports.hasAnyModelTrained = hasAnyModelTrained;
|
|
9
|
+
exports.getModelTrainingStatus = getModelTrainingStatus;
|
|
10
|
+
exports.setModelTrainingStatus = setModelTrainingStatus;
|
|
11
|
+
exports.migrateLegacyToMultiModel = migrateLegacyToMultiModel;
|
|
12
|
+
exports.getTrainingStatusSummary = getTrainingStatusSummary;
|
|
13
|
+
exports.getBestAvailableModel = getBestAvailableModel;
|
|
14
|
+
exports.getPreferredModel = getPreferredModel;
|
|
15
|
+
exports.getAutoTrainModels = getAutoTrainModels;
|
|
16
|
+
exports.isQualityCheckEnabled = isQualityCheckEnabled;
|
|
17
|
+
exports.formatTrainingInfo = formatTrainingInfo;
|
|
18
|
+
/**
|
|
19
|
+
* Verifica si una persona tiene entrenamiento en un modelo específico
|
|
20
|
+
*/
|
|
21
|
+
function hasModelTrained(sb2, model, source) {
|
|
22
|
+
if (!sb2?.models?.[model])
|
|
23
|
+
return false;
|
|
24
|
+
// Si se especifica fuente, verificar esa fuente específica
|
|
25
|
+
if (source) {
|
|
26
|
+
return sb2.models[model]?.[source]?.trained ?? false;
|
|
27
|
+
}
|
|
28
|
+
// Si no se especifica fuente, verificar si tiene alguna fuente entrenada
|
|
29
|
+
const modelData = sb2.models[model];
|
|
30
|
+
return Object.values(modelData || {}).some((status) => status.trained);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Verifica si una persona tiene ALGÚN modelo entrenado (legacy o nuevo formato)
|
|
34
|
+
*/
|
|
35
|
+
function hasAnyModelTrained(sb2) {
|
|
36
|
+
if (!sb2)
|
|
37
|
+
return false;
|
|
38
|
+
// Verificar formato nuevo
|
|
39
|
+
if (sb2.models) {
|
|
40
|
+
for (const model of Object.keys(sb2.models)) {
|
|
41
|
+
if (hasModelTrained(sb2, model)) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Verificar formato legacy (backward compatibility)
|
|
47
|
+
if (sb2.SAIME || sb2.MANUAL || sb2.IPSFA || sb2.INTT) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Obtiene el estado de entrenamiento para un modelo y fuente específicos
|
|
54
|
+
*/
|
|
55
|
+
function getModelTrainingStatus(sb2, model, source) {
|
|
56
|
+
if (!sb2?.models?.[model]?.[source])
|
|
57
|
+
return null;
|
|
58
|
+
return sb2.models[model][source];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Actualiza el estado de entrenamiento para un modelo y fuente
|
|
62
|
+
* Mantiene compatibilidad con formato legacy
|
|
63
|
+
*/
|
|
64
|
+
function setModelTrainingStatus(sb2, model, source, status) {
|
|
65
|
+
const updated = sb2 ? { ...sb2 } : {};
|
|
66
|
+
// Inicializar estructura si no existe
|
|
67
|
+
if (!updated.models) {
|
|
68
|
+
updated.models = {};
|
|
69
|
+
}
|
|
70
|
+
if (!updated.models[model]) {
|
|
71
|
+
updated.models[model] = {};
|
|
72
|
+
}
|
|
73
|
+
// Actualizar estado del modelo
|
|
74
|
+
updated.models[model][source] = status;
|
|
75
|
+
// Mantener formato legacy para compatibilidad
|
|
76
|
+
if (source === 'SAIME' || source === 'MANUAL' || source === 'IPSFA' || source === 'INTT') {
|
|
77
|
+
updated[source] = status.trained;
|
|
78
|
+
}
|
|
79
|
+
return updated;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Migra datos de formato legacy a formato multi-modelo
|
|
83
|
+
*/
|
|
84
|
+
function migrateLegacyToMultiModel(sb2) {
|
|
85
|
+
if (!sb2)
|
|
86
|
+
return {};
|
|
87
|
+
// Si ya tiene formato nuevo, no migrar
|
|
88
|
+
if (sb2.models)
|
|
89
|
+
return sb2;
|
|
90
|
+
const migrated = { ...sb2, models: {} };
|
|
91
|
+
// Migrar cada fuente legacy a dlib (modelo por defecto)
|
|
92
|
+
const legacySources = ['SAIME', 'MANUAL', 'IPSFA', 'INTT'];
|
|
93
|
+
for (const source of legacySources) {
|
|
94
|
+
if (sb2[source] === true) {
|
|
95
|
+
if (!migrated.models.dlib) {
|
|
96
|
+
migrated.models.dlib = {};
|
|
97
|
+
}
|
|
98
|
+
migrated.models.dlib[source] = {
|
|
99
|
+
trained: true,
|
|
100
|
+
trainedAt: new Date().toISOString(),
|
|
101
|
+
qualityScore: undefined // No disponible en formato legacy
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return migrated;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Obtiene resumen completo del estado de entrenamiento
|
|
109
|
+
*/
|
|
110
|
+
function getTrainingStatusSummary(sb2) {
|
|
111
|
+
const summary = {
|
|
112
|
+
hasAnyTraining: false,
|
|
113
|
+
trainedModels: [],
|
|
114
|
+
trainedSources: [],
|
|
115
|
+
details: [],
|
|
116
|
+
legacy: {}
|
|
117
|
+
};
|
|
118
|
+
if (!sb2)
|
|
119
|
+
return summary;
|
|
120
|
+
// Migrar si es necesario
|
|
121
|
+
const data = sb2.models ? sb2 : migrateLegacyToMultiModel(sb2);
|
|
122
|
+
// Procesar formato nuevo
|
|
123
|
+
if (data.models) {
|
|
124
|
+
const modelsSet = new Set();
|
|
125
|
+
const sourcesSet = new Set();
|
|
126
|
+
for (const [model, sources] of Object.entries(data.models)) {
|
|
127
|
+
const typedModel = model;
|
|
128
|
+
for (const [source, status] of Object.entries(sources || {})) {
|
|
129
|
+
const typedSource = source;
|
|
130
|
+
if (status.trained) {
|
|
131
|
+
modelsSet.add(typedModel);
|
|
132
|
+
sourcesSet.add(typedSource);
|
|
133
|
+
summary.details.push({
|
|
134
|
+
model: typedModel,
|
|
135
|
+
source: typedSource,
|
|
136
|
+
status
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
summary.trainedModels = Array.from(modelsSet);
|
|
142
|
+
summary.trainedSources = Array.from(sourcesSet);
|
|
143
|
+
summary.hasAnyTraining = summary.trainedModels.length > 0;
|
|
144
|
+
}
|
|
145
|
+
// Mantener formato legacy
|
|
146
|
+
summary.legacy = {
|
|
147
|
+
SAIME: data.SAIME,
|
|
148
|
+
MANUAL: data.MANUAL,
|
|
149
|
+
IPSFA: data.IPSFA,
|
|
150
|
+
INTT: data.INTT
|
|
151
|
+
};
|
|
152
|
+
return summary;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Obtiene el mejor modelo disponible para verificación
|
|
156
|
+
* Prioridad: iResNet100 > Buffalo-L > dlib
|
|
157
|
+
*/
|
|
158
|
+
function getBestAvailableModel(sb2) {
|
|
159
|
+
if (!sb2)
|
|
160
|
+
return null;
|
|
161
|
+
const priority = [
|
|
162
|
+
'insightface_iresnet100',
|
|
163
|
+
'insightface_buffalo_l',
|
|
164
|
+
'dlib'
|
|
165
|
+
];
|
|
166
|
+
for (const model of priority) {
|
|
167
|
+
if (hasModelTrained(sb2, model)) {
|
|
168
|
+
return model;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Obtiene el modelo configurado por el usuario o el mejor disponible
|
|
175
|
+
*/
|
|
176
|
+
function getPreferredModel(sb2, purpose = 'verification') {
|
|
177
|
+
if (!sb2)
|
|
178
|
+
return null;
|
|
179
|
+
// Verificar preferencias del usuario
|
|
180
|
+
if (sb2.preferences) {
|
|
181
|
+
if (purpose === 'verification' && sb2.preferences.verificationModel) {
|
|
182
|
+
// Verificar que el modelo esté entrenado
|
|
183
|
+
if (hasModelTrained(sb2, sb2.preferences.verificationModel)) {
|
|
184
|
+
return sb2.preferences.verificationModel;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (purpose === 'training' && sb2.preferences.defaultModel) {
|
|
188
|
+
return sb2.preferences.defaultModel;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Fallback al mejor modelo disponible
|
|
192
|
+
return getBestAvailableModel(sb2);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Obtiene los modelos a entrenar automáticamente
|
|
196
|
+
*/
|
|
197
|
+
function getAutoTrainModels(sb2) {
|
|
198
|
+
// Verificar preferencias del usuario
|
|
199
|
+
if (sb2?.preferences?.autoTrainModels && sb2.preferences.autoTrainModels.length > 0) {
|
|
200
|
+
return sb2.preferences.autoTrainModels;
|
|
201
|
+
}
|
|
202
|
+
// Fallback: solo dlib por compatibilidad
|
|
203
|
+
return ['dlib'];
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Verifica si el quality check está habilitado
|
|
207
|
+
*/
|
|
208
|
+
function isQualityCheckEnabled(sb2) {
|
|
209
|
+
return sb2?.preferences?.qualityCheckEnabled ?? false;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Formatea información de entrenamiento para display
|
|
213
|
+
*/
|
|
214
|
+
function formatTrainingInfo(status) {
|
|
215
|
+
const date = new Date(status.trainedAt);
|
|
216
|
+
const timeAgo = getTimeAgo(date);
|
|
217
|
+
let info = `Entrenado ${timeAgo}`;
|
|
218
|
+
if (status.qualityScore !== undefined) {
|
|
219
|
+
info += ` (calidad: ${(status.qualityScore * 100).toFixed(0)}%)`;
|
|
220
|
+
}
|
|
221
|
+
return info;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Helper para calcular tiempo relativo
|
|
225
|
+
*/
|
|
226
|
+
function getTimeAgo(date) {
|
|
227
|
+
const now = new Date();
|
|
228
|
+
const diffMs = now.getTime() - date.getTime();
|
|
229
|
+
const diffMins = Math.floor(diffMs / 60000);
|
|
230
|
+
const diffHours = Math.floor(diffMins / 60);
|
|
231
|
+
const diffDays = Math.floor(diffHours / 24);
|
|
232
|
+
if (diffMins < 60)
|
|
233
|
+
return `hace ${diffMins} minutos`;
|
|
234
|
+
if (diffHours < 24)
|
|
235
|
+
return `hace ${diffHours} horas`;
|
|
236
|
+
if (diffDays < 30)
|
|
237
|
+
return `hace ${diffDays} días`;
|
|
238
|
+
return date.toLocaleDateString();
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=person-sb2.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"person-sb2.helper.js","sourceRoot":"","sources":["../../../src/entities/person/person-sb2.helper.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAcH,0CAeC;AAKD,gDAkBC;AAKD,wDAOC;AAMD,wDAyBC;AAKD,8DA0BC;AAKD,4DAoDC;AAMD,sDAgBC;AAKD,8CAsBC;AAKD,gDAQC;AAKD,sDAEC;AAKD,gDAWC;AAjQD;;GAEG;AACH,SAAgB,eAAe,CAC7B,GAAqC,EACrC,KAA6B,EAC7B,MAAyB;IAEzB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,2DAA2D;IAC3D,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC;IACvD,CAAC;IAED,yEAAyE;IACzE,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,GAAqC;IACtE,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvB,0BAA0B;IAC1B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAA6B,EAAE,CAAC;YACxE,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CACpC,GAAqC,EACrC,KAA6B,EAC7B,MAAwB;IAExB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,MAAM,CAAE,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CACpC,GAAqC,EACrC,KAA6B,EAC7B,MAAwB,EACxB,MAA2B;IAE3B,MAAM,OAAO,GAAkB,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAErD,sCAAsC;IACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAExC,8CAA8C;IAC9C,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACzF,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,GAAqC;IAC7E,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAEpB,uCAAuC;IACvC,IAAI,GAAG,CAAC,MAAM;QAAE,OAAO,GAAG,CAAC;IAE3B,MAAM,QAAQ,GAAkB,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAEvD,wDAAwD;IACxD,MAAM,aAAa,GAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAE/E,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;gBAC3B,QAAQ,CAAC,MAAO,CAAC,IAAI,GAAG,EAAE,CAAC;YAC7B,CAAC;YAED,QAAQ,CAAC,MAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;gBAC9B,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,YAAY,EAAE,SAAS,CAAC,kCAAkC;aAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,GAAqC;IAC5E,MAAM,OAAO,GAA0B;QACrC,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,EAAE;QAClB,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC;IAEzB,yBAAyB;IACzB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAE/D,yBAAyB;IACzB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;QAE/C,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,MAAM,UAAU,GAAG,KAA+B,CAAC;YAEnD,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC7D,MAAM,WAAW,GAAG,MAA0B,CAAC;gBAE/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC1B,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBAE5B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;wBACnB,KAAK,EAAE,UAAU;wBACjB,MAAM,EAAE,WAAW;wBACnB,MAAM;qBACP,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,0BAA0B;IAC1B,OAAO,CAAC,MAAM,GAAG;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,GAAqC;IACzE,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,QAAQ,GAA6B;QACzC,wBAAwB;QACxB,uBAAuB;QACvB,MAAM;KACP,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,GAAqC,EACrC,UAAuC,cAAc;IAErD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,qCAAqC;IACrC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,OAAO,KAAK,cAAc,IAAI,GAAG,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;YACpE,yCAAyC;YACzC,IAAI,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC5D,OAAO,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,IAAI,OAAO,KAAK,UAAU,IAAI,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YAC3D,OAAO,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC;QACtC,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,GAAqC;IACtE,qCAAqC;IACrC,IAAI,GAAG,EAAE,WAAW,EAAE,eAAe,IAAI,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpF,OAAO,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC;IACzC,CAAC;IAED,yCAAyC;IACzC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,GAAqC;IACzE,OAAO,GAAG,EAAE,WAAW,EAAE,mBAAmB,IAAI,KAAK,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,MAA2B;IAC5D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,IAAI,GAAG,aAAa,OAAO,EAAE,CAAC;IAElC,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,IAAI,cAAc,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,IAAU;IAC5B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;IAE5C,IAAI,QAAQ,GAAG,EAAE;QAAE,OAAO,QAAQ,QAAQ,UAAU,CAAC;IACrD,IAAI,SAAS,GAAG,EAAE;QAAE,OAAO,QAAQ,SAAS,QAAQ,CAAC;IACrD,IAAI,QAAQ,GAAG,EAAE;QAAE,OAAO,QAAQ,QAAQ,OAAO,CAAC;IAClD,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tipos para el campo Person.sb2 - Facial Recognition Training Status
|
|
3
|
+
* Soporta multi-modelo: dlib, InsightFace (buffalo_l, iresnet100)
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Estado de entrenamiento de un modelo específico para una fuente de datos
|
|
7
|
+
*/
|
|
8
|
+
export interface ModelTrainingStatus {
|
|
9
|
+
/**
|
|
10
|
+
* Si el modelo ha sido entrenado con esta fuente
|
|
11
|
+
*/
|
|
12
|
+
trained: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Fecha/hora de entrenamiento (ISO 8601)
|
|
15
|
+
*/
|
|
16
|
+
trainedAt: string;
|
|
17
|
+
/**
|
|
18
|
+
* Score de calidad de la imagen usada para entrenamiento (0-1)
|
|
19
|
+
* Solo disponible para modelos InsightFace que evalúan calidad
|
|
20
|
+
*/
|
|
21
|
+
qualityScore?: number;
|
|
22
|
+
/**
|
|
23
|
+
* ID del embedding en Milvus (opcional)
|
|
24
|
+
*/
|
|
25
|
+
milvusId?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Modelos de reconocimiento facial disponibles
|
|
29
|
+
*/
|
|
30
|
+
export type FacialRecognitionModel = 'dlib' | 'insightface_buffalo_l' | 'insightface_iresnet100';
|
|
31
|
+
/**
|
|
32
|
+
* Fuentes de datos de imágenes faciales
|
|
33
|
+
*/
|
|
34
|
+
export type FacialDataSource = 'SAIME' | 'MANUAL' | 'IPSFA' | 'INTT' | 'OTHER';
|
|
35
|
+
/**
|
|
36
|
+
* Estado de entrenamiento por modelo y fuente
|
|
37
|
+
* Ejemplo:
|
|
38
|
+
* {
|
|
39
|
+
* "dlib": {
|
|
40
|
+
* "SAIME": { trained: true, trainedAt: "2024-01-15T10:30:00Z", qualityScore: 0.85 },
|
|
41
|
+
* "MANUAL": { trained: true, trainedAt: "2024-01-20T14:00:00Z" }
|
|
42
|
+
* },
|
|
43
|
+
* "insightface_buffalo_l": {
|
|
44
|
+
* "SAIME": { trained: true, trainedAt: "2024-01-15T10:35:00Z", qualityScore: 0.92 }
|
|
45
|
+
* }
|
|
46
|
+
* }
|
|
47
|
+
*/
|
|
48
|
+
export type ModelTrainingStatusMap = {
|
|
49
|
+
[model in FacialRecognitionModel]?: {
|
|
50
|
+
[source in FacialDataSource]?: ModelTrainingStatus;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Preferencias del usuario para modelos de reconocimiento facial
|
|
55
|
+
*/
|
|
56
|
+
export interface FacialRecognitionPreferences {
|
|
57
|
+
/**
|
|
58
|
+
* Modelo por defecto para nuevos registros
|
|
59
|
+
*/
|
|
60
|
+
defaultModel?: FacialRecognitionModel;
|
|
61
|
+
/**
|
|
62
|
+
* Modelo a usar para verificaciones 1:1
|
|
63
|
+
*/
|
|
64
|
+
verificationModel?: FacialRecognitionModel;
|
|
65
|
+
/**
|
|
66
|
+
* Modelos a entrenar automáticamente cuando se registra una nueva imagen
|
|
67
|
+
*/
|
|
68
|
+
autoTrainModels?: FacialRecognitionModel[];
|
|
69
|
+
/**
|
|
70
|
+
* Habilitar evaluación de calidad antes de entrenar
|
|
71
|
+
*/
|
|
72
|
+
qualityCheckEnabled?: boolean;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Estructura completa del campo Person.sb2
|
|
76
|
+
* Mantiene compatibilidad con formato legacy mientras agrega soporte multi-modelo
|
|
77
|
+
*/
|
|
78
|
+
export interface PersonSb2Data {
|
|
79
|
+
/**
|
|
80
|
+
* FORMATO LEGACY (mantener para compatibilidad)
|
|
81
|
+
* Indica si la persona tiene foto entrenada desde cada fuente
|
|
82
|
+
* @deprecated Usar 'models' en su lugar
|
|
83
|
+
*/
|
|
84
|
+
SAIME?: boolean;
|
|
85
|
+
MANUAL?: boolean;
|
|
86
|
+
IPSFA?: boolean;
|
|
87
|
+
INTT?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* NUEVO: Estado de entrenamiento por modelo y fuente
|
|
90
|
+
* Esta es la fuente de verdad para el estado de entrenamiento multi-modelo
|
|
91
|
+
*/
|
|
92
|
+
models?: ModelTrainingStatusMap;
|
|
93
|
+
/**
|
|
94
|
+
* NUEVO: Preferencias del usuario para reconocimiento facial
|
|
95
|
+
*/
|
|
96
|
+
preferences?: FacialRecognitionPreferences;
|
|
97
|
+
/**
|
|
98
|
+
* Metadata adicional (extensible)
|
|
99
|
+
*/
|
|
100
|
+
[key: string]: any;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Helper type para verificar si una persona tiene entrenamiento en un modelo específico
|
|
104
|
+
*/
|
|
105
|
+
export interface ModelTrainingInfo {
|
|
106
|
+
model: FacialRecognitionModel;
|
|
107
|
+
source: FacialDataSource;
|
|
108
|
+
status: ModelTrainingStatus;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Resultado de verificación de estado de entrenamiento
|
|
112
|
+
*/
|
|
113
|
+
export interface TrainingStatusSummary {
|
|
114
|
+
/**
|
|
115
|
+
* Tiene al menos un modelo entrenado
|
|
116
|
+
*/
|
|
117
|
+
hasAnyTraining: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Modelos entrenados
|
|
120
|
+
*/
|
|
121
|
+
trainedModels: FacialRecognitionModel[];
|
|
122
|
+
/**
|
|
123
|
+
* Fuentes con entrenamiento
|
|
124
|
+
*/
|
|
125
|
+
trainedSources: FacialDataSource[];
|
|
126
|
+
/**
|
|
127
|
+
* Detalles completos por modelo
|
|
128
|
+
*/
|
|
129
|
+
details: ModelTrainingInfo[];
|
|
130
|
+
/**
|
|
131
|
+
* Formato legacy compatible
|
|
132
|
+
*/
|
|
133
|
+
legacy: {
|
|
134
|
+
SAIME?: boolean;
|
|
135
|
+
MANUAL?: boolean;
|
|
136
|
+
IPSFA?: boolean;
|
|
137
|
+
INTT?: boolean;
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=person-sb2.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"person-sb2.types.d.ts","sourceRoot":"","sources":["../../../src/entities/person/person-sb2.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,uBAAuB,GAAG,wBAAwB,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,sBAAsB,GAAG;KAClC,KAAK,IAAI,sBAAsB,CAAC,CAAC,EAAE;SACjC,MAAM,IAAI,gBAAgB,CAAC,CAAC,EAAE,mBAAmB;KACnD;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAEtC;;OAEG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAE3C;;OAEG;IACH,eAAe,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAE3C;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAEhC;;OAEG;IACH,WAAW,CAAC,EAAE,4BAA4B,CAAC;IAE3C;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,sBAAsB,CAAC;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,aAAa,EAAE,sBAAsB,EAAE,CAAC;IAExC;;OAEG;IACH,cAAc,EAAE,gBAAgB,EAAE,CAAC;IAEnC;;OAEG;IACH,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAE7B;;OAEG;IACH,MAAM,EAAE;QACN,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tipos para el campo Person.sb2 - Facial Recognition Training Status
|
|
4
|
+
* Soporta multi-modelo: dlib, InsightFace (buffalo_l, iresnet100)
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
//# sourceMappingURL=person-sb2.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"person-sb2.types.js","sourceRoot":"","sources":["../../../src/entities/person/person-sb2.types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -102,7 +102,17 @@ export declare class Person extends GlobalBase {
|
|
|
102
102
|
ivssDataLastCheck?: Date;
|
|
103
103
|
fiscalDataChecked?: boolean;
|
|
104
104
|
fiscalDataLastCheck?: Date;
|
|
105
|
-
|
|
105
|
+
/**
|
|
106
|
+
* Facial Recognition Training Status (Multi-Model)
|
|
107
|
+
* Tracks training status across different facial recognition models and data sources
|
|
108
|
+
*
|
|
109
|
+
* Supports:
|
|
110
|
+
* - Legacy format: { SAIME: true, MANUAL: true, ... }
|
|
111
|
+
* - New format: { models: { dlib: { SAIME: { trained: true, trainedAt: "..." } } } }
|
|
112
|
+
*
|
|
113
|
+
* @see PersonSb2Data for complete type definition
|
|
114
|
+
*/
|
|
115
|
+
sb2?: import('./person-sb2.types').PersonSb2Data;
|
|
106
116
|
/**
|
|
107
117
|
* Current position/job of the person
|
|
108
118
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"person.entity.d.ts","sourceRoot":"","sources":["../../../src/entities/person/person.entity.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"person.entity.d.ts","sourceRoot":"","sources":["../../../src/entities/person/person.entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"person.entity.js","sourceRoot":"","sources":["../../../src/entities/person/person.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uDAAkD;AAClD,qCAOiB;AACjB,iFAAsE;AACtE,uEAA4D;AAC5D,wDAA8C;AAC9C,6DAAmD;AACnD,2EAA+D;AAC/D,2DAAiE;AACjE,iFAAqE;AACrE,+DAAoD;AACpD,+EAAmE;AACnE,yEAA8D;AAC9D,2EAA+D;AAC/D,mEAAwD;AACxD,mEAAwD;AACxD,2EAAgE;AAChE,6EAAiE;AACjE,kFAAuE;AAEvE,qFAA0E;AAC1E,iFAAuE;AA6BvE,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,mCAAqB,CAAA;AACvB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAOM,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,yBAAU;
|
|
1
|
+
{"version":3,"file":"person.entity.js","sourceRoot":"","sources":["../../../src/entities/person/person.entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { EntityBase } from '../base';
|
|
2
|
+
import { RecimEntry } from './recim-entry.entity';
|
|
3
|
+
import { User } from '../user.entity';
|
|
4
|
+
/**
|
|
5
|
+
* RecimDetailView Entity
|
|
6
|
+
*
|
|
7
|
+
* Audit trail for RECIM detail page views.
|
|
8
|
+
* Tracks when users access the full detail view of a RECIM entry.
|
|
9
|
+
*
|
|
10
|
+
* **Purpose:**
|
|
11
|
+
* - Different from profile revision (which logs full person searches)
|
|
12
|
+
* - Logs specifically when someone views a RECIM entry detail
|
|
13
|
+
* - Tracks access patterns to sensitive biometric data
|
|
14
|
+
*
|
|
15
|
+
* **Use Cases:**
|
|
16
|
+
* - Security auditing (who accessed biometric data)
|
|
17
|
+
* - Compliance reporting
|
|
18
|
+
* - Access pattern analysis
|
|
19
|
+
*/
|
|
20
|
+
export declare class RecimDetailView extends EntityBase {
|
|
21
|
+
/**
|
|
22
|
+
* RECIM Entry being viewed
|
|
23
|
+
*/
|
|
24
|
+
recimEntry: RecimEntry;
|
|
25
|
+
/**
|
|
26
|
+
* User who viewed the detail
|
|
27
|
+
*/
|
|
28
|
+
viewedBy?: User;
|
|
29
|
+
/**
|
|
30
|
+
* Timestamp when the detail was viewed
|
|
31
|
+
*/
|
|
32
|
+
viewedAt: Date;
|
|
33
|
+
/**
|
|
34
|
+
* IP address of the viewer (optional)
|
|
35
|
+
*/
|
|
36
|
+
ipAddress?: string;
|
|
37
|
+
/**
|
|
38
|
+
* User agent of the viewer (optional)
|
|
39
|
+
*/
|
|
40
|
+
userAgent?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Additional context (e.g., "clicked from list", "direct link", etc.)
|
|
43
|
+
*/
|
|
44
|
+
context?: Record<string, any>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=recim-detail-view.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recim-detail-view.entity.d.ts","sourceRoot":"","sources":["../../../src/entities/recim/recim-detail-view.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC;;;;;;;;;;;;;;;GAeG;AACH,qBAKa,eAAgB,SAAQ,UAAU;IAC7C;;OAEG;IAOH,UAAU,EAAG,UAAU,CAAC;IAExB;;OAEG;IAOH,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB;;OAEG;IAEH,QAAQ,EAAG,IAAI,CAAC;IAEhB;;OAEG;IAEH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IAEH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IAEH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.RecimDetailView = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
const base_1 = require("../base");
|
|
15
|
+
const recim_entry_entity_1 = require("./recim-entry.entity");
|
|
16
|
+
const user_entity_1 = require("../user.entity");
|
|
17
|
+
/**
|
|
18
|
+
* RecimDetailView Entity
|
|
19
|
+
*
|
|
20
|
+
* Audit trail for RECIM detail page views.
|
|
21
|
+
* Tracks when users access the full detail view of a RECIM entry.
|
|
22
|
+
*
|
|
23
|
+
* **Purpose:**
|
|
24
|
+
* - Different from profile revision (which logs full person searches)
|
|
25
|
+
* - Logs specifically when someone views a RECIM entry detail
|
|
26
|
+
* - Tracks access patterns to sensitive biometric data
|
|
27
|
+
*
|
|
28
|
+
* **Use Cases:**
|
|
29
|
+
* - Security auditing (who accessed biometric data)
|
|
30
|
+
* - Compliance reporting
|
|
31
|
+
* - Access pattern analysis
|
|
32
|
+
*/
|
|
33
|
+
let RecimDetailView = class RecimDetailView extends base_1.EntityBase {
|
|
34
|
+
};
|
|
35
|
+
exports.RecimDetailView = RecimDetailView;
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, typeorm_1.ManyToOne)(() => recim_entry_entity_1.RecimEntry, {
|
|
38
|
+
onDelete: 'CASCADE',
|
|
39
|
+
onUpdate: 'CASCADE',
|
|
40
|
+
nullable: false,
|
|
41
|
+
}),
|
|
42
|
+
(0, typeorm_1.JoinColumn)({ name: 'recim_entry_id' }),
|
|
43
|
+
__metadata("design:type", recim_entry_entity_1.RecimEntry)
|
|
44
|
+
], RecimDetailView.prototype, "recimEntry", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, typeorm_1.ManyToOne)(() => user_entity_1.User, {
|
|
47
|
+
onDelete: 'SET NULL',
|
|
48
|
+
onUpdate: 'CASCADE',
|
|
49
|
+
nullable: true,
|
|
50
|
+
}),
|
|
51
|
+
(0, typeorm_1.JoinColumn)({ name: 'viewed_by_id' }),
|
|
52
|
+
__metadata("design:type", user_entity_1.User)
|
|
53
|
+
], RecimDetailView.prototype, "viewedBy", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, typeorm_1.Column)({ type: 'timestamptz', default: () => 'CURRENT_TIMESTAMP' }),
|
|
56
|
+
__metadata("design:type", Date)
|
|
57
|
+
], RecimDetailView.prototype, "viewedAt", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 45, nullable: true }),
|
|
60
|
+
__metadata("design:type", String)
|
|
61
|
+
], RecimDetailView.prototype, "ipAddress", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 500, nullable: true }),
|
|
64
|
+
__metadata("design:type", String)
|
|
65
|
+
], RecimDetailView.prototype, "userAgent", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
(0, typeorm_1.Column)({ type: 'jsonb', nullable: true }),
|
|
68
|
+
__metadata("design:type", Object)
|
|
69
|
+
], RecimDetailView.prototype, "context", void 0);
|
|
70
|
+
exports.RecimDetailView = RecimDetailView = __decorate([
|
|
71
|
+
(0, typeorm_1.Entity)('recim_detail_view'),
|
|
72
|
+
(0, typeorm_1.Index)('recim_detail_view_entry_idx', ['recimEntry']),
|
|
73
|
+
(0, typeorm_1.Index)('recim_detail_view_user_idx', ['viewedBy']),
|
|
74
|
+
(0, typeorm_1.Index)('recim_detail_view_date_idx', ['viewedAt']),
|
|
75
|
+
(0, typeorm_1.Index)('recim_detail_view_tenant_date_idx', ['tenantId', 'viewedAt'])
|
|
76
|
+
], RecimDetailView);
|
|
77
|
+
//# sourceMappingURL=recim-detail-view.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recim-detail-view.entity.js","sourceRoot":"","sources":["../../../src/entities/recim/recim-detail-view.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAuE;AACvE,kCAAqC;AACrC,6DAAkD;AAClD,gDAAsC;AAEtC;;;;;;;;;;;;;;;GAeG;AAMI,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,iBAAU;CA8C9C,CAAA;AA9CY,0CAAe;AAU1B;IANC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,+BAAU,EAAE;QAC3B,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,KAAK;KAChB,CAAC;IACD,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;8BAC1B,+BAAU;mDAAC;AAWxB;IANC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,kBAAI,EAAE;QACrB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;8BAC1B,kBAAI;iDAAC;AAMhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC;8BACzD,IAAI;iDAAC;AAMhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACrC;AAMnB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACtC;AAMnB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACZ;0BA7CnB,eAAe;IAL3B,IAAA,gBAAM,EAAC,mBAAmB,CAAC;IAC3B,IAAA,eAAK,EAAC,6BAA6B,EAAE,CAAC,YAAY,CAAC,CAAC;IACpD,IAAA,eAAK,EAAC,4BAA4B,EAAE,CAAC,UAAU,CAAC,CAAC;IACjD,IAAA,eAAK,EAAC,4BAA4B,EAAE,CAAC,UAAU,CAAC,CAAC;IACjD,IAAA,eAAK,EAAC,mCAAmC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;GACxD,eAAe,CA8C3B"}
|
|
@@ -74,7 +74,7 @@ export declare class RecimEntry extends EntityBase {
|
|
|
74
74
|
*
|
|
75
75
|
* One-to-many relation with RecimFingerprint entities.
|
|
76
76
|
* CASCADE delete: when entry is deleted, fingerprints are also deleted.
|
|
77
|
-
*
|
|
77
|
+
* Lazy loaded to optimize list queries - load explicitly when needed.
|
|
78
78
|
*/
|
|
79
79
|
fingerprints?: RecimFingerprint[];
|
|
80
80
|
}
|
|
@@ -77,7 +77,7 @@ __decorate([
|
|
|
77
77
|
__decorate([
|
|
78
78
|
(0, typeorm_1.OneToMany)(() => recim_fingerprint_entity_1.RecimFingerprint, (fingerprint) => fingerprint.recimEntry, {
|
|
79
79
|
cascade: true,
|
|
80
|
-
eager:
|
|
80
|
+
eager: false, // Changed to false for performance optimization
|
|
81
81
|
}),
|
|
82
82
|
__metadata("design:type", Array)
|
|
83
83
|
], RecimEntry.prototype, "fingerprints", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recim-entry.entity.js","sourceRoot":"","sources":["../../../src/entities/recim/recim-entry.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAOiB;AACjB,yCAA2C;AAC3C,2DAAiD;AACjD,yEAA8D;AAE9D;;;;;;;GAOG;AACH,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;IACrB,oCAAqB,CAAA;AACvB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAED;;;;;;;;;;;;;GAaG;AAII,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,kBAAU;CAsEzC,CAAA;AAtEY,gCAAU;AASrB;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,sBAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACzD,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;8BACzB,sBAAM;0CAAC;AAShB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDAClB;AASvB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACtD,IAAI;gDAAC;AAQpB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CAC1D;AAalB;IALC,IAAA,gBAAM,EAAC;QACN,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,WAAW,CAAC,MAAM;KAC5B,CAAC;;0CACmB;AAQrB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDAC1C;AAatB;IAJC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,2CAAgB,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE;QAC1E,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"recim-entry.entity.js","sourceRoot":"","sources":["../../../src/entities/recim/recim-entry.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAOiB;AACjB,yCAA2C;AAC3C,2DAAiD;AACjD,yEAA8D;AAE9D;;;;;;;GAOG;AACH,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;IACrB,oCAAqB,CAAA;AACvB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAED;;;;;;;;;;;;;GAaG;AAII,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,kBAAU;CAsEzC,CAAA;AAtEY,gCAAU;AASrB;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,sBAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACzD,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;8BACzB,sBAAM;0CAAC;AAShB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDAClB;AASvB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACtD,IAAI;gDAAC;AAQpB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4CAC1D;AAalB;IALC,IAAA,gBAAM,EAAC;QACN,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,WAAW,CAAC,MAAM;KAC5B,CAAC;;0CACmB;AAQrB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDAC1C;AAatB;IAJC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,2CAAgB,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE;QAC1E,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,KAAK,EAAE,gDAAgD;KAC/D,CAAC;;gDACgC;qBArEvB,UAAU;IAHtB,IAAA,gBAAM,EAAC,aAAa,CAAC;IACrB,IAAA,eAAK,EAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAA,eAAK,EAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC;GAC/B,UAAU,CAsEtB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
/**
|
|
3
|
+
* Migration to add performance indexes for RECIM queries
|
|
4
|
+
*
|
|
5
|
+
* Indexes added:
|
|
6
|
+
* 1. idx_recim_entry_tenant_status_date - Composite index for common list queries
|
|
7
|
+
* 2. idx_recim_entry_person_active - Index for person lookup with active status
|
|
8
|
+
*/
|
|
9
|
+
export declare class AddRecimPerformanceIndexes1738001000000 implements MigrationInterface {
|
|
10
|
+
name: string;
|
|
11
|
+
up(queryRunner: QueryRunner): Promise<void>;
|
|
12
|
+
down(queryRunner: QueryRunner): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=1738001000000-AddRecimPerformanceIndexes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1738001000000-AddRecimPerformanceIndexes.d.ts","sourceRoot":"","sources":["../../src/migrations/1738001000000-AddRecimPerformanceIndexes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D;;;;;;GAMG;AACH,qBAAa,uCAAwC,YAAW,kBAAkB;IAChF,IAAI,SAA6C;IAEpC,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAU3D"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AddRecimPerformanceIndexes1738001000000 = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Migration to add performance indexes for RECIM queries
|
|
6
|
+
*
|
|
7
|
+
* Indexes added:
|
|
8
|
+
* 1. idx_recim_entry_tenant_status_date - Composite index for common list queries
|
|
9
|
+
* 2. idx_recim_entry_person_active - Index for person lookup with active status
|
|
10
|
+
*/
|
|
11
|
+
class AddRecimPerformanceIndexes1738001000000 {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.name = 'AddRecimPerformanceIndexes1738001000000';
|
|
14
|
+
}
|
|
15
|
+
async up(queryRunner) {
|
|
16
|
+
// Composite index for tenant + status + createdAt (covers most list queries)
|
|
17
|
+
await queryRunner.query(`
|
|
18
|
+
CREATE INDEX IF NOT EXISTS "idx_recim_entry_tenant_status_date"
|
|
19
|
+
ON "recim_entry" ("tenantId", "status", "createdAt" DESC)
|
|
20
|
+
`);
|
|
21
|
+
// Index for person lookup with active status (used in duplicate detection)
|
|
22
|
+
await queryRunner.query(`
|
|
23
|
+
CREATE INDEX IF NOT EXISTS "idx_recim_entry_person_active"
|
|
24
|
+
ON "recim_entry" ("person_id", "status")
|
|
25
|
+
WHERE "status" = 'ACTIVE'
|
|
26
|
+
`);
|
|
27
|
+
}
|
|
28
|
+
async down(queryRunner) {
|
|
29
|
+
// Drop indexes in reverse order
|
|
30
|
+
await queryRunner.query(`
|
|
31
|
+
DROP INDEX IF EXISTS "idx_recim_entry_person_active"
|
|
32
|
+
`);
|
|
33
|
+
await queryRunner.query(`
|
|
34
|
+
DROP INDEX IF EXISTS "idx_recim_entry_tenant_status_date"
|
|
35
|
+
`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.AddRecimPerformanceIndexes1738001000000 = AddRecimPerformanceIndexes1738001000000;
|
|
39
|
+
//# sourceMappingURL=1738001000000-AddRecimPerformanceIndexes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1738001000000-AddRecimPerformanceIndexes.js","sourceRoot":"","sources":["../../src/migrations/1738001000000-AddRecimPerformanceIndexes.ts"],"names":[],"mappings":";;;AAEA;;;;;;GAMG;AACH,MAAa,uCAAuC;IAApD;QACE,SAAI,GAAG,yCAAyC,CAAC;IA2BnD,CAAC;IAzBQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,6EAA6E;QAC7E,MAAM,WAAW,CAAC,KAAK,CAAC;;;KAGvB,CAAC,CAAC;QAEH,2EAA2E;QAC3E,MAAM,WAAW,CAAC,KAAK,CAAC;;;;KAIvB,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,gCAAgC;QAChC,MAAM,WAAW,CAAC,KAAK,CAAC;;KAEvB,CAAC,CAAC;QAEH,MAAM,WAAW,CAAC,KAAK,CAAC;;KAEvB,CAAC,CAAC;IACL,CAAC;CACF;AA5BD,0FA4BC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sigmatech/pergamo",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.58",
|
|
4
4
|
"description": "Shared TypeORM entities and utilities for Dataven intelligence system - Named after the ancient library of Pergamon",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist"
|
|
9
9
|
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "rm -rf dist && tsc -p tsconfig.build.json",
|
|
12
|
+
"build:watch": "tsc -p tsconfig.build.json --watch",
|
|
13
|
+
"prepublishOnly": "pnpm build",
|
|
14
|
+
"publish:local": "pnpm build && npm pack",
|
|
15
|
+
"publish:npm": "npm version patch && pnpm build && npm publish --access public"
|
|
16
|
+
},
|
|
10
17
|
"keywords": [
|
|
11
18
|
"typeorm",
|
|
12
19
|
"entities",
|
|
@@ -32,11 +39,5 @@
|
|
|
32
39
|
"reflect-metadata": "^0.2.2",
|
|
33
40
|
"typeorm": "^0.3.27",
|
|
34
41
|
"typescript": "^5.9.3"
|
|
35
|
-
},
|
|
36
|
-
"scripts": {
|
|
37
|
-
"build": "rm -rf dist && tsc -p tsconfig.build.json",
|
|
38
|
-
"build:watch": "tsc -p tsconfig.build.json --watch",
|
|
39
|
-
"publish:local": "pnpm build && npm pack",
|
|
40
|
-
"publish:npm": "npm version patch && pnpm build && npm publish --access public"
|
|
41
42
|
}
|
|
42
|
-
}
|
|
43
|
+
}
|