Files
ROMFASTSQL/CONTEXT_HANDOVER_20260831.md
Claude Agent b4472511c9 docs: context handover pentru sesiunea 2026-08-31
Nu repeta infrastructura — e deja documentata in repo — ci doar ce s-a schimbat
azi si ce a ramas: starea serviciilor la finalul sesiunii, verificarea reindexarii
care era in curs, cele patru fire terminate (Gitea/repo-uri, memorie comuna +
flux plan-Opus/exec-Sonnet, atasamente Discord, mutarea Mariei pe LXC 171), si
ce a ramas de decis (onboot pe LXC 301, auditul sistematic, modelul Mariei).

Include si capcanele invatate pe pielea noastra azi, ca sa nu se repete: verifica
pe ce container esti inainte de a concluziona ceva, nu reporni prototipul de pe
104, rclone sync sterge la destinatie, si nu taia iesirea comenzilor de diagnostic
cu `head` — exact asta a produs concluzia gresita "nu asculta nimic pe 8091".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4uzvgm7AyJch5WH8QHRhY
2026-08-31 21:08:34 +00:00

128 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Context handover — 2026-08-31
Sesiune lungă, patru fire de lucru terminate și unul în curs. Totul e comis și împins.
> **Infrastructura e deja documentată în acest repo** — nu o repet aici. Punctele de
> intrare: [`CLAUDE.md`](CLAUDE.md), [`proxmox/README.md`](proxmox/README.md) și, pentru
> chatboți, [`docs/chatboti-si-punti.md`](docs/chatboti-si-punti.md) (scris azi).
> Documentul ăsta e doar despre **ce s-a schimbat azi și ce a rămas**.
---
## 1. Ce rulează acum (starea la finalul sesiunii)
| | Stare |
|---|---|
| **Maria (WhatsApp + RAG)** | **LXC 171**, asociată la +40723197939, funcțională. 11 documente, sincronizare Drive la 10 min. |
| Prototipul Maria de pe LXC 104 | **oprit și dezactivat**. `llama-qwen35.service` (LLM-ul, port 8091) și `flowise.service` rămân pornite acolo. |
| Puntea Discord | activă, cu atașamente (imagini + fișiere text). |
| Reindexare RAG | **era în curs la finalul sesiunii** — vezi „De verificat întâi" mai jos. |
## 2. De verificat întâi, la reluare
Reindexarea pornită după corectarea `efactura-erori-rag.xml` s-ar putea să nu fi terminat.
```bash
pgrep -af "sync.py" # gol = gata
ls -la ~/.maria-bridge/rag_index.json # mtime recent = reconstruit
python3 -c "
import json,collections
e=json.load(open('/home/claude/.maria-bridge/rag_index.json'))
c=collections.Counter(x['source'] for x in e)
print(len(e),'chunk-uri,',len(c),'documente')
print(c.get('efactura-erori-rag.xml'),'din efactura-erori-rag.xml (8 = structurat corect, ~41 = inca text simplu)')
"
```
O reindexare completă durează **~18–21 de minute** (embedding CPU-only, ~7,3 s per chunk).
Nu e blocată — chiar durează atât. Dacă a eșuat, se reia cu:
`cd proxmox/lxc171-claude-agent/maria-whatsapp-bridge/rag && MARIA_BRIDGE_DIR=$HOME/.maria-bridge ~/.maria-bridge/venv/bin/python sync.py --force`
## 3. Ce s-a făcut azi
### Git și Gitea
- **`romfast/workspace` dădea 500** de pe 2026-04-06: patru gitlink-uri fără `.gitmodules`
făceau Gitea 1.24.3 să dea panic pe listarea rădăcinii. Scoase din index. **Nu era vina
botului**, cum se bănuia inițial.
- **`/workspace/claude-agent` e acum repo propriu** (`git@gitea.romfast.ro:romfast/claude-agent.git`),
scos din repo-ul `workspace` unde fusese comis din greșeală.
### Memorie și mod de lucru al botului Discord
- `~/.claude/projects/-workspace-claude-agent/memory` e **symlink** către memoria lui
`-workspace-romfastsql`. Firele Discord porneau amnezice fiindcă memoria e per director
de proiect. Copia veche: `memory.bak-2026-08-31`.
- **Regula nouă:** orice cerere de dezvoltare → citește `claude-agent/TODO.md`, planifică
cu `Agent(subagent_type: "Plan", model: "opus")`, execută pe Sonnet, actualizează
`TODO.md`. Scrisă în `claude-agent/CLAUDE.md` + `claude-agent/docs/flux-dezvoltare.md`.
Testată pe sesiuni reale: prima versiune era prea blândă și agentul sărea peste plan la
sarcini mici — întărită explicit cu „mărimea nu e criteriu".
- **`claude-agent/TODO.md`** e registrul viu al funcționalităților. Nimic blocat acum.
### Puntea Discord — atașamente
Imagini (png/jpeg/gif/webp, max 4, max 3,5 MB brut) → blocuri `image`; fișiere text →
inserate în prompt (max 4, trunchiate la 100 KB); restul doar numite. Merge și mid-tur ca
steering. 31 de teste noi; suita: 426 pass.
### Maria — mutare completă pe LXC 171
- **Sincronizare Drive** prin `rclone authorize` (fără cont de serviciu). Procedura
completă: [`docs/rclone-google-drive-headless.md`](docs/rclone-google-drive-headless.md).
Script: `maria-whatsapp-bridge/ops/setup-drive.sh`.
- **`.xml` acceptat și preferat peste `.md`** la același nume de bază; chunking per
problemă (un `<eroare_x>` = un chunk, cu mesajul și rezolvarea împreună).
- **Lacăt `flock` între reindexări** + scriere atomică a indexului. Descoperit când
timer-ul a pornit peste o rulare manuală și două procese scriau același fișier.
- **Fix LID**: după asociere nu răspundea nimic. WhatsApp livrează self-chat-ul ca
`51947713372214@lid`, iar filtrul compara doar cu `<număr>@s.whatsapp.net` — arunca tot,
tăcut. Reparat; mesajele respinse se loghează acum cu motivul.
- 26 de teste noi (prima suită a proiectului Maria).
### Documentație
- **[`docs/chatboti-si-punti.md`](docs/chatboti-si-punti.md)** — care chatbot e care.
Trei lucruri numite „Maria", doi boți pe Discord, două punți WhatsApp pe **același
număr**. A costat o oră de diagnostic azi: Maria răspundea de pe LXC 104, iar toate
verificările se făceau pe 171.
- **[`proxmox/lxc301-docker-template/README.md`](proxmox/lxc301-docker-template/README.md)** —
singurul guest nedocumentat. Vezi mai jos, are un risc real.
## 4. Ce a rămas de făcut
### a) LXC 301 — conflict de IP cu VM 109 (decizie a utilizatorului)
LXC 301 e predecesorul lui VM 109 (vechiul DR Oracle 19c). Și-a păstrat **IP-ul static
10.0.20.37** — același pe care VM 109 l-a moștenit de la el — și are **`onboot: 1`**.
La un reboot al lui pveelite pornește singur și ocupă adresa. VM 109 are `onboot: 0`, deci
nimeni nu observă nimic până la următorul test DR, când VM 109 găsește adresa luată.
**Recomandat, neexecutat:** `ssh root@10.0.20.202 "pct set 301 -onboot 0"`.
Ștergerea completă cere verificat întâi că `basevol-301-disk-0` nu e șablonul din care
s-au clonat alte containere.
### b) Auditul de infrastructură, dacă se dorește
Coverage-ul e bun — LXC 301 era singurul guest fără pagină proprie. Ce **nu** s-a făcut:
verificarea sistematică a fiecărui README existent față de starea live. Divergențele
găsite azi (prototipul Maria pe 104, LLM-ul pe 8091, Gitea rupt de 5 luni) au ieșit la
iveală accidental, nu dintr-un audit.
### c) Model de răspuns al Mariei
Rămâne `Qwen3.5-2B-Q4` pe LXC 104 — decizia utilizatorului a fost „păstrez deocamdată, cu
RAG-ul complet". Răspunsurile factuale (e-Factura) sunt acum corecte și ancorate în
documente; cele explicative sunt încă vagi. De reevaluat după câteva întrebări reale.
## 5. Capcane de reținut
- **Verifică întâi pe ce container ești.** `8099` și `11434` există și pe 104 și pe 171,
cu conținut diferit. Nu repeta ora pierdută azi.
- **Nu reporni prototipul de pe 104.** Ar răspunde în paralel, pe același număr, cu un
index de 24 de chunk-uri.
- **`rclone sync` e distructiv pe destinație.** Depozitul Mariei e oglindă a Drive-ului;
un document adăugat manual din dashboard dispare la următoarea sincronizare.
- **Maria nu are voie la infrastructură** — e chatbot pentru clienții ERP ROA. Nimic din
`proxmox/`, niciun IP sau credențial în depozitul ei. Regula e în `claude-agent/CLAUDE.md`.
- **Nu tăia ieșirea comenzilor de diagnostic cu `head`.** Concluzia „nu ascultă nimic pe
8091" a fost greșită exact din cauza asta și a trimis diagnosticul pe pistă falsă.
## 6. Comiteri
`ROMFASTSQL`: `b29b9f2..824b215` (14 comiteri) · `claude-agent`: `6d0bfe1..c97ba0c` (9 comiteri)
· `workspace`: `d24dca3`. Toate împinse pe gitea.romfast.ro.