todo: Maria — profil de client si reset de fire (gata)
Doua functionalitati noi in maria-whatsapp-bridge/discord-bridge (cod in romfastsql, commits 610638a si 32ff462): profil de client per firma, asociat cu mai multe numere de telefon, injectat in promptul RAG; si o sectiune in dashboard pentru resetarea firelor de discutie active. Precizare adaugata in CLAUDE.md — profilurile de client sunt permise in granita Mariei, dar fara date tehnice. Co-Authored-By: Claude Agent <noreply@anthropic.com>
This commit is contained in:
@@ -100,6 +100,11 @@ poate rupe doar dacă **tu** pui acolo ce nu trebuie. Deci:
|
||||
cu acest filtru. Dacă e material de infrastructură, refuză și spune de ce.
|
||||
- Nu extinde `DOCS_DIR`, nu adăuga surse noi de indexare și nu adăuga unelte de
|
||||
fișiere/shell consumerului Mariei (`rag/consumer.py`) fără cerere explicită.
|
||||
- **Profilurile de client** (`rag/client.py`, `~/.maria-bridge/clients.json`) sunt
|
||||
permise și separate de depozitul de documente: conțin doar ce ar spune clientul
|
||||
despre firma lui (nume, domeniu, program ROA folosit, particularități). **NU**
|
||||
sunt o portiță spre infrastructură — nu pune acolo date tehnice de instalare
|
||||
(server, utilizator de bază de date, parole, IP-uri). Același filtru ca mai sus.
|
||||
|
||||
Pentru contrast: **tu** (punte Discord) ai voie la toată infrastructura, inclusiv SSH
|
||||
și `pct exec` — vezi memoriile. Maria, nu.
|
||||
|
||||
50
TODO.md
50
TODO.md
@@ -52,6 +52,54 @@ Stări: `🔵 planificat` · `🟡 în lucru` · `⛔ blocat` · `✅ gata` · `
|
||||
|
||||
## ✅ Gata
|
||||
|
||||
### Maria — reset fire de discuție din dashboard
|
||||
- **De unde a pornit:** un test manual în grupul „Maria Test" a rămas legat de
|
||||
un fir vechi (Maria trata mesajele ca „firul are eroare X", ancorat pe o
|
||||
discuție anterioară) și nu exista nicio cale să-l resetezi fără intervenție
|
||||
directă pe server — nici comandă de chat, nici buton.
|
||||
- **Ce s-a făcut:** secțiune nouă „Fire de discuție active" în dashboard,
|
||||
între „Trimise la suport" și „Clienți cunoscuți": listă cu JID, subiect
|
||||
scurtat, ultima activitate, buton de ștergere cu confirmare. Rutele
|
||||
`GET /api/maria/fire` și `POST /api/maria/fire/delete` citesc/șterg direct
|
||||
fișierele din `~/.maria-bridge/conversations/`, cu aceeași sanitizare de
|
||||
nume de fișier ca `rag/fir.py` (oglindă, nu import — coliziune de modul
|
||||
`config` între cele două proiecte).
|
||||
- **De ce listă și nu un buton fix pe grupul de test:** nu există în cod nicio
|
||||
constantă pentru JID-ul grupului de test — apare doar în README. O listă
|
||||
acoperă orice fir activ, nu doar unul hardcodat.
|
||||
- **Verificat:** 6 teste noi (`test_maria_fire.py`), 11/11 cu cele de clienți;
|
||||
fără regresii pe `test_dashboard.py`.
|
||||
- **Terminat:** 2026-09-08
|
||||
|
||||
### Maria — profil de client (firmă), asociat cu mai multe numere
|
||||
- **De unde a pornit:** clienții contactează suportul cu întrebări generice
|
||||
("am o problemă cu factura") fără context — Maria nu știa că un anumit
|
||||
client e, de exemplu, un service auto care lucrează în RoAuto, deci nu
|
||||
putea interpreta întrebarea în lumina programului lui.
|
||||
- **Ce s-a făcut:** un fișier nou (`rag/client.py` + `~/.maria-bridge/clients.json`)
|
||||
ține profiluri de client (nume, notiță text liberă, listă de numere de
|
||||
telefon). Un client poate avea mai mulți angajați care scriu de pe numere
|
||||
diferite — toți găsesc același profil. La fiecare mesaj, profilul se
|
||||
citește de pe disc (stateless, ca restul Mariei) și intră într-o secțiune
|
||||
`DESPRE CLIENT` în prompt, înaintea contextului RAG. Administrare prin
|
||||
dashboard (`discord-bridge/dashboard`, secțiunea „Clienți cunoscuți"),
|
||||
nu prin comandă în chat — canalul de scriere trebuie autentificat.
|
||||
- **De ce profilul nu intră în căutare:** pragurile de acoperire din
|
||||
`rag/rank.py` sunt calibrate pe textul întrebării; a adăuga cuvinte fixe
|
||||
de profil la fiecare interogare ar strica raportul de termeni distincți
|
||||
și ar agrava firul deja deschis mai jos ("termenii distinctivi pe
|
||||
interogarea combinată"). Profilul filtrează interpretarea răspunsului,
|
||||
nu participă la decizia „am/nu am informația".
|
||||
- **Mesaje de grup:** dacă cineva scrie într-un grup WhatsApp, se identifică
|
||||
persoana din `participant`, nu grupul — altfel grupul s-ar putea potrivi
|
||||
accidental cu primul client găsit.
|
||||
- **Granița infra:** profilul e strict business (nume firmă, domeniu, program
|
||||
ROA folosit) — niciodată date tehnice de instalare (server, parole).
|
||||
Precizare adăugată în `CLAUDE.md`, secțiunea „Maria — GRANIȚĂ OBLIGATORIE".
|
||||
- **Verificat:** 117 teste (110 existente + 7 noi) în `maria-whatsapp-bridge`,
|
||||
plus teste noi pentru rutele de dashboard (`test_maria_clients.py`).
|
||||
- **Terminat:** 2026-09-08
|
||||
|
||||
### Maria — rank hibrid, escaladare la suport, dicționar Oracle
|
||||
- **De unde a pornit:** o captură cu o eroare Oracle a primit un răspuns generic — corect
|
||||
gramatical, dar despre altă eroare. Nu se putea nici măcar afla ce citise OCR-ul.
|
||||
@@ -176,6 +224,8 @@ Stări: `🔵 planificat` · `🟡 în lucru` · `⛔ blocat` · `✅ gata` · `
|
||||
|
||||
Cea mai recentă intrare prima. O linie per schimbare de stare.
|
||||
|
||||
- 2026-09-08 — ✅ Maria: buton de reset pentru firele de discuție active, din dashboard
|
||||
- 2026-09-08 — ✅ Maria: profil de client (firmă) asociat cu mai multe numere, injectat în prompt
|
||||
- 2026-09-01 — ✅ Maria: mesajul și captura sunt același lucru; cosinusul singur nu mai e dovadă
|
||||
- 2026-09-01 — ✅ Maria: „am trimis la suport" doar când puntea chiar a trimis
|
||||
- 2026-09-01 — 🔵 Maria: termenii distinctivi pe interogarea combinată (planificat)
|
||||
|
||||
Reference in New Issue
Block a user