Quellcode durchsuchen

adjustments and enhancements

enzo vor 1 Monat
Ursprung
Commit
adff55fcf4

+ 43 - 23
apps/fis-verification/src/fis-verification.service.ts

@@ -4,13 +4,14 @@ import { interval, Observable, Subject } from 'rxjs';
 import * as net from 'net'
 import { ConfigService } from '@nestjs/config';
 import { connectToAfisJava } from 'libs/java/afis.utils';
-import { Fingerprint, FingerprintPayload, FingerprintPayloadUI, FisMessage, JavaResponse, PersonFingerprintData } from 'libs';
+import { Fingerprint, FingerprintPayload, FingerprintPayloadUI, FisMessage, JavaResponse, PersonFingerprintData, TransparencyResponseData } from 'libs';
 import { v1 as uuid } from 'uuid'
 
 @Injectable()
 export class FisVerificationService {
   private port: number
   private host: string
+  private edgeScoreThreshold: number
   private javaClient: net.Socket
   private incomingMessageFromJava!: Subject<JavaResponse>
   private registeredFingerprintData: Fingerprint[] = []
@@ -21,15 +22,47 @@ export class FisVerificationService {
     private configService: ConfigService
   ) {
     // Set up incoming responses or messages from TCP Java
+    this.incomingMessageFromJava = new Subject()
     this.port = this.configService.get<number>('afis.tcpPort') as number
     this.host = this.configService.get<string>('afis.host') as string
+    this.edgeScoreThreshold = this.configService.get<number>('edgeScore.mark') as number
+
+    this.handleJavaResponse()
 
     this.javaClient = connectToAfisJava(this.host, this.port)
     this.javaClient.on(`data`, (data) => {
       let message: JavaResponse = JSON.parse(data.toString())
-      console.log(message)
-      console.log(`Java server response: ${message.message}`)
-      if (message.operation == `QualityAssurance`) {
+      this.incomingMessageFromJava.next(message)
+    })
+  }
+
+  public handleMessage(message: FisMessage): void {
+    console.log(`Sending fingerprint data to Java verification....`)
+    let payload: FingerprintPayloadUI = message.data as FingerprintPayloadUI
+    let command: FingerprintPayload = {
+      ...payload,
+      fpTemplateArray: this.registeredFingerprintData
+    }
+    this.javaClient.write(JSON.stringify(command) + `\n`)
+  }
+
+  private populateRegisteredFpData(): void {
+    // let command: FingerprintPayload = {
+    //   id: uuid(),
+    //   cmd: `Populate Registered Prints`,
+    //   date: new Date(),
+    //   personInfo: null,
+    //   fpScan: ``,
+    //   fingerPosition: 0,
+    //   fpTemplateArray: this.registeredFingerprintData
+    // }
+    // this.javaClient.write(JSON.stringify(command))
+  }
+
+  private handleJavaResponse(): void {
+    this.incomingMessageFromJava.subscribe(message => {
+      // console.log(`Java server response: ${message.message}`)
+      if (message.operation == `Quality Assurance`) {
         let response: FisMessage = {
           header: {
             messageID: uuid(),
@@ -37,17 +70,18 @@ export class FisVerificationService {
           },
           data: {
             id: uuid(),
-            cmd: `QualityAssurance`,
-            message: `${message.data.name} finger position ${message.data.fingerprints[0].fpPosition} edge score is ${(message.edgeScore > 250 ? `good` : `bad`)}`,
+            cmd: `Quality Assurance`,
+            message: `${message.data.name} finger position ${message.data.fingerprints[0].fpPosition} edge score is ${message.edgeScore > this.edgeScoreThreshold ? `good` : `bad`}`,
             data: {
               score: message.score,
               person: message.data.name,
               fpPosition: message.data.fingerprints[0].fpPosition,
-              fpQuality: (message.score > 250 ? `good` : `bad`)
-            }
+              fpQuality: message.edgeScore > this.edgeScoreThreshold ? `good` : `bad`
+            } as TransparencyResponseData
           }
         }
-        console.log(`Sending back to fingerpint nest`)
+        // console.log(`Sending back to fingerpint nest`)
+        console.log(response)
         this.fingerprintClient.emit(`verification`, response)
       }
 
@@ -57,23 +91,9 @@ export class FisVerificationService {
         // console.log(this.registeredFingerprintData)
         console.log(`${this.registeredFingerprintData.length} registered print.`)
       }
-      // this.incomingMessageFromJava.next(message)
     })
   }
 
-  public handleMessage(message: FisMessage): void {
-    console.log(`Sending fingerprint data to Java verification....`)
-    let payload: FingerprintPayloadUI = message.data as FingerprintPayloadUI
-    let command: FingerprintPayload = {
-      ...payload,
-      fpTemplateArray: this.registeredFingerprintData
-    }
-    this.javaClient.write(JSON.stringify(command) + `\n`)
-    // let data = JSON.parse(message)
-    // console.log(data)
-    // this.javaClient.write(JSON.stringify(extractionMessage) + `\n`)
-  }
-
 }
 
 /* Reason based on ChatGPT: Why ClientProxy.send() or emit() won't work 

+ 3 - 0
config/configurations.ts

@@ -19,5 +19,8 @@ export default () => ({
     afis: {
         host: process.env.HOST,
         tcpPort: process.env.AFIS_TCP_PORT
+    },
+    edgeScore: {
+        mark: 250
     }
 });

+ 1 - 1
libs/java/FingerprintDataVerification

@@ -1 +1 @@
-Subproject commit 66446460b91c5187bc238c01b0b61c967b6a1dc8
+Subproject commit 75313dd9f51c7030cc4f14fef4f882da1c312434

+ 9 - 2
libs/types/interface.ts

@@ -31,7 +31,7 @@ export interface FisMessage {
 
 export interface FingerprintPayloadUI {
     id: string,
-    cmd: `Registration` | `Verification` | `QualityAssurance`,
+    cmd: `Registration` | `Verification` | `Quality Assurance` | `Populate Registered Prints`,
     date: Date,
     personInfo: PersonInfo,
     fpScan: string,
@@ -43,7 +43,7 @@ export interface FingerprintPayload extends FingerprintPayloadUI {
 
 export interface JavaResponse {
     id: string,
-    operation: `Registration` | `Verification` | `QualityAssurance`,
+    operation: `Registration` | `Verification` | `Quality Assurance`,
     status: `Failed` | `Success` | `Registered` | `Not Registered`,
     message: string,
     data: PersonFingerprintData,
@@ -70,3 +70,10 @@ export interface PersonInfo {
     org: string,
     code: number
 }
+
+export interface TransparencyResponseData {
+    score: number,
+    person: string,
+    fpPosition: number,
+    fpQuality: `good` | 'bad'
+}