Lanjut ke konten
Samkarsa Logbook

v1.0.0-054 — Fast-Path Entity-Level Semantic Normalizer & Smart Correction Memory

Implementasi sistem normalisasi semantik per-entitas (<10ms) berbasis riwayat koreksi pengguna (OCRAliasMapping) dan perbaikan alur pembacaan ulang nota setelah penghapusan transaksi di jurnal.

1mnt baca

  • Tabel Baru ocr_alias_mappings (models/ocr.py):
    • Menyimpan pasangan kata mentah OCR (raw_pattern) vs kata hasil validasi pengguna (corrected_value) untuk tipe entitas merchant, product_name, dan uom.
    • Dilengkapi confidence_count yang otomatis bertambah setiap kali pengguna memvalidasi koreksi serupa.
  • Service Normalizer (app/services/ocr_normalizer.py):
    • record_ocr_entity_aliases(): Secara otomatis mengekstrak selisih koreksi pengguna saat transaksi disimpan dan mencatatnya ke memori alias.
    • apply_ocr_entity_aliases(): Fast-path similarity matching (<10ms) menggunakan algoritma string similarity (≥85%\ge 85\%). Setiap nama supplier atau item yang memiliki kemiripan dengan riwayat koreksi masa lalu langsung di-auto-correct sebelum disajikan ke pengguna.
    • Zero token cost: Berjalan instan di layer aplikasi/database tanpa membebani kuota API Vision/Embedding.

  • Smart Correction Reuse (api/v1/ocr.py):
    • Jika pengguna meng-upload ulang nota yang sama setelah transaksinya dihapus di jurnal (misal karena salah tanggal posting), sistem TIDAK LAGI membuang data koreksi lama.
    • Sistem otomatis me-reuse corrected_data tersimpan sehingga hasil editan manual pengguna sebelumnya tidak hilang dan tidak perlu diketik ulang dari nol.

  • Prioritaskan corrected_data (useOcrUpload.ts):
    • Membaca task.corrected_data || task.extracted_data saat menyusun teks input transaksi.
    • Memberikan indikator notifikasi toast cerdas ketika data koreksi lama dimuat (“✨ Koreksi Tersimpan Dimuat”) atau ketika normalisasi semantik AI aktif (“🎯 Normalisasi Semantik AI Aktif”).

  1. sajen/app/models/ocr.py
  2. sajen/app/models/__init__.py
  3. sajen/app/services/ocr_normalizer.py
  4. sajen/app/workers/ocr_worker.py
  5. sajen/app/api/v1/ocr.py
  6. blonjo/src/pages/transaction/hooks/useOcrUpload.ts