@sigmatech/pergamo 0.1.55 → 0.1.57
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 -0
- package/dist/entities/index.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 +81 -0
- package/dist/entities/recim/recim-entry.entity.d.ts.map +1 -0
- package/dist/entities/recim/recim-entry.entity.js +89 -0
- package/dist/entities/recim/recim-entry.entity.js.map +1 -0
- package/dist/entities/recim/recim-fingerprint.entity.d.ts +113 -0
- package/dist/entities/recim/recim-fingerprint.entity.d.ts.map +1 -0
- package/dist/entities/recim/recim-fingerprint.entity.js +102 -0
- package/dist/entities/recim/recim-fingerprint.entity.js.map +1 -0
- 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 +1 -1
package/dist/entities/index.d.ts
CHANGED
|
@@ -25,6 +25,9 @@ export * from "./person/characterization-family.entity";
|
|
|
25
25
|
export * from "./person/characterization-linkage.entity";
|
|
26
26
|
export * from "./vehicle";
|
|
27
27
|
export * from "./accreditation";
|
|
28
|
+
export * from "./recim/recim-entry.entity";
|
|
29
|
+
export * from "./recim/recim-fingerprint.entity";
|
|
30
|
+
export * from "./recim/recim-detail-view.entity";
|
|
28
31
|
export * from "./telefonia/telefonia.entity";
|
|
29
32
|
export * from "./telefonia/historial-ubicacion.entity";
|
|
30
33
|
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;AAGzD,cAAc,WAAW,CAAC;AAG1B,cAAc,iBAAiB,CAAC;AAGhC,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"}
|
|
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;AAGzD,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
|
@@ -46,6 +46,10 @@ __exportStar(require("./person/characterization-linkage.entity"), exports);
|
|
|
46
46
|
__exportStar(require("./vehicle"), exports);
|
|
47
47
|
// Accreditation module
|
|
48
48
|
__exportStar(require("./accreditation"), exports);
|
|
49
|
+
// RECIM module (Registro de Contrainteligencia Militar)
|
|
50
|
+
__exportStar(require("./recim/recim-entry.entity"), exports);
|
|
51
|
+
__exportStar(require("./recim/recim-fingerprint.entity"), exports);
|
|
52
|
+
__exportStar(require("./recim/recim-detail-view.entity"), exports);
|
|
49
53
|
// Telefonia module
|
|
50
54
|
__exportStar(require("./telefonia/telefonia.entity"), exports);
|
|
51
55
|
__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;AAEzD,iBAAiB;AACjB,4CAA0B;AAE1B,uBAAuB;AACvB,kDAAgC;AAEhC,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"}
|
|
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;AAEzD,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,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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { EntityBase } from '../base/_base';
|
|
2
|
+
import { Person } from '../person/person.entity';
|
|
3
|
+
import { RecimFingerprint } from './recim-fingerprint.entity';
|
|
4
|
+
/**
|
|
5
|
+
* RECIM Status Enum
|
|
6
|
+
*
|
|
7
|
+
* Defines the lifecycle status of a RECIM entry:
|
|
8
|
+
* - ACTIVE: Entry is active and current
|
|
9
|
+
* - INACTIVE: Entry has been deactivated
|
|
10
|
+
* - ARCHIVED: Entry has been archived for historical purposes
|
|
11
|
+
*/
|
|
12
|
+
export declare enum RecimStatus {
|
|
13
|
+
ACTIVE = "ACTIVE",
|
|
14
|
+
INACTIVE = "INACTIVE",
|
|
15
|
+
ARCHIVED = "ARCHIVED"
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* RECIM Entry Entity
|
|
19
|
+
*
|
|
20
|
+
* Represents a permanent biometric registry entry for a person.
|
|
21
|
+
* Unlike accreditations, RECIM entries are not event-based and have no expiration.
|
|
22
|
+
*
|
|
23
|
+
* Key Features:
|
|
24
|
+
* - Permanent registry (no event dependency)
|
|
25
|
+
* - No approval workflow required
|
|
26
|
+
* - Status lifecycle management (ACTIVE/INACTIVE/ARCHIVED)
|
|
27
|
+
* - Tenant-specific with full audit trail
|
|
28
|
+
*
|
|
29
|
+
* @extends EntityBase - Tenant-specific entity with audit fields
|
|
30
|
+
*/
|
|
31
|
+
export declare class RecimEntry extends EntityBase {
|
|
32
|
+
/**
|
|
33
|
+
* Person relation (GlobalBase)
|
|
34
|
+
*
|
|
35
|
+
* References the person in this RECIM entry.
|
|
36
|
+
* Eagerly loaded for easy access to person details.
|
|
37
|
+
*/
|
|
38
|
+
person: Person;
|
|
39
|
+
/**
|
|
40
|
+
* Observaciones (Observations/Notes)
|
|
41
|
+
*
|
|
42
|
+
* Optional text field for any relevant observations or notes
|
|
43
|
+
* about this RECIM entry.
|
|
44
|
+
*/
|
|
45
|
+
observaciones?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Registration Timestamp
|
|
48
|
+
*
|
|
49
|
+
* When this entry was registered in the RECIM system.
|
|
50
|
+
* Automatically set on creation if not provided.
|
|
51
|
+
*/
|
|
52
|
+
registeredAt?: Date;
|
|
53
|
+
/**
|
|
54
|
+
* Photo URL
|
|
55
|
+
*
|
|
56
|
+
* Optional URL to a photo of the person for visual identification.
|
|
57
|
+
*/
|
|
58
|
+
photoUrl?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Status
|
|
61
|
+
*
|
|
62
|
+
* Current status of this RECIM entry.
|
|
63
|
+
* Default: ACTIVE
|
|
64
|
+
*/
|
|
65
|
+
status: RecimStatus;
|
|
66
|
+
/**
|
|
67
|
+
* Status Reason
|
|
68
|
+
*
|
|
69
|
+
* Optional reason for status change (e.g., why it was inactivated).
|
|
70
|
+
*/
|
|
71
|
+
statusReason?: string;
|
|
72
|
+
/**
|
|
73
|
+
* Fingerprints Relation
|
|
74
|
+
*
|
|
75
|
+
* One-to-many relation with RecimFingerprint entities.
|
|
76
|
+
* CASCADE delete: when entry is deleted, fingerprints are also deleted.
|
|
77
|
+
* Lazy loaded to optimize list queries - load explicitly when needed.
|
|
78
|
+
*/
|
|
79
|
+
fingerprints?: RecimFingerprint[];
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=recim-entry.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recim-entry.entity.d.ts","sourceRoot":"","sources":["../../../src/entities/recim/recim-entry.entity.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;;;;;GAOG;AACH,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAGa,UAAW,SAAQ,UAAU;IACxC;;;;;OAKG;IAGH,MAAM,EAAG,MAAM,CAAC;IAEhB;;;;;OAKG;IAEH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;OAKG;IAEH,YAAY,CAAC,EAAE,IAAI,CAAC;IAEpB;;;;OAIG;IAEH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IAMH,MAAM,EAAG,WAAW,CAAC;IAErB;;;;OAIG;IAEH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;IAKH,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACnC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
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.RecimEntry = exports.RecimStatus = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
const _base_1 = require("../base/_base");
|
|
15
|
+
const person_entity_1 = require("../person/person.entity");
|
|
16
|
+
const recim_fingerprint_entity_1 = require("./recim-fingerprint.entity");
|
|
17
|
+
/**
|
|
18
|
+
* RECIM Status Enum
|
|
19
|
+
*
|
|
20
|
+
* Defines the lifecycle status of a RECIM entry:
|
|
21
|
+
* - ACTIVE: Entry is active and current
|
|
22
|
+
* - INACTIVE: Entry has been deactivated
|
|
23
|
+
* - ARCHIVED: Entry has been archived for historical purposes
|
|
24
|
+
*/
|
|
25
|
+
var RecimStatus;
|
|
26
|
+
(function (RecimStatus) {
|
|
27
|
+
RecimStatus["ACTIVE"] = "ACTIVE";
|
|
28
|
+
RecimStatus["INACTIVE"] = "INACTIVE";
|
|
29
|
+
RecimStatus["ARCHIVED"] = "ARCHIVED";
|
|
30
|
+
})(RecimStatus || (exports.RecimStatus = RecimStatus = {}));
|
|
31
|
+
/**
|
|
32
|
+
* RECIM Entry Entity
|
|
33
|
+
*
|
|
34
|
+
* Represents a permanent biometric registry entry for a person.
|
|
35
|
+
* Unlike accreditations, RECIM entries are not event-based and have no expiration.
|
|
36
|
+
*
|
|
37
|
+
* Key Features:
|
|
38
|
+
* - Permanent registry (no event dependency)
|
|
39
|
+
* - No approval workflow required
|
|
40
|
+
* - Status lifecycle management (ACTIVE/INACTIVE/ARCHIVED)
|
|
41
|
+
* - Tenant-specific with full audit trail
|
|
42
|
+
*
|
|
43
|
+
* @extends EntityBase - Tenant-specific entity with audit fields
|
|
44
|
+
*/
|
|
45
|
+
let RecimEntry = class RecimEntry extends _base_1.EntityBase {
|
|
46
|
+
};
|
|
47
|
+
exports.RecimEntry = RecimEntry;
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, typeorm_1.ManyToOne)(() => person_entity_1.Person, { eager: true, nullable: false }),
|
|
50
|
+
(0, typeorm_1.JoinColumn)({ name: 'person_id' }),
|
|
51
|
+
__metadata("design:type", person_entity_1.Person)
|
|
52
|
+
], RecimEntry.prototype, "person", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], RecimEntry.prototype, "observaciones", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, typeorm_1.Column)({ name: 'registered_at', type: 'timestamp', nullable: true }),
|
|
59
|
+
__metadata("design:type", Date)
|
|
60
|
+
], RecimEntry.prototype, "registeredAt", void 0);
|
|
61
|
+
__decorate([
|
|
62
|
+
(0, typeorm_1.Column)({ name: 'photo_url', type: 'varchar', length: 500, nullable: true }),
|
|
63
|
+
__metadata("design:type", String)
|
|
64
|
+
], RecimEntry.prototype, "photoUrl", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
(0, typeorm_1.Column)({
|
|
67
|
+
type: 'enum',
|
|
68
|
+
enum: RecimStatus,
|
|
69
|
+
default: RecimStatus.ACTIVE,
|
|
70
|
+
}),
|
|
71
|
+
__metadata("design:type", String)
|
|
72
|
+
], RecimEntry.prototype, "status", void 0);
|
|
73
|
+
__decorate([
|
|
74
|
+
(0, typeorm_1.Column)({ name: 'status_reason', type: 'text', nullable: true }),
|
|
75
|
+
__metadata("design:type", String)
|
|
76
|
+
], RecimEntry.prototype, "statusReason", void 0);
|
|
77
|
+
__decorate([
|
|
78
|
+
(0, typeorm_1.OneToMany)(() => recim_fingerprint_entity_1.RecimFingerprint, (fingerprint) => fingerprint.recimEntry, {
|
|
79
|
+
cascade: true,
|
|
80
|
+
eager: false, // Changed to false for performance optimization
|
|
81
|
+
}),
|
|
82
|
+
__metadata("design:type", Array)
|
|
83
|
+
], RecimEntry.prototype, "fingerprints", void 0);
|
|
84
|
+
exports.RecimEntry = RecimEntry = __decorate([
|
|
85
|
+
(0, typeorm_1.Entity)('recim_entry'),
|
|
86
|
+
(0, typeorm_1.Index)('recim_entry_person_idx', ['person']),
|
|
87
|
+
(0, typeorm_1.Index)('recim_entry_status_idx', ['status'])
|
|
88
|
+
], RecimEntry);
|
|
89
|
+
//# sourceMappingURL=recim-entry.entity.js.map
|
|
@@ -0,0 +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,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,113 @@
|
|
|
1
|
+
import { EntityBase } from '../base/_base';
|
|
2
|
+
import { RecimEntry } from './recim-entry.entity';
|
|
3
|
+
import { FingerPosition, QualityMetrics } from '../accreditation/fingerprint.entity';
|
|
4
|
+
/**
|
|
5
|
+
* RECIM Fingerprint Entity
|
|
6
|
+
*
|
|
7
|
+
* Stores biometric fingerprint data for a RECIM entry.
|
|
8
|
+
* Includes both ANSI-378-2004 and ISO-19794-2-2005 templates,
|
|
9
|
+
* optional RAW image for audit, and quality metrics.
|
|
10
|
+
*
|
|
11
|
+
* Key Features:
|
|
12
|
+
* - ANSI-378-2004 template standard (~200-800 bytes)
|
|
13
|
+
* - ISO-19794-2-2005 template standard (~200-800 bytes)
|
|
14
|
+
* - Optional RAW image for audit purposes (~150KB)
|
|
15
|
+
* - Quality metrics validation (JSONB)
|
|
16
|
+
* - Device metadata tracking
|
|
17
|
+
* - CASCADE delete with RecimEntry
|
|
18
|
+
*
|
|
19
|
+
* @extends EntityBase - Tenant-specific entity with audit fields
|
|
20
|
+
*/
|
|
21
|
+
export declare class RecimFingerprint extends EntityBase {
|
|
22
|
+
/**
|
|
23
|
+
* RECIM Entry Relation
|
|
24
|
+
*
|
|
25
|
+
* References the parent RECIM entry.
|
|
26
|
+
* CASCADE delete: when entry is deleted, fingerprints are also deleted.
|
|
27
|
+
*/
|
|
28
|
+
recimEntry: RecimEntry;
|
|
29
|
+
/**
|
|
30
|
+
* Finger Position
|
|
31
|
+
*
|
|
32
|
+
* Indicates which finger was captured.
|
|
33
|
+
* Default: RIGHT_INDEX
|
|
34
|
+
*/
|
|
35
|
+
fingerPosition: FingerPosition;
|
|
36
|
+
/**
|
|
37
|
+
* ANSI-378-2004 Template
|
|
38
|
+
*
|
|
39
|
+
* Biometric template in ANSI-378-2004 format.
|
|
40
|
+
* Stored as binary data (bytea) for efficiency.
|
|
41
|
+
* Typical size: 200-800 bytes
|
|
42
|
+
*/
|
|
43
|
+
templateAnsi: Buffer;
|
|
44
|
+
/**
|
|
45
|
+
* ISO-19794-2-2005 Template
|
|
46
|
+
*
|
|
47
|
+
* Biometric template in ISO-19794-2-2005 format.
|
|
48
|
+
* Stored as binary data (bytea) for efficiency.
|
|
49
|
+
* Typical size: 200-800 bytes
|
|
50
|
+
*/
|
|
51
|
+
templateIso: Buffer;
|
|
52
|
+
/**
|
|
53
|
+
* RAW Image
|
|
54
|
+
*
|
|
55
|
+
* Optional RAW 8-bit grayscale fingerprint image.
|
|
56
|
+
* Stored for audit purposes only.
|
|
57
|
+
* Typical size: ~150KB
|
|
58
|
+
*/
|
|
59
|
+
rawImage?: Buffer;
|
|
60
|
+
/**
|
|
61
|
+
* Image Width
|
|
62
|
+
*
|
|
63
|
+
* Width of the captured fingerprint image in pixels.
|
|
64
|
+
* Default: 320
|
|
65
|
+
*/
|
|
66
|
+
width: number;
|
|
67
|
+
/**
|
|
68
|
+
* Image Height
|
|
69
|
+
*
|
|
70
|
+
* Height of the captured fingerprint image in pixels.
|
|
71
|
+
* Default: 480
|
|
72
|
+
*/
|
|
73
|
+
height: number;
|
|
74
|
+
/**
|
|
75
|
+
* Image DPI
|
|
76
|
+
*
|
|
77
|
+
* Dots per inch (resolution) of the captured image.
|
|
78
|
+
* Default: 500
|
|
79
|
+
*/
|
|
80
|
+
dpi: number;
|
|
81
|
+
/**
|
|
82
|
+
* Quality Metrics
|
|
83
|
+
*
|
|
84
|
+
* Comprehensive quality metrics from the capture device.
|
|
85
|
+
* Stored as JSONB for flexibility and queryability.
|
|
86
|
+
*/
|
|
87
|
+
qualityMetrics: QualityMetrics;
|
|
88
|
+
/**
|
|
89
|
+
* Capture Timestamp
|
|
90
|
+
*
|
|
91
|
+
* When this fingerprint was captured.
|
|
92
|
+
*/
|
|
93
|
+
captureTimestamp: Date;
|
|
94
|
+
/**
|
|
95
|
+
* Device Serial Number
|
|
96
|
+
*
|
|
97
|
+
* Serial number of the capture device.
|
|
98
|
+
*/
|
|
99
|
+
deviceSerial?: string;
|
|
100
|
+
/**
|
|
101
|
+
* Device Model
|
|
102
|
+
*
|
|
103
|
+
* Model name of the capture device.
|
|
104
|
+
*/
|
|
105
|
+
deviceModel?: string;
|
|
106
|
+
/**
|
|
107
|
+
* Device Vendor
|
|
108
|
+
*
|
|
109
|
+
* Vendor/manufacturer of the capture device.
|
|
110
|
+
*/
|
|
111
|
+
deviceVendor?: string;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=recim-fingerprint.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recim-fingerprint.entity.d.ts","sourceRoot":"","sources":["../../../src/entities/recim/recim-fingerprint.entity.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErF;;;;;;;;;;;;;;;;GAgBG;AACH,qBAEa,gBAAiB,SAAQ,UAAU;IAC9C;;;;;OAKG;IAMH,UAAU,EAAG,UAAU,CAAC;IAExB;;;;;OAKG;IAOH,cAAc,EAAG,cAAc,CAAC;IAEhC;;;;;;OAMG;IAEH,YAAY,EAAG,MAAM,CAAC;IAEtB;;;;;;OAMG;IAEH,WAAW,EAAG,MAAM,CAAC;IAErB;;;;;;OAMG;IAEH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IAEH,KAAK,EAAG,MAAM,CAAC;IAEf;;;;;OAKG;IAEH,MAAM,EAAG,MAAM,CAAC;IAEhB;;;;;OAKG;IAEH,GAAG,EAAG,MAAM,CAAC;IAEb;;;;;OAKG;IAEH,cAAc,EAAG,cAAc,CAAC;IAEhC;;;;OAIG;IAEH,gBAAgB,EAAG,IAAI,CAAC;IAExB;;;;OAIG;IAEH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IAEH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IAEH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1,102 @@
|
|
|
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.RecimFingerprint = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
const _base_1 = require("../base/_base");
|
|
15
|
+
const recim_entry_entity_1 = require("./recim-entry.entity");
|
|
16
|
+
const fingerprint_entity_1 = require("../accreditation/fingerprint.entity");
|
|
17
|
+
/**
|
|
18
|
+
* RECIM Fingerprint Entity
|
|
19
|
+
*
|
|
20
|
+
* Stores biometric fingerprint data for a RECIM entry.
|
|
21
|
+
* Includes both ANSI-378-2004 and ISO-19794-2-2005 templates,
|
|
22
|
+
* optional RAW image for audit, and quality metrics.
|
|
23
|
+
*
|
|
24
|
+
* Key Features:
|
|
25
|
+
* - ANSI-378-2004 template standard (~200-800 bytes)
|
|
26
|
+
* - ISO-19794-2-2005 template standard (~200-800 bytes)
|
|
27
|
+
* - Optional RAW image for audit purposes (~150KB)
|
|
28
|
+
* - Quality metrics validation (JSONB)
|
|
29
|
+
* - Device metadata tracking
|
|
30
|
+
* - CASCADE delete with RecimEntry
|
|
31
|
+
*
|
|
32
|
+
* @extends EntityBase - Tenant-specific entity with audit fields
|
|
33
|
+
*/
|
|
34
|
+
let RecimFingerprint = class RecimFingerprint extends _base_1.EntityBase {
|
|
35
|
+
};
|
|
36
|
+
exports.RecimFingerprint = RecimFingerprint;
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, typeorm_1.ManyToOne)(() => recim_entry_entity_1.RecimEntry, (entry) => entry.fingerprints, {
|
|
39
|
+
nullable: false,
|
|
40
|
+
onDelete: 'CASCADE',
|
|
41
|
+
}),
|
|
42
|
+
(0, typeorm_1.JoinColumn)({ name: 'recim_entry_id' }),
|
|
43
|
+
__metadata("design:type", recim_entry_entity_1.RecimEntry)
|
|
44
|
+
], RecimFingerprint.prototype, "recimEntry", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, typeorm_1.Column)({
|
|
47
|
+
name: 'finger_position',
|
|
48
|
+
type: 'enum',
|
|
49
|
+
enum: fingerprint_entity_1.FingerPosition,
|
|
50
|
+
default: fingerprint_entity_1.FingerPosition.RIGHT_INDEX,
|
|
51
|
+
}),
|
|
52
|
+
__metadata("design:type", String)
|
|
53
|
+
], RecimFingerprint.prototype, "fingerPosition", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, typeorm_1.Column)({ name: 'template_ansi', type: 'bytea' }),
|
|
56
|
+
__metadata("design:type", Buffer)
|
|
57
|
+
], RecimFingerprint.prototype, "templateAnsi", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, typeorm_1.Column)({ name: 'template_iso', type: 'bytea' }),
|
|
60
|
+
__metadata("design:type", Buffer)
|
|
61
|
+
], RecimFingerprint.prototype, "templateIso", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, typeorm_1.Column)({ name: 'raw_image', type: 'bytea', nullable: true }),
|
|
64
|
+
__metadata("design:type", Buffer)
|
|
65
|
+
], RecimFingerprint.prototype, "rawImage", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
(0, typeorm_1.Column)({ type: 'int', default: 320 }),
|
|
68
|
+
__metadata("design:type", Number)
|
|
69
|
+
], RecimFingerprint.prototype, "width", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, typeorm_1.Column)({ type: 'int', default: 480 }),
|
|
72
|
+
__metadata("design:type", Number)
|
|
73
|
+
], RecimFingerprint.prototype, "height", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
(0, typeorm_1.Column)({ type: 'int', default: 500 }),
|
|
76
|
+
__metadata("design:type", Number)
|
|
77
|
+
], RecimFingerprint.prototype, "dpi", void 0);
|
|
78
|
+
__decorate([
|
|
79
|
+
(0, typeorm_1.Column)({ name: 'quality_metrics', type: 'jsonb' }),
|
|
80
|
+
__metadata("design:type", Object)
|
|
81
|
+
], RecimFingerprint.prototype, "qualityMetrics", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
(0, typeorm_1.Column)({ name: 'capture_timestamp', type: 'timestamp' }),
|
|
84
|
+
__metadata("design:type", Date)
|
|
85
|
+
], RecimFingerprint.prototype, "captureTimestamp", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, typeorm_1.Column)({ name: 'device_serial', length: 100, nullable: true }),
|
|
88
|
+
__metadata("design:type", String)
|
|
89
|
+
], RecimFingerprint.prototype, "deviceSerial", void 0);
|
|
90
|
+
__decorate([
|
|
91
|
+
(0, typeorm_1.Column)({ name: 'device_model', length: 100, nullable: true }),
|
|
92
|
+
__metadata("design:type", String)
|
|
93
|
+
], RecimFingerprint.prototype, "deviceModel", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
(0, typeorm_1.Column)({ name: 'device_vendor', length: 100, nullable: true }),
|
|
96
|
+
__metadata("design:type", String)
|
|
97
|
+
], RecimFingerprint.prototype, "deviceVendor", void 0);
|
|
98
|
+
exports.RecimFingerprint = RecimFingerprint = __decorate([
|
|
99
|
+
(0, typeorm_1.Entity)('recim_fingerprint'),
|
|
100
|
+
(0, typeorm_1.Index)('recim_fingerprint_entry_idx', ['recimEntry'])
|
|
101
|
+
], RecimFingerprint);
|
|
102
|
+
//# sourceMappingURL=recim-fingerprint.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recim-fingerprint.entity.js","sourceRoot":"","sources":["../../../src/entities/recim/recim-fingerprint.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAMiB;AACjB,yCAA2C;AAC3C,6DAAkD;AAClD,4EAAqF;AAErF;;;;;;;;;;;;;;;;GAgBG;AAGI,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,kBAAU;CA6H/C,CAAA;AA7HY,4CAAgB;AAY3B;IALC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,+BAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE;QAC1D,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,SAAS;KACpB,CAAC;IACD,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;8BAC1B,+BAAU;oDAAC;AAcxB;IANC,IAAA,gBAAM,EAAC;QACN,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,mCAAc;QACpB,OAAO,EAAE,mCAAc,CAAC,WAAW;KACpC,CAAC;;wDAC8B;AAUhC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8BAClC,MAAM;sDAAC;AAUtB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8BAClC,MAAM;qDAAC;AAUrB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAClD,MAAM;kDAAC;AASlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;;+CACvB;AASf;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;;gDACtB;AAShB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;;6CACzB;AASb;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;;wDACnB;AAQhC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;8BACtC,IAAI;0DAAC;AAQxB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sDACzC;AAQtB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACzC;AAQrB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sDACzC;2BA5HX,gBAAgB;IAF5B,IAAA,gBAAM,EAAC,mBAAmB,CAAC;IAC3B,IAAA,eAAK,EAAC,6BAA6B,EAAE,CAAC,YAAY,CAAC,CAAC;GACxC,gBAAgB,CA6H5B"}
|
|
@@ -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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sigmatech/pergamo",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.57",
|
|
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",
|