YouTube rate limit protection + progressive retry system

- New: tools/yt_download.py with cookies support + rate limit tracking
- New: docs/YOUTUBE-SETUP.md complete documentation
- Updated: night-execute jobs to use new script
- Updated: TOOLS.md with YouTube section
- Added: 5 new YouTube notes (OpenClaw, cost optimization, task system, leads)
- Added: credentials/ to .gitignore
This commit is contained in:
Echo
2026-02-03 07:11:21 +00:00
parent b0c9b254f1
commit 762ac21681
24 changed files with 2295 additions and 45 deletions

View File

@@ -0,0 +1,226 @@
# Analiză: Sistem Import Bonuri PDF via Telegram/Discord/WhatsApp → roa2web
**Data:** 2026-02-03
**Status:** Analiză conceptuală
**Tags:** @work @project
---
## TL;DR
Sistem pentru importul bonurilor fiscale (PDF/imagine) în ERP ROA prin canale de mesagerie. Utilizatorul trimite poza bonului → OCR extrage datele → roa2web validează și importă în Oracle.
---
## 1. Arhitectură Propusă
```
┌─────────────┐ ┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Telegram │ │ │ │ │ │ │
│ Discord │────▶│ Clawdbot │────▶│ OCR Engine │────▶│ roa2web │
│ WhatsApp │ │ (Router) │ │ (Parsare) │ │ (FastAPI) │
└─────────────┘ └─────────────┘ └──────────────┘ └─────────────┘
│ │ │
│ │ │
▼ ▼ ▼
• Primește fișier • Tesseract/Mistral • Validare date
• Identifică tip • Extrage câmpuri • Import Oracle
• Rutare canal • Structurează JSON • Confirmare user
```
---
## 2. Componente Tehnice
### 2.1 Canale Inbound (Clawdbot)
| Canal | Cum primește | Format acceptat |
|-------|--------------|-----------------|
| Telegram | Bot API / file_id | PDF, JPG, PNG |
| Discord | Attachment | PDF, JPG, PNG |
| WhatsApp | Media message | PDF, JPG, PNG |
**Clawdbot poate:**
- Detecta atașamente pe orice canal
- Descărca fișierul local temporar
- Ruta către procesare OCR
### 2.2 OCR Engine
**Opțiuni (în ordinea complexității):**
| Soluție | Pro | Contra | Efort |
|---------|-----|--------|-------|
| **Tesseract + regex** | Gratuit, local | Acuratețe medie, layout-uri diverse | Mic |
| **Mistral OCR API** | Calitate bună, JSON direct | Cost per request | Mic |
| **Claude Vision** | Excelent la context | Cost mai mare | Mic |
| **Google Document AI** | Enterprise, structurat | Cost, setup complex | Mare |
**Recomandare:** Mistral OCR sau Claude Vision - calitate bună, integrare simplă cu Clawdbot.
### 2.3 Câmpuri de Extras din Bon
```json
{
"tip_document": "bon_fiscal",
"data": "2026-02-03",
"ora": "14:32",
"furnizor": {
"nume": "MEGA IMAGE SRL",
"cui": "RO12345678",
"adresa": "Str. Exemplu nr. 1"
},
"articole": [
{"denumire": "Paine alba", "cantitate": 1, "pret_unitar": 4.50, "valoare": 4.50},
{"denumire": "Lapte 1L", "cantitate": 2, "pret_unitar": 8.00, "valoare": 16.00}
],
"total": 20.50,
"tva": {
"cota_9": 1.50,
"cota_19": 0.50
},
"numar_bon": "0001234",
"casa_marcat": "ABC12345"
}
```
### 2.4 roa2web Integration
**Endpoint propus:** `POST /api/data-entry/import-bon`
```python
# FastAPI endpoint
@router.post("/import-bon")
async def import_bon(
bon_data: BonFiscalSchema,
user_id: str = Depends(get_current_user)
):
# 1. Validare date (CUI valid, sume corecte)
# 2. Mapare furnizor în baza ROA
# 3. Creare document intrare marfă
# 4. Return confirmare + document_id
```
---
## 3. Flux Utilizator
### 3.1 Happy Path
1. **Marius** face poză la bon în magazin
2. **Trimite** pe Telegram la @ROABot (sau grup dedicat)
3. **Clawdbot** detectează imagine, descarcă
4. **OCR** extrage datele, validează structura
5. **Clawdbot** trimite preview: "Am extras: Mega Image, 20.50 RON, 3 articole. Confirm import? ✅/❌"
6. **Marius** confirmă (sau corectează)
7. **roa2web** importă în Oracle
8. **Confirmare**: "✅ Bon importat. Document #12345"
### 3.2 Edge Cases
| Situație | Handling |
|----------|----------|
| Poză neclară | "Nu am putut citi bonul. Retrimite o poză mai clară." |
| Furnizor nou | "Furnizor MEGA IMAGE nu există. Creez? [Da/Nu]" |
| Articol necunoscut | "Articol 'Paine alba' nu are corespondent. Alege: [1] Paine [2] Produse panificatie [3] Skip" |
| PDF protejat | "PDF-ul e protejat. Trimite ca imagine." |
---
## 4. Provocări și Soluții
### 4.1 Calitatea imaginii
- **Problemă:** Poze făcute pe fugă, iluminate prost
- **Soluție:**
- Pre-procesare imagine (contrast, deskew)
- Fallback la input manual dacă OCR confidence < 70%
### 4.2 Varietatea formatelor
- **Problemă:** Fiecare comerciant are alt layout
- **Soluție:**
- LLM (Claude/Mistral) extrage semantic, nu pe poziție
- Template-uri pentru comercianți frecvenți (Mega, Lidl, Kaufland)
### 4.3 Mapare articole
- **Problemă:** "Lapte Zuzu 1L 3.5%" vs cod ROA "LAPTE_001"
- **Soluție:**
- Fuzzy matching pe denumire
- Tabel mapări (bon_text cod_roa)
- Learning: salvează mapările confirmate
### 4.4 Rate limiting canale
- **Problemă:** WhatsApp/Telegram pot limita
- **Soluție:**
- Queue local pentru procesare
- Confirmare async ("Procesez, te anunț în 30 sec")
---
## 5. Plan Implementare
### Faza 1: POC (2-3 zile)
- [ ] Endpoint Clawdbot pentru primire fișier
- [ ] Integrare Mistral OCR / Claude Vision
- [ ] Parsare bon simplu (1 comerciant test)
- [ ] Răspuns pe canal cu datele extrase
### Faza 2: Integrare roa2web (3-5 zile)
- [ ] Endpoint FastAPI `/api/import-bon`
- [ ] Validare și mapare furnizor
- [ ] Creare document Oracle
- [ ] Confirmare utilizator
### Faza 3: Polish (2-3 zile)
- [ ] Handling edge cases
- [ ] Template-uri comercianți mari
- [ ] Tabel mapări articole
- [ ] Logging și statistici
### Faza 4: Extindere (opțional)
- [ ] Suport pentru mai multe tipuri documente (facturi, chitanțe)
- [ ] Batch import (multiple bonuri)
- [ ] Dashboard statistici achiziții
---
## 6. Efort Estimat
| Componentă | Ore | Cine |
|------------|-----|------|
| Clawdbot file handler | 2-4 | Echo/Claude |
| OCR integration | 2-3 | Echo/Claude |
| roa2web endpoint | 4-6 | Marius + Claude |
| Mapări și validări | 4-8 | Marius |
| **Total MVP** | **12-21 ore** | Mix |
**Cost OCR estimat:** ~$0.01-0.05 per bon (Claude Vision sau Mistral)
---
## 7. Beneficii
- **Timp economisit:** 2-5 min/bon 10 sec/bon
- **Erori reduse:** OCR consistent vs. tastare manuală
- **Mobilitate:** Import din teren, nu doar de la birou
- **Trasabilitate:** Fiecare bon are sursa (poza originală)
---
## 8. Următorii Pași
1. **Marius decide:** Merită efortul? Câte bonuri/lună?
2. **Test rapid:** Un bon de la Mega Image Claude Vision vezi output
3. **Prototip:** Clawdbot + Claude Vision răspuns formatat
---
## 9. Întrebări pentru Marius
1. Câte bonuri/documente procesezi lunar manual?
2. Care sunt cei mai frecvenți furnizori?
3. Ce câmpuri sunt obligatorii în ROA pentru intrare marfă?
4. Preferi confirmare înainte de import sau import direct cu corecție ulterioară?
---
*Analiză generată de Echo • 2026-02-03 03:00*