feat(maria): modelul de embedding in cheia de cache si listarea grupurilor WhatsApp

Cheia de refolosire a embeddings-urilor era doar textul chunk-ului. La schimbarea
lui EMBED_MODEL indexul ar fi ramas un amestec de vectori din doua modele, iar
cautarea ar fi dat rezultate aiurea fara nici un mesaj de eroare. Acum fiecare
intrare poarta modelul cu care a fost calculata si se refolosesc doar cele cu
modelul curent; intrarile vechi, fara camp, se recalculeaza o singura data.
Indexul de pe container a fost stampilat manual cu `nomic-embed-text` (singurul
folosit pana acum), deci nu s-au recalculat cele 169 de chunk-uri.

`GET /groups` listeaza grupurile contului cu JID, nume si numar de participanti.
JID-ul unui grup ("120363...@g.us") nu se vede nicaieri in WhatsApp, iar el e
singurul mod de a scrie SUPPORT_JID pentru un grup de suport.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4uzvgm7AyJch5WH8QHRhY
This commit is contained in:
Claude Agent
2026-08-31 22:20:08 +00:00
parent 52d1e9f205
commit 44763869ce
4 changed files with 89 additions and 6 deletions

View File

@@ -291,3 +291,44 @@ def test_stergerea_gaseste_documentul_in_ambele_directoare(write):
assert store.delete_document("local.md") is True
assert store.delete_document("drive.md") is True
assert store.delete_document("inexistent.md") is False
def test_schimbarea_modelului_reface_embeddings(monkeypatch, write):
"""Alt EMBED_MODEL = alti vectori; refolosirea lor ar amesteca tacut doua modele."""
import config
import indexer
write("doc.md", "acelasi text, alt model")
monkeypatch.setattr(indexer, "embed", lambda chunk: [1.0])
indexer.build()
calculate = []
monkeypatch.setattr(indexer, "embed", lambda chunk: calculate.append(chunk) or [2.0])
monkeypatch.setattr(config, "get", lambda k, d=None: "alt-model"
if k == "EMBED_MODEL" else config.DEFAULTS.get(k, d))
rezultat = indexer.build()
assert calculate == ["acelasi text, alt model"]
assert rezultat["embeddings_refolosite"] == 0
def test_indexul_fara_camp_model_se_recalculeaza_o_data(monkeypatch, write):
"""Intrarile scrise inainte de campul `model` nu se pot atribui unui model."""
import json
import config
import indexer
write("doc.md", "text vechi")
config.STATE_DIR.mkdir(parents=True, exist_ok=True)
config.INDEX_FILE.write_text(json.dumps(
[{"source": "doc.md", "chunk": 0, "text": "text vechi", "embedding": [9.0]}]),
encoding="utf-8")
calculate = []
monkeypatch.setattr(indexer, "embed", lambda chunk: calculate.append(chunk) or [1.0])
assert indexer.build()["embeddings_refolosite"] == 0
assert calculate == ["text vechi"]
calculate.clear()
assert indexer.build()["embeddings_refolosite"] == 1
assert calculate == []