chore: add venv/ to .gitignore and remove from tracking

This commit is contained in:
Echo
2026-02-03 07:51:32 +00:00
parent 762ac21681
commit be0ac66399
2271 changed files with 296 additions and 2979695 deletions

View File

@@ -66,6 +66,23 @@
"video": "",
"tldr": "*Surse: Video-uri tehnice Clawdbot/Claude Code*"
},
{
"file": "notes-data/projects/analiza-telegram-whatsapp-roa2web.md",
"title": "Analiză: Telegram/WhatsApp → roa2web → Contabilitate ROA",
"date": "2026-02-03",
"tags": [],
"domains": [
"work"
],
"types": [
"project"
],
"category": "projects",
"project": null,
"subdir": null,
"video": "",
"tldr": "Integrare canale messaging (Telegram/WhatsApp) cu roa2web pentru import documente în contabilitatea ROA. OCR prin Doctr (cost zero, local). Flux cu aprobare contabil."
},
{
"file": "notes-data/projects/analiza-import-bonuri-pdf.md",
"title": "Analiză: Sistem Import Bonuri PDF via Telegram/Discord/WhatsApp → roa2web",
@@ -1206,8 +1223,8 @@
"title": "Proiect: Vending Master - Integrare Website → ROA",
"date": "2026-01-30",
"tags": [
"vending-master",
"integrare"
"integrare",
"vending-master"
],
"domains": [
"work"
@@ -1672,9 +1689,9 @@
}
],
"stats": {
"total": 91,
"total": 92,
"by_domain": {
"work": 26,
"work": 27,
"health": 16,
"growth": 33,
"sprijin": 26,
@@ -1685,7 +1702,7 @@
"emails": 1,
"health": 1,
"insights": 8,
"projects": 22,
"projects": 23,
"reflectii": 3,
"retete": 1,
"youtube": 38,

View File

@@ -0,0 +1,263 @@
# Analiză: Telegram/WhatsApp → roa2web → Contabilitate ROA
**Data:** 2026-02-03
**Status:** Analiză tehnică actualizată după review cod
**Tags:** @work @project
---
## TL;DR
Integrare canale messaging (Telegram/WhatsApp) cu roa2web pentru import documente în contabilitatea ROA. OCR prin Doctr (cost zero, local). Flux cu aprobare contabil.
**UPDATE:** După analiza codului, roa2web are deja:
- ✅ OCR complet (Doctr + PaddleOCR + Tesseract)
- ✅ API `/api/data-entry/ocr/extract` funcțional
- ✅ Bot Telegram pentru dashboard/facturi/sold
-**LIPSEȘTE:** Handler fișiere în bot Telegram
-**LIPSEȘTE:** PDF text layer extraction (optimizare pentru Adobe Scan)
---
## 1. Ce Există Deja
### roa2web
- **OCR:** Doctr (local, gratuit, rezultate bune)
- **Storage:** SQLite local (bonuri procesate)
- **API:** FastAPI endpoints
### Clawdbot
- **Canale:** Telegram ✅, WhatsApp ✅, Discord ✅
- **Capabilități:** Primire fișiere, rutare, răspuns
### ROA (ERP)
- **DB:** Oracle
- **Contabilitate:** Module existente pentru intrări/facturi
---
## 2. Ce Lipsește (Gap Analysis)
| Component | Status | Ce trebuie |
|-----------|--------|------------|
| Telegram → roa2web | ❌ | Endpoint webhook sau polling |
| WhatsApp → roa2web | ❌ | Endpoint webhook sau polling |
| roa2web → Oracle | ❌ | API salvare în contabilitate |
| Workflow aprobare | ❌ | UI contabil + status draft/approved |
---
## 3. Arhitectură Propusă
```
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Telegram │ │ │ │ │ │ │
│ WhatsApp │────▶│ Clawdbot │────▶│ roa2web │────▶│ ROA Oracle │
└─────────────┘ │ (Bridge) │ │ (OCR+API) │ │ (Contab) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
▼ ▼ ▼
• Primește fișier • Doctr OCR • Salvare draft
• Forward la API • Extrage date • Aprobare contabil
• Răspuns user • Validare • Înregistrare finală
```
---
## 4. Opțiuni Implementare
### Opțiunea A: Clawdbot ca Bridge (RECOMANDAT)
**Flux:**
1. User trimite bon pe Telegram/WhatsApp
2. Clawdbot detectează fișier, îl descarcă
3. Clawdbot trimite fișierul la `roa2web/api/upload`
4. roa2web procesează cu Doctr, returnează JSON
5. Clawdbot trimite răspuns user: "Bon procesat: Mega Image, 45.50 RON"
6. roa2web salvează draft în Oracle (status: pending)
7. Contabil vede în UI, aprobă → status: approved
**Pro:**
- Folosește Clawdbot existent
- Nu modifică roa2web prea mult
- Flexibilitate pe canale
**Contra:**
- Clawdbot trebuie să știe să ruteze fișiere
**Efort:** 8-12 ore
### Opțiunea B: Webhook Direct în roa2web
**Flux:**
1. Telegram/WhatsApp webhook direct la roa2web
2. roa2web procesează și salvează
3. roa2web trimite răspuns înapoi pe canal
**Pro:**
- Mai direct, fără intermediar
**Contra:**
- Trebuie implementat handler pentru fiecare canal
- Duplicare logică cu Clawdbot
**Efort:** 15-20 ore
### Opțiunea C: Shared Folder / Email
**Flux:**
1. User trimite pe canal → Clawdbot salvează în folder
2. roa2web monitorizează folder, procesează automat
**Pro:**
- Simplu, decuplat
**Contra:**
- Fără feedback instant la user
- Polling inefficient
**Efort:** 4-6 ore
---
## 5. Recomandare: Opțiunea A (Clawdbot Bridge)
### 5.1 Ce trebuie în Clawdbot
```python
# Pseudo-cod: handler pentru fișiere pe Telegram/WhatsApp
async def on_file_received(channel, file, user):
# 1. Descarcă fișierul
local_path = await download_file(file)
# 2. Trimite la roa2web
response = await http_post(
"https://roa2web.romfast.ro/api/ocr/process",
files={"file": open(local_path, "rb")},
data={"user_id": user.id, "source": channel}
)
# 3. Răspuns la user
if response.ok:
data = response.json()
await reply(f"✅ Procesat: {data['furnizor']}, {data['total']} RON")
else:
await reply("❌ Eroare procesare. Încearcă din nou.")
```
### 5.2 Ce trebuie în roa2web
**Endpoint nou:** `POST /api/ocr/process`
- Primește fișier (PDF/imagine)
- Procesează cu Doctr (existent)
- Salvează în SQLite (existent) + Oracle (NOU)
- Returnează JSON cu datele extrase
**Endpoint nou:** `POST /api/contabilitate/save-draft`
- Primește datele extrase
- Creează înregistrare draft în Oracle
- Status: pending_approval
**Endpoint nou:** `POST /api/contabilitate/approve/{id}`
- Contabil aprobă
- Status: approved → înregistrare finală
### 5.3 UI Contabil (opțional, faza 2)
- Lista documente pending
- Preview date extrase vs. imagine originală
- Buton Approve / Reject / Edit
---
## 6. Integrare Oracle - Detalii
### Ce tabele în ROA?
**Întrebare pentru Marius:**
- Unde se salvează intrările de marfă/bonuri în Oracle?
- Ce câmpuri sunt obligatorii?
- Există API/proceduri Oracle existente pentru insert?
### Propunere structură draft
```sql
-- Tabel nou pentru documente OCR pending
CREATE TABLE roa_ocr_drafts (
id NUMBER PRIMARY KEY,
source VARCHAR2(20), -- 'telegram', 'whatsapp'
user_id VARCHAR2(50),
file_path VARCHAR2(500),
extracted_data CLOB, -- JSON cu datele OCR
status VARCHAR2(20), -- 'pending', 'approved', 'rejected'
created_at TIMESTAMP,
approved_by VARCHAR2(50),
approved_at TIMESTAMP,
roa_document_id NUMBER -- FK la documentul creat în ROA după aprobare
);
```
---
## 7. Plan Implementare
### Faza 1: Conectare canale (3-4 ore)
- [ ] Clawdbot: handler fișiere Telegram
- [ ] Clawdbot: handler fișiere WhatsApp
- [ ] Forward la roa2web API
### Faza 2: roa2web API (4-6 ore)
- [ ] Endpoint `/api/ocr/process` (extinde existent)
- [ ] Returnare JSON standardizat
- [ ] Logging și error handling
### Faza 3: Salvare Oracle (4-6 ore)
- [ ] Conexiune Oracle din roa2web (cx_Oracle/oracledb)
- [ ] Tabel `roa_ocr_drafts`
- [ ] Endpoint `/api/contabilitate/save-draft`
### Faza 4: Aprobare (2-3 ore)
- [ ] Endpoint `/api/contabilitate/approve`
- [ ] Notificare user după aprobare
### Faza 5: UI Contabil (opțional, 4-8 ore)
- [ ] Pagină listare drafts
- [ ] Aprobare/respingere din UI
---
## 8. Estimare Totală
| Fază | Ore | Cine |
|------|-----|------|
| Conectare canale | 3-4 | Echo (Clawdbot config) |
| roa2web API | 4-6 | Marius + Claude |
| Salvare Oracle | 4-6 | Marius (cunoaște schema) |
| Aprobare | 2-3 | Marius + Claude |
| **Total MVP** | **13-19 ore** | |
| UI Contabil (opț.) | 4-8 | Marius |
**Cost:** 0 RON (Doctr local, fără API externe)
---
## 9. Întrebări pentru Marius
1. **Schema Oracle:** În ce tabel/modul se salvează bonurile în contabilitate?
2. **Câmpuri obligatorii:** Ce date TREBUIE să existe pentru o înregistrare validă?
3. **Contabil:** Cine aprobă? Un singur user sau mai mulți?
4. **Notificări:** Contabilul vrea notificare când vine ceva nou? (email/Telegram?)
5. **roa2web deploy:** Unde rulează? Are acces la Oracle-ul de producție?
---
## 10. Următorul Pas
Când ai 30 min, hai să:
1. Clarificăm schema Oracle pentru bonuri
2. Verificăm dacă roa2web poate conecta la Oracle
3. Facem un test: Telegram → Clawdbot → roa2web → JSON response
---
*Analiză generată de Echo • 2026-02-03*