From 68620c977d8fc0e0f42a9b370ff757cd9f60c3f2 Mon Sep 17 00:00:00 2001
From: "a.croix" <croix.alexandre@gmail.com>
Date: Wed, 19 May 2021 17:32:46 +0200
Subject: [PATCH] Add progression track during evidences collection

---
 app/Jobs/WowaJob.php                                  | 11 ++++++++---
 app/Log.php                                           | 11 +++++++++--
 app/Logging/LogFormatter.php                          |  4 ++--
 app/Wowa.php                                          |  4 +++-
 .../2021_05_06_075557_create_logs_table.php           |  2 +-
 5 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/app/Jobs/WowaJob.php b/app/Jobs/WowaJob.php
index 576ed6e..2b095d2 100644
--- a/app/Jobs/WowaJob.php
+++ b/app/Jobs/WowaJob.php
@@ -66,12 +66,15 @@ class WowaJob implements ShouldQueue
         $processor = new LogProcessor();
         $processor->setJobId($this->wowa->id);
         $logg->pushProcessor($processor);
-        $logg->info("Begin find all related evidences");
 
 
         try {
-            Feedback::chunk(100, function ($feedbacks) {
+            $cnt = 0;
+            $this->wowa->status = Wowa::STATE_COLLECTION;
+            $this->wowa->save();
+            Feedback::chunk(100, function ($feedbacks) use ($cnt) {
                 foreach ($feedbacks as $feed) {
+                    $cnt++;
                     $evidence_references = $feed->report()->references;
                     $this->is_true_alert[] = $feed->is_true_alert;
                     $scores_references = [];
@@ -79,6 +82,7 @@ class WowaJob implements ShouldQueue
                         $scores_references[] = Mark::get()->findEvidenceById($evidence_reference)->score;
                     }
                     $this->evidences[] = $scores_references;
+                    \Log::info($cnt . " | Evidences collection");
                 }
             });
         } catch (\Exception $e) {
@@ -86,7 +90,6 @@ class WowaJob implements ShouldQueue
             $logg->error("Error during retrieving evidences");
             $this->wowa->save();
         }
-
         $training_prameters = new TrainerParameters(
             $logg,
             $this->wowa->population,
@@ -97,6 +100,8 @@ class WowaJob implements ShouldQueue
             TrainerParameters::INITIAL_POPULATION_GENERATION_RANDOM
         );
         $trainer = new Trainer($training_prameters, new SolutionDistance(count($this->evidences[0])));
+        $this->wowa->status = Wowa::STATE_RUNNING;
+        $this->wowa->save();
         try {
             $solution = $trainer->run($this->evidences, $this->is_true_alert);
         } catch (\Exception $e) {
diff --git a/app/Log.php b/app/Log.php
index 87796c6..226b4bb 100644
--- a/app/Log.php
+++ b/app/Log.php
@@ -18,8 +18,15 @@ class Log extends Model
         if (!is_object($logs)) {
             return "Calculation in progress...";
         }
-        $generation =  $logs->generation + 1;
+        if ($wowa->status == Wowa::STATE_COLLECTION) {
+            $result = 'Evidences collection : ';
+        } elseif ($wowa->status == Wowa::STATE_RUNNING) {
+            $result = 'Training : ';
+        } else {
+            $result = 'Error';
+        }
+        $progression =  $logs->progression + 1;
         $generation_number = $wowa->generation_number;
-        return ($generation / $generation_number) * 100;
+        return $result . (($progression / $generation_number) * 100);
     }
 }
diff --git a/app/Logging/LogFormatter.php b/app/Logging/LogFormatter.php
index e595b3f..e37fcde 100644
--- a/app/Logging/LogFormatter.php
+++ b/app/Logging/LogFormatter.php
@@ -23,8 +23,8 @@ class LogFormatter extends NormalizerFormatter
         $el = $record['extra'];
         $el['level'] = strtolower($record['level_name']);
         $el['message'] = $record['message'];
-        $generation = substr($record['message'], 0, strpos($record['message'], ' | Fitness'));
-        $el['generation'] = (int)$generation;
+        $progression = substr($record['message'], 0, strpos($record['message'], ' | '));
+        $el['progression'] = (int)$progression;
 
         return $el;
     }
diff --git a/app/Wowa.php b/app/Wowa.php
index 82ab848..9bf2f2d 100644
--- a/app/Wowa.php
+++ b/app/Wowa.php
@@ -8,6 +8,7 @@ class Wowa extends Model
 {
     const STATE_CREATED = "CREATED";
     const STATE_QUEUED = "QUEUED";
+    const STATE_COLLECTION = "DATA COLLECTION";
     const STATE_RUNNING = "RUNNING";
     const STATE_SUCCESS = "SUCCESS";
     const STATE_FAILED = "FAILED";
@@ -15,7 +16,8 @@ class Wowa extends Model
     public static $status_classes = [
         self::STATE_SUCCESS => "btn-success",
         self::STATE_FAILED => "btn-danger",
-        self::STATE_RUNNING => "btn-warning"
+        self::STATE_RUNNING => "btn-warning",
+        self::STATE_COLLECTION => "btn-warning"
     ];
 
 
diff --git a/database/migrations/2021_05_06_075557_create_logs_table.php b/database/migrations/2021_05_06_075557_create_logs_table.php
index 9736dea..9a44113 100644
--- a/database/migrations/2021_05_06_075557_create_logs_table.php
+++ b/database/migrations/2021_05_06_075557_create_logs_table.php
@@ -17,7 +17,7 @@ class CreateLogsTable extends Migration
             $table->id();
             $table->timestamps();
             $table->enum('level', ['emergency', 'alert', 'critical', 'error', 'warning', 'notice', 'info', 'debug']);
-            $table->integer('generation')->nullable();
+            $table->integer('progression')->nullable();
             $table->text('message')->nullable();
             $table->text('user_id')->nullable();
             $table->integer('job_id')->nullable();
-- 
GitLab