Files
roa2web-service-auto/backend/scripts/whatsapp_import
Marius Mutu e257fa5d5f feat(telegram): bot bonuri fiscale — OCR → preview → Oracle write
- US-001: mută queue_client.py în data_entry/services/ocr/
- US-002/003/004: oracle_receipt_writer + oracle_server_id în DB
- US-005: receipt_handlers.py (PDF/photo/callback flow)
- US-006: wire handlers în main.py, per-schema connect, seq_cod.nextval
- US-007: .gitignore secrets/*.oracle_pass
- US-008/009/010: teste unit + integration + E2E
- setup-secrets.sh helper + template
- docs/telegram/README.md actualizat cu arhitectura nouă

Testat E2E pe DB live (MARIUSM_AUTO). COD din seq_cod.nextval.
pypdfium2 fallback pentru PDF decode (fără poppler).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 09:26:58 +00:00
..

WhatsApp Import - Flux Bonuri Fiscale

Descriere

Scripturi pentru importul automat al bonurilor fiscale primite pe WhatsApp.

Flux Complet

PDF (WhatsApp) --> OCR API (doctr+, ~4sec) --> SQLite (receipts) --> Oracle (ACT)

Pași

1. Recepție PDF (Clawdbot pe moltbot)

  • PDF primit pe WhatsApp ajunge în ~/.clawdbot/media/inbound/
  • Clawdbot detectează fișierul și pornește procesarea

2. OCR prin API (claude-agent:8000)

# Login
TOKEN=$(curl -s -X POST "http://localhost:8000/api/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"username":"USER","password":"PASS","server_id":"central"}' \
  | jq -r .access_token)

# Submit OCR job
JOB=$(curl -s -X POST "http://localhost:8000/api/data-entry/ocr/extract" \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@bon.pdf" | jq -r .job_id)

# Wait for result (~4 sec)
sleep 5
curl -s "http://localhost:8000/api/data-entry/ocr/jobs/$JOB" \
  -H "Authorization: Bearer $TOKEN"

3. Creare Receipt în SQLite

curl -s -X POST "http://localhost:8000/api/data-entry/receipts/" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "receipt_type": "bon_fiscal",
    "receipt_number": "NR_BON",
    "receipt_date": "YYYY-MM-DD",
    "amount": 123.45,
    "partner_name": "FURNIZOR",
    "cui": "RO12345678",
    "tva_total": 23.45,
    "payment_mode": "banca",
    "company_id": 110
  }'

4. Aprobare în Frontend

5. Salvare Oracle (după aprobare)

  • API-ul face automat salvarea în Oracle via PACK_CONTAFIN
  • Sau manual cu save_to_oracle.py

Scripturi

Script Descriere
ocr_client.py Client OCR - submit job în SQLite queue
whatsapp_flow.py Flux complet: OCR + SQLite + Oracle
process_v2.py OCR + PACK_CONTAFIN (direct, fără API)
save_to_oracle.py Doar salvare Oracle cu PACK_CONTAFIN

Configurare

Server OCR (claude-agent)

Credențiale

  • User: din CONTAFIN_ORACLE.NOM_UTILIZATORI
  • Server: central (sau ce e configurat în .env)
  • Company ID: din token după login

Note

  • OCR folosește doctr-plus (~4 sec per bon)
  • Bonurile apar în frontend cu status "draft"
  • Salvarea Oracle se face după aprobare
  • Fluxul e asincron - OCR rulează în background

Creat: 2026-02-03 de Echo