Nodeflux Central
Face Match Logs

Face Match Logs

Pantau log hasil pencocokan wajah otomatis dari real-time matching engine — lengkap dengan filter status, source, dan referensi API log-investigate.

Pengenalan

Halaman Face Match Logs (/face-match-logs) menampilkan log hasil pencocokan wajah yang dihasilkan secara otomatis oleh real-time matching engine Visionaire. Setiap kali kamera mendeteksi wajah dan sistem mencocokkannya dengan database enrollment, satu entri log akan dicatat — terlepas dari apakah cocok ditemukan atau tidak.

Perbedaan dengan Face Search Logs

Kedua fitur ini sering disalahpahami sebagai hal yang sama. Berikut perbedaan mendasarnya:

AspekFace Match LogsFace Search Logs
PemicuOtomatis — kamera mendeteksi wajahManual — operator melakukan pencarian
SumberMatching engine (source: automatic)UI pencarian atau API (source: manual)
Endpoint/fremisn/v2/face/match, /fremisn/v1/face/recognition/gateway/v1/util/face-search/demography
VolumeTinggi — mengikuti frekuensi deteksi kameraRendah — hanya ketika ada aksi pencarian
Audience utamaOperator monitoring, admin akurasiInvestigator, petugas audit
Filter sourceautomaticmanual

Secara teknis, Face Match Logs dan Face Search Logs keduanya menggunakan endpoint API yang sama (/api/log-investigate). Perbedaannya ada pada nilai filter source: gunakan source=automatic untuk melihat log pencocokan otomatis (Face Match), dan source=manual untuk log pencarian manual (Face Search).

Halaman Face Match Logs saat ini dalam tahap coming soon pada antarmuka Lenz Dashboard. Fungsionalitas penuh tersedia melalui API /api/log-investigate dengan filter yang sesuai. Halaman ini akan diperbarui saat UI telah tersedia.


Cara Menggunakan

Mengakses Face Match Logs melalui API

Karena halaman UI masih dalam pengembangan, data dapat diakses langsung melalui API log-investigate.

Siapkan autentikasi

Gunakan Token atau API Key Anda. Lihat Otentikasi untuk mendapatkan Token.

export TOKEN="your-jwt-token"
export API_URL="https://your-lenz-instance"

Kirim request dengan filter source=automatic

Filter source=automatic memastikan Anda hanya melihat log dari matching engine, bukan dari pencarian manual.

curl "${API_URL}/api/log-investigate?filter[source]=automatic&filter[type]=face&page=1&limit=20" \
  -H "Authorization: Bearer ${TOKEN}"

Tambahkan filter tambahan sesuai kebutuhan

Kombinasikan filter untuk mempersempit hasil. Misalnya, untuk melihat hanya log yang berhasil (status 2xx) dari metode face-match:

curl "${API_URL}/api/log-investigate?filter[source]=automatic&filter[type]=face&filter[status_code]=200&filter[search_method]=face-match&page=1&limit=20" \
  -H "Authorization: Bearer ${TOKEN}"

Analisis respons

Setiap entri log menyertakan detail lengkap: IP address pemanggi, path endpoint yang digunakan, status code, metadata pengguna atau API key, serta payload request dan response dalam format JSON.


Memfilter Log Berdasarkan Status

Sistem mendukung filter status code dalam beberapa format untuk fleksibilitas analisis akurasi matching:

Filter berdasarkan keluarga status (family)

Gunakan nilai representatif untuk memfilter seluruh keluarga status code:

  • filter[status_code]=200 → semua respons sukses (200–299)
  • filter[status_code]=400 → semua error sisi klien (400–499)
  • filter[status_code]=500 → semua error sisi server (500–599)
# Hanya log dengan respons sukses
curl "${API_URL}/api/log-investigate?filter[source]=automatic&filter[status_code]=200" \
  -H "Authorization: Bearer ${TOKEN}"

Filter berdasarkan status code spesifik

Untuk analisis yang lebih presisi, gunakan kode eksak atau beberapa kode dipisah koma:

# Hanya 401 dan 403 (unauthorized dan forbidden)
curl "${API_URL}/api/log-investigate?filter[source]=automatic&filter[status_code]=401,403" \
  -H "Authorization: Bearer ${TOKEN}"

Kombinasikan dengan filter lain

# Log face-match gagal dari IP tertentu
curl "${API_URL}/api/log-investigate?filter[source]=automatic&filter[type]=face&filter[status_code]=400&filter[ip_address]=192.168.1.50" \
  -H "Authorization: Bearer ${TOKEN}"

Fitur Utama

Deteksi Tipe Otomatis

Sistem secara otomatis mengklasifikasikan log sebagai tipe 'face' atau 'plate' berdasarkan URL path yang dipanggil — tanpa konfigurasi manual per endpoint.

Filter Source: Automatic vs Manual

