feat(maria): asociere prin cod de telefon si citirea capturilor cu erori
Doua lucruri cerute de utilizator, ambele pe acelasi drum: sa poti lega
puntea fara sa ai un ecran de scanat, si sa poti trimite Mariei o poza cu
eroarea in loc sa transcrii mesajul.
Asociere prin cod de 8 caractere (alternativa la QR):
- endpoint-ul /pair exista, dar nu era folosibil: fara `browser` explicit
WhatsApp refuza codul, iar dupa introducerea lui corecta serverul cere un
restart (515) care consuma din bugetul de reincercari si putea opri puntea.
Acum descriptorul e Browsers.ubuntu('Chrome') si restartRequired reconecteaza
imediat, fara sa numere.
- codul are TTL de 3 minute, iar /status il da doar cat timp e valabil —
un cod expirat afisat in dashboard trimite omul sa tasteze degeaba.
- dashboard: camp pentru numar + buton, in acelasi card cu QR-ul.
Imagini cu erori (capturi de ecran):
- puntea descarca imaginile in ~/.maria-bridge/media/ (imageMessage sau
document cu mimetype image/*, si prin ambalajele efemer/"vezi o data" —
fara despachetare pareau mesaje fara continut si se aruncau tacut).
- rag/ocr.py: tesseract ron+eng. Modelul de raspuns e strict text, deci OCR
nu e o optiune de calitate, e singura cale.
- cautarea in index merge DOAR pe liniile care arata a eroare; o fereastra
intreaga de meniuri si totaluri dilueaza embedding-ul si scoate chunk-uri
fara legatura. Modelul primeste captura intreaga, marcata ca text OCR.
- capturile se sterg imediat dupa citire (pot contine date de client).
- cand nu se citeste nimic si nu exista legenda, Maria cere textul erorii
in loc sa raspunda in gol.
16 teste noi (42 in total). install.sh verifica tesseract; README documenteaza
ambele metode de asociere si drumul unei capturi.
Separat, in docs/chatboti-si-punti.md: chatul "Eu" e vazut de AMBELE punti de pe
numar. Puntea lui Echo (LXC 110) e asociata ca dispozitiv :11 al aceluiasi cont,
momentan nelegata dar pornita — daca se reasociaza, raspunde in "Eu" langa Maria.
Notat si ca serviciile lui Echo sunt unitati de UTILIZATOR: `systemctl is-active`
ca root raspunde "inactive" desi botul ruleaza.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4uzvgm7AyJch5WH8QHRhY
This commit is contained in:
@@ -141,10 +141,33 @@ tail -20 ~/.maria-bridge/logs/rag.log
|
||||
curl -s http://10.0.20.161:8091/v1/models
|
||||
```
|
||||
|
||||
**Regula:** WhatsApp-ul lui Echo (LXC 110) și cel al Mariei (LXC 104) sunt legate la
|
||||
**Regula:** WhatsApp-ul lui Echo (LXC 110) și cel al Mariei (LXC 171) sunt legate la
|
||||
**același număr**, `+40723197939`, ca dispozitive diferite ale aceluiași cont. Un mesaj
|
||||
poate ajunge la ambele. Dacă primești două răspunsuri, două punți sunt active simultan.
|
||||
|
||||
### Chatul „Eu" (self-chat) le vede amândouă
|
||||
|
||||
Ambele punți sunt *dispozitive conectate* ale aceluiași cont, deci **amândouă primesc și
|
||||
mesajele din chatul cu tine însuți**. Nu există o setare care să dea self-chat-ul doar
|
||||
uneia — separarea trebuie făcută oprind una din punți.
|
||||
|
||||
Starea la 2026-08-31, verificată: puntea lui Echo era asociată ca dispozitiv `:11` al
|
||||
numărului (`auth/creds.json` → `me.id = 40723197939:11`) și a răspuns în „Eu" până
|
||||
dimineața, când sesiunea i-a căzut (`registered: false`, `connected: false`). Serviciul
|
||||
rulează în continuare și `echo-core` îi cere mesajele la câteva minute — dacă cineva îl
|
||||
reasociază, Echo revine în „Eu" lângă Maria, fără niciun avertisment.
|
||||
|
||||
Pentru a-l scoate definitiv din WhatsApp (Telegram și Discord rămân neatinse):
|
||||
```bash
|
||||
ssh root@10.0.20.200 "pct exec 110 -- sudo -u moltbot XDG_RUNTIME_DIR=/run/user/1000 \
|
||||
systemctl --user disable --now echo-whatsapp-bridge"
|
||||
```
|
||||
|
||||
**Atenție la scope-ul systemd pe LXC 110:** serviciile lui Echo sunt unități de
|
||||
**utilizator** (`moltbot`, uid 1000). Un `systemctl is-active echo-core` rulat ca root
|
||||
răspunde `inactive` deși botul rulează — exact genul de răspuns care trimite diagnosticul
|
||||
pe pistă falsă. Folosește forma de mai sus, cu `--user` și `XDG_RUNTIME_DIR`.
|
||||
|
||||
---
|
||||
|
||||
## Capcane
|
||||
|
||||
Reference in New Issue
Block a user