Files
gomag-vending/api
Claude Agent 2f593c30f6 feat(anaf-dedup): ANAF partner dedup + address fix + UI enrichment
Prevent partner duplicates via ANAF CUI verification and dual PL/SQL
search. Fix address matching with street-level comparison and diacritics
normalization. Show partner/address comparison in order detail modal.

- New anaf_service.py: batch ANAF API client with chunking, retry, cache
- PL/SQL: dual CUI search (bare/RO+bare/RO space+bare), 3-tier address
  search (street+city+id_loc → city+id_loc → create), strip_diacritics
  at storage for addresses and partner names
- SQLite: anaf_cache table, 12 new order columns for partner/address data
- import_service: cod_fiscal_override param, return partner/address from Oracle
- sync_service: ANAF batch integration, denomination mismatch detection,
  cache pre-population trigger
- Router: enriched order_detail with partner_info + addresses JSON
- UI: collapsible Detalii Partener + Adrese Comparativ sections in modal,
  auto-expand on mismatch, ANAF badges, mobile address cards
- Dashboard: address quality attention indicator
- New scan_duplicate_partners.py script for one-time duplicate audit

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 14:36:52 +00:00
..

GoMag Import Manager - FastAPI Application

Admin interface si orchestrator pentru importul comenzilor GoMag in Oracle ROA.

Componente

Core

  • main.py - Entry point FastAPI, lifespan (Oracle pool + SQLite init), file logging
  • config.py - Settings via pydantic-settings (citeste .env)
  • database.py - Oracle connection pool + SQLite schema + helpers

Routers (HTTP Endpoints)

Router Prefix Descriere
health /health, /api/health Status Oracle + SQLite
dashboard / Dashboard HTML cu stat cards
mappings /mappings, /api/mappings CRUD ARTICOLE_TERTI + CSV
articles /api/articles Cautare NOM_ARTICOLE
validation /api/validate Scanare + validare SKU-uri
sync /sync, /api/sync Import orchestration + scheduler

Services (Business Logic)

Service Rol
mapping_service CRUD pe ARTICOLE_TERTI (Oracle)
article_service Cautare in NOM_ARTICOLE (Oracle)
import_service Port din VFP: partner/address/order creation
sync_service Orchestrare: read JSONs → validate → import → log
price_sync_service Sync preturi GoMag → Oracle politici de pret
invoice_service Verificare facturi ROA + cache SQLite
validation_service Batch-validare SKU-uri (chunks of 500)
order_reader Citire gomag_orders_page*.json din vfp/output/
sqlite_service CRUD pe SQLite (sync_runs, import_orders, missing_skus)
scheduler_service APScheduler - sync periodic configurabil din UI

Rulare

pip install -r requirements.txt
# INTOTDEAUNA via start.sh din project root (seteaza Oracle env vars)
cd .. && ./start.sh

Testare

# Din project root:
./test.sh ci       # Teste rapide (unit + e2e, ~30s, fara Oracle)
./test.sh full     # Teste complete (inclusiv Oracle, ~2-3 min)
./test.sh unit     # Doar unit tests
./test.sh e2e      # Doar browser tests (Playwright)
./test.sh oracle   # Doar Oracle integration

Dual Database

  • Oracle - date ERP (ARTICOLE_TERTI, NOM_ARTICOLE, COMENZI)
  • SQLite - tracking local (sync_runs, import_orders, missing_skus, scheduler_config)

Logging

Log files in ../logs/sync_comenzi_YYYYMMDD_HHMMSS.log Format: 2026-03-11 14:30:25 | INFO | app.services.sync_service | mesaj