Pisahkan log matching otomatis dari kamera dan log pencarian manual operator menggunakan filter source=automatic atau source=manual.

Filter Status Code Cerdas

Filter berdasarkan keluarga status (2xx, 4xx, 5xx), kode eksak, atau beberapa kode sekaligus — dioptimalkan dengan range query SQL untuk performa tinggi.

Metadata Pengguna Lengkap

Setiap log mencatat siapa yang memanggil endpoint: nama pengguna, user_id, tipe autentikasi (token atau api_key), dan nama API key yang digunakan.

Payload Request dan Response

Log menyimpan payload lengkap request dan response dalam format JSON, termasuk gambar request yang dienkode — berguna untuk investigasi false positive atau debugging.

Statistik Sukses dan Gagal

Endpoint statistik terpisah menyediakan agregasi total_success dan total_failed berdasarkan filter yang diterapkan, untuk analisis akurasi matching secara cepat.


API Reference

Semua endpoint memerlukan autentikasi. Sertakan header Authorization: Bearer <token> atau X-Api-Key: <key> pada setiap request. Lihat Otentikasi untuk detail.


GET /api/log-investigate — Daftar Log

Mengambil daftar log investigate dengan pagination, filter, dan pengurutan. Untuk Face Match Logs, selalu sertakan filter[source]=automatic dan filter[type]=face.

GET /api/log-investigate?filter[source]=automatic&filter[type]=face&page=1&limit=20
Authorization: Bearer <token>

Query Parameters:

Prop

Type

Contoh request:

cURL — Face Match Logs (sukses saja)
curl "${API_URL}/api/log-investigate?filter[source]=automatic&filter[type]=face&filter[status_code]=200&page=1&limit=10" \
  -H "Authorization: Bearer ${TOKEN}"

Contoh response:

{
  "ok": true,
  "message": "success",
  "result": {
    "limit": 10,
    "current_page": 1,
    "total_data": 842,
    "total_page": 85,
    "log_investigates": [
      {
        "id": 10241,
        "type": "face",
        "method": "POST",
        "search_method": "face-match",
        "ip_address": "10.0.1.15",
        "location": "Gate Utara - Kamera 01",
        "path": "/fremisn/v2/face/match",
        "request": {},
        "request_image": "<base64_gambar_wajah>",
        "response": {
          "candidates": [
            { "face_id": "abc123", "similarity": 0.94, "variation": "var-01" }
          ]
        },
        "status_code": 200,
        "user_metadata": {
          "name": "Integration Service A",
          "user_id": 5,
          "auth_type": "api_key",
          "api_key_name": "gate-north-service"
        },
        "created_at": "2024-06-15T09:23:11+07:00"
      }
    ]
  }
}

GET /api/log-investigate/statistics — Statistik Sukses/Gagal

Mengambil agregasi jumlah request sukses dan gagal berdasarkan filter yang ditetapkan. Berguna untuk dashboard monitoring akurasi matching.

GET /api/log-investigate/statistics?filter[source]=automatic&filter[type]=face
Authorization: Bearer <token>

Query Parameters:

Prop

Type

Contoh request:

cURL — Statistik matching hari ini
curl "${API_URL}/api/log-investigate/statistics?filter[source]=automatic&filter[type]=face&filter[timestamp_from]=2024-06-15T00:00:00+07:00&filter[timestamp_to]=2024-06-15T23:59:59+07:00" \
  -H "Authorization: Bearer ${TOKEN}"

Contoh response:

{
  "ok": true,
  "message": "success",
  "result": {
    "total_success": 7341,
    "total_failed": 128
  }
}

GET /api/log-investigate/user-access-statistics — Statistik per Pengguna

Mengambil ranking akses berdasarkan pengguna atau layanan yang paling banyak melakukan face matching.

GET /api/log-investigate/user-access-statistics?filter[source]=automatic&filter[type]=face
Authorization: Bearer <token>

Contoh response:

{
  "ok": true,
  "message": "success",
  "result": [
    { "name": "gate-north-service", "total_access": 4210 },
    { "name": "lobby-integration", "total_access": 3131 },
    { "name": "parking-system", "total_access": 128 }
  ]
}

Header Kontrol Source

Untuk sistem yang memanggil API matching engine secara langsung, source log dapat dikontrol via header request:

Prop

Type

Contoh — memanggil matching engine dengan source automatic
curl -X POST "${API_URL}/fremisn/v2/face/match" \
  -H "X-Api-Key: ${API_KEY}" \
  -H "X-Search-Source: automatic" \
  -H "X-Search-Method: face-match" \
  -H "Content-Type: application/json" \
  -d '{"image": "<base64>"}'

Header X-Search-Source dikontrol oleh middleware LogInvestigateActionAuto() di API Gateway. Sistem yang terintegrasi langsung ke matching engine harus menyertakan header ini agar log tercatat dengan source yang tepat.


Tips dan Troubleshooting


Selanjutnya

On this page