tests/verify_chunks_integrity.py aktualisiert
All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 3s

This commit is contained in:
Lars 2025-09-30 12:09:18 +02:00
parent 589d021744
commit daa58e6b27

View File

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
""" """
Script: tests/verify_chunks_integrity.py Script: tests/verify_chunks_integrity.py
Version: 1.0.0 Version: 1.0.1
Datum: 2025-09-10 Datum: 2025-09-10
Zweck Zweck
@ -12,12 +12,6 @@ Verifiziert die Text-Integrität der gespeicherten Chunks:
2) Vergleicht mit dem in Qdrant gespeicherten Note-`fulltext` (falls vorhanden). 2) Vergleicht mit dem in Qdrant gespeicherten Note-`fulltext` (falls vorhanden).
3) Optional: Vergleicht zusätzlich mit dem Body der zugehörigen Markdown-Datei im Vault. 3) Optional: Vergleicht zusätzlich mit dem Body der zugehörigen Markdown-Datei im Vault.
Output
------
- Pro Note eine JSON-Zeile mit:
note_id, chunks_count, chunks_with_text, match_fulltext, match_vault (optional), issues
- Zum Schluss eine Summary mit Counts und Exit-Code 1 bei Fehlern (falls --fail-on-mismatch gesetzt).
Aufrufe Aufrufe
------- -------
# Nur gegen Qdrant (fulltext vs. Chunks) # Nur gegen Qdrant (fulltext vs. Chunks)
@ -26,19 +20,22 @@ Aufrufe
# Zusätzlich gegen den Vault abgleichen (Body der .md-Datei) # Zusätzlich gegen den Vault abgleichen (Body der .md-Datei)
python3 tests/verify_chunks_integrity.py --prefix mindnet --vault ./test_vault python3 tests/verify_chunks_integrity.py --prefix mindnet --vault ./test_vault
# Whitespace-tolerant (Default): Trim/Normalisierung ein # Streng + CI-geeignet (Fehlercode bei Abweichungen):
python3 tests/verify_chunks_integrity.py --prefix mindnet --vault ./test_vault python3 tests/verify_chunks_integrity.py --prefix mindnet --vault ./test_vault --strict --fail-on-mismatch
# Strikt (kein Trimmen):
python3 tests/verify_chunks_integrity.py --prefix mindnet --strict --fail-on-mismatch
""" """
from __future__ import annotations from __future__ import annotations
import argparse import argparse
import json import json
import os import os
import sys
from typing import Any, Dict, List, Optional, Tuple from typing import Any, Dict, List, Optional, Tuple
# --- FIX: Projekt-Root in sys.path aufnehmen, damit 'app.*' importierbar ist ---
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
if PROJECT_ROOT not in sys.path:
sys.path.insert(0, PROJECT_ROOT)
import yaml import yaml
from qdrant_client.http import models as rest from qdrant_client.http import models as rest
@ -99,7 +96,6 @@ def normalize(s: str, strict: bool = False) -> str:
s = s.replace("\r\n", "\n").replace("\r", "\n") s = s.replace("\r\n", "\n").replace("\r", "\n")
if strict: if strict:
return s return s
# toleranter Vergleich: trim trailing WS, entferne überzählige Leerzeilen am Rand
lines = [ln.rstrip() for ln in s.strip().split("\n")] lines = [ln.rstrip() for ln in s.strip().split("\n")]
return "\n".join(lines).strip() return "\n".join(lines).strip()