Arhitectură (diagrame) + imagini Docker module + contract furnizare + optimizări deploy

- docs/ARCHITECTURE.md (7 diagrame Mermaid) + architecture.html + diagrame originale (offer_diagram_1..7.png)
- artefacte_lot1/imagini_docker: imagini pre-construite pt toate cele 13 module (la zi)
- documentatie: Contract de furnizare nr.19
- optimizări deploy.sh/seed (MODELS_DIR, fix download python3); .gitignore (modele/.env/PV-uri excluse)
This commit is contained in:
EVOTECH IT SRL 2026-06-29 16:23:03 +03:00
parent aec19e00bc
commit af0ec4a150
41 changed files with 473 additions and 1551 deletions

View file

@ -20,6 +20,7 @@ Porturi alocate conform convenției datacenter:
| Service | Port | Description |
|---------|------|-------------|
| **Catalog API** | 11000 | Main orchestrator gateway |
| **Domain Check API** | 11000 (alias `domain-check-api`) | T4 — source credibility (WHOIS/SSL/blacklist/DNS/IP/HTTP/mail-intel); isolated stack |
| **vLLM Qwen3.5-35B-A3B** | 14001 | Text + Vision LLM (MoE, GPU 0) |
| **LLM Inference API** | 14011 | Unified LLM router |
| **Embeddings API** | 14100 | OpenAI-compatible embeddings |
@ -536,7 +537,8 @@ DEVELOPMENT (5xxxx):
OTHER (outside 5-digit schema):
├── 8085 Forensic Features (rPPG/lip-sync/forgery)
└── 8090 didi_brain (cache + RAG + fact-checking)
├── 8090 didi_brain (cache + RAG + fact-checking)
└── 11000 domain-check-api (T4 — credibilitate sursă; stack izolat, doar pe didi-network)
```
---
@ -549,6 +551,7 @@ OTHER (outside 5-digit schema):
- **Web (Fact-checking):** `modules/web/README.md`
- **Video Analysis:** `modules/video-analysis/API.md`
- **Audio Transcription:** `modules/audio/API.md`
- **Domain Check (T4 — credibilitate sursă):** `modules/domain_check/use_api.md` — `POST /api/v1/check/check` pe `domain-check-api:11000`
---

View file

@ -25,7 +25,7 @@ Acest fisier descrie fiecare modul, fiecare fisier, fiecare clasa, fiecare funct
## 1. Arhitectura generala
Monorepo cu 13 module independente (audio, catalog-api, cloak, dashboard, didi_brain, embeddings, extractors, forensic_features, gateway, llm-inference, rerank, video-analysis, web). Fiecare modul este un pachet Python instalabil cu FastAPI, containerizat in Docker, conectat pe reteaua comuna `didi-network`. Toate comunica prin HTTP intern. Singurul port expus extern este 11000 (gateway nginx).
Monorepo cu 14 module independente (audio, catalog-api, cloak, dashboard, didi_brain, domain_check, embeddings, extractors, forensic_features, gateway, llm-inference, rerank, video-analysis, web). Fiecare modul este un pachet independent (FastAPI sau — pentru `domain_check` — Flask+Celery), containerizat in Docker, conectat pe reteaua comuna `didi-network`. Toate comunica prin HTTP intern. Singurul port expus extern este 11000 (gateway nginx); `domain_check` rulează ca stack izolat (Postgres+Redis proprii) și e expus intern pe `didi-network` ca `domain-check-api:11000`.
Flux tipic de request extern:
```

View file

@ -93,6 +93,15 @@ done
|---|---|---|
| OpenRouter | `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` | Premium tier LLM (Gemini Flash) |
**Domain reputation (`domain_check` — T4 credibilitate sursă):**
| Provider | Key | Folosit pentru |
|---|---|---|
| Whoxy | `876528325417e0bgs418d2cc7d8f193a6` | WHOIS enrichment (fallback după RDAP direct) |
| VirusTotal | `4d7afdff71c977a178b07d25b58c36660c416e3e9b1bf7ee8efaaf94aa02d0bc` | reputație / blacklist domenii (opțional; degradează fără el pe DNSBL gratuit) |
Setate în `modules/domain_check/.env` (`WHOXY_API_KEY`, `VIRUSTOTAL_API_KEY`). Stack izolat: Postgres+Redis proprii; parola DB și `SECRET_KEY` se generează per-deploy (vezi `.env`).
**HuggingFace** (opțional, pentru download modele gated):
- `HF_TOKEN=` (gol în .env actual; setați doar dacă descărcați modele gated)

View file

@ -260,6 +260,7 @@ Port allocation follows datacenter schema (5-digit ports):
| 8080 (intern) | SearXNG | Development |
| 8085 | Forensic Features API | Other |
| 8090 | didi_brain API | Other |
| 11000 (intern, alias `domain-check-api`) | Domain Check API (T4 — credibilitate sursă) | Other |
**Guidelines:**
- Use 1xxxx for production services
@ -397,6 +398,7 @@ Reviewers will check for:
| [video-analysis](modules/video-analysis/) | 54600 | Deepfake detection (BusterX) & semantic video analysis | Active |
| [forensic_features](modules/forensic_features/) | 8085 | Forensic detectors (rPPG/lip-sync/forgery) via MediaPipe | Active |
| [didi_brain](modules/didi_brain/) | 8090 | Result cache (Postgres/pgvector) + RAG + fact-checking | Active |
| [domain_check](modules/domain_check/) | 11000 (alias `domain-check-api`) | T4 — source credibility: WHOIS/SSL/blacklist/DNS/IP/HTTP/mail-intel → risk score. Isolated stack (own Postgres+Redis) | Active |
| [cloak](modules/cloak/) | internal | Stealth SERP scraper (tier-3 fallback for web) | Active |
## Port Allocation Summary

View file

@ -0,0 +1,237 @@
# DiDi — LOT 1 · Arhitectură și fluxuri (diagrame)
Diagramele arhitecturale și de flux ale Sistemului de Inteligență Artificială (LOT 1),
recreate în **Mermaid** (editabile, randate automat pe GitHub/GitLab și în VS Code).
Corespund Anexei A din Propunerea Tehnică. Versiunile originale (imagini) se găsesc în
`docs/diagrams/offer_diagram_1..7.png`. Pentru vizualizare în browser: `docs/architecture.html`.
> Convenții (diagrame de secvență): săgeată continuă `->>` = cerere; punctată `-->>` = răspuns;
> auto-buclă = procesare internă; `Note over` = observație. LOT 2 (Backend) este consumatorul API REST al platformei LOT 1.
---
## 1. Arhitectură de ansamblu — componente (control plane vs execution plane)
```mermaid
flowchart LR
subgraph LOT1["LOT 1 — Platforma AI"]
subgraph M4["Modul 4 — Cache"]
redis["Redis / cache distribuit<br/>rezultate · locks · pub/sub · rate-limit"]
end
subgraph M1["Modul 1 — Inferență LLM"]
gw["LLM Gateway (FastAPI)"]
vllm["vLLM — Qwen3.5 (GPU)"]
llama["llama.cpp (CPU, fallback)"]
end
subgraph M6["Modul 6 — Dashboard Admin AI"]
dash["Dashboard Admin<br/>monitorizare · metrici GPU · stare servicii"]
end
subgraph M5["Modul 5 — RAG / Brain"]
rag["RAG Service"]
emb["Embeddings API"]
vs["Vector Store (pgvector)"]
rr["Rerank API"]
end
subgraph M3["Modul 3 — Web Crawl"]
web["Web Crawl API<br/>căutare · content extraction"]
end
subgraph M2["Modul 2 — Extractoare ML"]
whisper["Whisper API<br/>transcriere audio"]
video["Video Analysis API<br/>ffmpeg + frame sampling"]
buster["BusterX (vLLM)<br/>deepfake detection"]
sandbox["Sandbox Cod<br/>EXIF · ELA · spectrograme"]
end
subgraph MT4["Modul T4 — Credibilitate sursă"]
domcheck["Domain Check API<br/>WHOIS · SSL · blacklist · DNS · IP"]
end
end
subgraph LOT2["LOT 2 — Backend (consumator API REST)"]
orch["Orchestrator"]
workers["Workers Analiză"]
end
gw --> vllm
gw -. fallback .-> llama
rag --> emb
rag --> vs
rag --> rr
video --> buster
workers -->|POST /v1/chat/completions| gw
workers -->|POST /v1/audio/transcriptions| whisper
workers -->|POST /analyze/video| video
workers -->|POST /v1/gather| web
workers -->|POST /v1/query| rag
workers -->|POST /analyze| sandbox
workers -->|POST /api/v1/check/check| domcheck
orch --- workers
redis -. cache .-> gw
redis -. cache .-> rag
```
---
## 2. Flux inferență LLM — cache + fallback multi-backend
```mermaid
sequenceDiagram
participant B as Backend (LOT 2)
participant G as LLM Gateway (FastAPI)
participant V as vLLM Qwen3.5
participant L as llama.cpp (fallback)
B->>G: POST /v1/chat/completions {model, messages[], temperature}
G->>G: Verificare cache
alt Cache hit
G-->>B: 200 {cached response}
else Cache miss
G->>V: Forward request
alt vLLM disponibil
V->>V: Generare răspuns (GPU)
V-->>G: 200 {response, usage}
else vLLM indisponibil
G->>L: Fallback request
L->>L: Generare răspuns (CPU)
L-->>G: 200 {response, usage}
end
G->>G: Stocare în cache
G-->>B: 200 {response, usage, model_used}
end
```
---
## 3. Flux multimodal (text + imagine) — viziune / OCR / artefacte AI
```mermaid
sequenceDiagram
participant B as Backend (LOT 2)
participant G as LLM Gateway (FastAPI)
participant V as vLLM Qwen3.5
B->>G: POST /v1/chat/completions {messages:[{user, [text, image_url]}]}
G->>V: Forward multimodal request
V->>V: Procesare imagine + text (GPU)
V->>V: OCR, descriere, detecție artefacte AI
V-->>G: 200 {response: structured JSON}
Note over G: Răspuns structurat: description, ocr_text, ai_artifacts, anomalies
G-->>B: 200 {response, model_used}
```
---
## 4. Flux analiză video — detecție deepfake (BusterX)
```mermaid
sequenceDiagram
participant B as Backend (LOT 2)
participant VA as Video Analysis API
participant F as ffmpeg
participant BX as BusterX (vLLM)
B->>VA: POST /analyze/video {video_url}
VA->>VA: Download video
VA->>F: Extragere cadre (frame sampling configurabil)
F-->>VA: Cadre extrase (N imagini)
loop Pentru fiecare cadru
VA->>BX: POST analiză cadru
BX->>BX: Detecție artefacte deepfake
BX-->>VA: {score, artifacts, confidence}
end
VA->>VA: Agregare scoruri per cadru
VA->>VA: Calculare verdict final
VA-->>B: 200 {verdict, score, evidence_frames, analysis_details}
```
---
## 5. Flux RAG — interogare bază de cunoștințe
```mermaid
sequenceDiagram
participant B as Backend (LOT 2)
participant R as RAG Service
participant E as Embeddings API
participant VS as Vector Store
participant RR as Rerank API
B->>R: POST /v1/query {query, top_k, filters}
R->>E: Embedding query text
E-->>R: Vector embedding
R->>VS: Nearest neighbor search {vector, top_k: 20}
VS-->>R: Documente candidat (cu scoruri similaritate)
R->>RR: Reranking documente {query, documents}
RR-->>R: Documente reordonate (scoruri relevanță)
R->>R: Filtrare top_k final
R-->>B: 200 {documents:[{text, score, source, metadata}]}
```
---
## 6. Flux Web Crawl — colectare evidence
```mermaid
sequenceDiagram
participant B as Backend (LOT 2)
participant W as Web Crawl API
participant S as Motor căutare (SearXNG / provideri)
participant P as Pagini Web
B->>W: POST /v1/gather {claim, max_sources}
W->>S: Căutare web {query: claim}
S-->>W: Rezultate căutare (URLs + snippets)
loop Pentru fiecare URL relevant
W->>P: Fetch pagină
P-->>W: Conținut HTML
W->>W: Extragere conținut structurat (text, metadate, autor, dată)
end
W->>W: Structurare evidence package
W-->>B: 200 {sources:[{url, title, content, snippet, date, credibility_indicators}]}
```
---
## 7. Flux Sandbox — analiză media (EXIF / ELA / spectrogramă / cadre)
```mermaid
sequenceDiagram
participant B as Backend (LOT 2)
participant SB as Sandbox API
participant PY as Python Runtime (izolat)
B->>SB: POST /analyze {media_url, analysis_type}
SB->>SB: Download fișier media (stocare temporară)
alt Imagine
SB->>PY: Execuție EXIF extraction
PY-->>SB: Metadata EXIF
SB->>PY: Execuție Error Level Analysis
PY-->>SB: Rezultat ELA
else Audio
SB->>PY: Execuție spectrogramă
PY-->>SB: Analiză spectrogramă
else Video
SB->>PY: Execuție frame analysis
PY-->>SB: Semnături digitale + anomalii
end
SB->>SB: Cleanup fișiere temporare
SB-->>B: 200 {metadata, anomalies, signatures, analysis_type}
Note over SB: Sandbox: izolare completă, timeout, restricții resurse, audit
```
---
## Notă de mapare ofertă → implementare livrată
Diagramele reflectă arhitectura din propunerea tehnică. În deployment-ul livrat,
denumirile concrete ale componentelor sunt:
| În diagrame (ofertă) | În implementarea livrată |
|---|---|
| Redis / cache | `didi_brain` (Postgres/pgvector) — verification_cache + analysis_atom (TTL, dedup, invalidare) |
| RAG Service `/v1/query` | `didi_brain` `/v1/search` + `/v1/gather` |
| Vector Store | pgvector (în `didibrain-postgres`) |
| Embeddings / Rerank API | `embeddings` (bge-m3) / `rerank` (bge-reranker-v2-m3) |
| Web Crawl `/v1/gather` + „Brave Search" | `web` + SearXNG (gratuit) + provideri (SerpAPI/Tavily/Brave/LinkUp/Exa) + `cloak` (tier-3) |
| Sandbox Cod `/analyze` | `extractors` (`/v1/metadata`, `/v1/detect`, `/v1/ner`, `/v1/ocr`, `/v1/sentiment`) + `forensic_features` |
| vLLM Qwen3.5 | `vllm/vllm-openai:qwen3_5` — model `Qwen/Qwen3.5-35B-A3B` |
| BusterX (vLLM) | `l8cv/BusterX_plusplus` (Qwen2.5-VL-7B) |

View file

@ -0,0 +1,171 @@
<!doctype html><html lang="ro"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>DiDi LOT 1 — Arhitectură și fluxuri</title>
<script src="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js"></script>
<style>body{font-family:Segoe UI,Arial,sans-serif;margin:0;background:#f5f6f8;color:#1f3a5f}
header{background:#1f3a5f;color:#fff;padding:18px 28px}header h1{margin:0;font-size:20px}
.wrap{max-width:1100px;margin:0 auto;padding:24px}
section{background:#fff;border:1px solid #e2e5ea;border-radius:10px;padding:18px 22px;margin:18px 0;box-shadow:0 1px 3px rgba(0,0,0,.06)}
h2{font-size:16px;color:#1f3a5f;border-bottom:2px solid #eef0f3;padding-bottom:8px}
.mermaid{text-align:center}footer{color:#888;font-size:12px;text-align:center;padding:20px}</style></head><body>
<header><h1>DiDi — LOT 1 · Arhitectură și fluxuri (Sistem de Inteligență Artificială)</h1></header><div class="wrap">
<section><h2>1. Arhitectură de ansamblu — componente (control plane vs execution plane)</h2><div class="mermaid">flowchart LR
subgraph LOT1["LOT 1 — Platforma AI"]
subgraph M4["Modul 4 — Cache"]
redis["Redis / cache distribuit<br/>rezultate · locks · pub/sub · rate-limit"]
end
subgraph M1["Modul 1 — Inferență LLM"]
gw["LLM Gateway (FastAPI)"]
vllm["vLLM — Qwen3.5 (GPU)"]
llama["llama.cpp (CPU, fallback)"]
end
subgraph M6["Modul 6 — Dashboard Admin AI"]
dash["Dashboard Admin<br/>monitorizare · metrici GPU · stare servicii"]
end
subgraph M5["Modul 5 — RAG / Brain"]
rag["RAG Service"]
emb["Embeddings API"]
vs["Vector Store (pgvector)"]
rr["Rerank API"]
end
subgraph M3["Modul 3 — Web Crawl"]
web["Web Crawl API<br/>căutare · content extraction"]
end
subgraph M2["Modul 2 — Extractoare ML"]
whisper["Whisper API<br/>transcriere audio"]
video["Video Analysis API<br/>ffmpeg + frame sampling"]
buster["BusterX (vLLM)<br/>deepfake detection"]
sandbox["Sandbox Cod<br/>EXIF · ELA · spectrograme"]
end
end
subgraph LOT2["LOT 2 — Backend (consumator API REST)"]
orch["Orchestrator"]
workers["Workers Analiză"]
end
gw --> vllm
gw -. fallback .-> llama
rag --> emb
rag --> vs
rag --> rr
video --> buster
workers -->|POST /v1/chat/completions| gw
workers -->|POST /v1/audio/transcriptions| whisper
workers -->|POST /analyze/video| video
workers -->|POST /v1/gather| web
workers -->|POST /v1/query| rag
workers -->|POST /analyze| sandbox
orch --- workers
redis -. cache .-> gw
redis -. cache .-> rag</div></section>
<section><h2>2. Flux inferență LLM — cache + fallback multi-backend</h2><div class="mermaid">sequenceDiagram
participant B as Backend (LOT 2)
participant G as LLM Gateway (FastAPI)
participant V as vLLM Qwen3.5
participant L as llama.cpp (fallback)
B->>G: POST /v1/chat/completions {model, messages[], temperature}
G->>G: Verificare cache
alt Cache hit
G-->>B: 200 {cached response}
else Cache miss
G->>V: Forward request
alt vLLM disponibil
V->>V: Generare răspuns (GPU)
V-->>G: 200 {response, usage}
else vLLM indisponibil
G->>L: Fallback request
L->>L: Generare răspuns (CPU)
L-->>G: 200 {response, usage}
end
G->>G: Stocare în cache
G-->>B: 200 {response, usage, model_used}
end</div></section>
<section><h2>3. Flux multimodal (text + imagine) — viziune / OCR / artefacte AI</h2><div class="mermaid">sequenceDiagram
participant B as Backend (LOT 2)
participant G as LLM Gateway (FastAPI)
participant V as vLLM Qwen3.5
B->>G: POST /v1/chat/completions {messages:[{user, [text, image_url]}]}
G->>V: Forward multimodal request
V->>V: Procesare imagine + text (GPU)
V->>V: OCR, descriere, detecție artefacte AI
V-->>G: 200 {response: structured JSON}
Note over G: Răspuns structurat: description, ocr_text, ai_artifacts, anomalies
G-->>B: 200 {response, model_used}</div></section>
<section><h2>4. Flux analiză video — detecție deepfake (BusterX)</h2><div class="mermaid">sequenceDiagram
participant B as Backend (LOT 2)
participant VA as Video Analysis API
participant F as ffmpeg
participant BX as BusterX (vLLM)
B->>VA: POST /analyze/video {video_url}
VA->>VA: Download video
VA->>F: Extragere cadre (frame sampling configurabil)
F-->>VA: Cadre extrase (N imagini)
loop Pentru fiecare cadru
VA->>BX: POST analiză cadru
BX->>BX: Detecție artefacte deepfake
BX-->>VA: {score, artifacts, confidence}
end
VA->>VA: Agregare scoruri per cadru
VA->>VA: Calculare verdict final
VA-->>B: 200 {verdict, score, evidence_frames, analysis_details}</div></section>
<section><h2>5. Flux RAG — interogare bază de cunoștințe</h2><div class="mermaid">sequenceDiagram
participant B as Backend (LOT 2)
participant R as RAG Service
participant E as Embeddings API
participant VS as Vector Store
participant RR as Rerank API
B->>R: POST /v1/query {query, top_k, filters}
R->>E: Embedding query text
E-->>R: Vector embedding
R->>VS: Nearest neighbor search {vector, top_k: 20}
VS-->>R: Documente candidat (cu scoruri similaritate)
R->>RR: Reranking documente {query, documents}
RR-->>R: Documente reordonate (scoruri relevanță)
R->>R: Filtrare top_k final
R-->>B: 200 {documents:[{text, score, source, metadata}]}</div></section>
<section><h2>6. Flux Web Crawl — colectare evidence</h2><div class="mermaid">sequenceDiagram
participant B as Backend (LOT 2)
participant W as Web Crawl API
participant S as Motor căutare (SearXNG / provideri)
participant P as Pagini Web
B->>W: POST /v1/gather {claim, max_sources}
W->>S: Căutare web {query: claim}
S-->>W: Rezultate căutare (URLs + snippets)
loop Pentru fiecare URL relevant
W->>P: Fetch pagină
P-->>W: Conținut HTML
W->>W: Extragere conținut structurat (text, metadate, autor, dată)
end
W->>W: Structurare evidence package
W-->>B: 200 {sources:[{url, title, content, snippet, date, credibility_indicators}]}</div></section>
<section><h2>7. Flux Sandbox — analiză media (EXIF / ELA / spectrogramă / cadre)</h2><div class="mermaid">sequenceDiagram
participant B as Backend (LOT 2)
participant SB as Sandbox API
participant PY as Python Runtime (izolat)
B->>SB: POST /analyze {media_url, analysis_type}
SB->>SB: Download fișier media (stocare temporară)
alt Imagine
SB->>PY: Execuție EXIF extraction
PY-->>SB: Metadata EXIF
SB->>PY: Execuție Error Level Analysis
PY-->>SB: Rezultat ELA
else Audio
SB->>PY: Execuție spectrogramă
PY-->>SB: Analiză spectrogramă
else Video
SB->>PY: Execuție frame analysis
PY-->>SB: Semnături digitale + anomalii
end
SB->>SB: Cleanup fișiere temporare
SB-->>B: 200 {metadata, anomalies, signatures, analysis_type}
Note over SB: Sandbox: izolare completă, timeout, restricții resurse, audit</div></section>
<footer>Generat din ARCHITECTURE.md · diagrame Mermaid · Anexa A — Propunere Tehnică LOT 1</footer></div>
<script>mermaid.initialize({startOnLoad:true, theme:"neutral", securityLevel:"loose"});</script></body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

0
ai_platform/local_gpu_stack/deploy.sh Normal file → Executable file
View file

0
ai_platform/local_gpu_stack/lib.sh Normal file → Executable file
View file

View file

@ -1,422 +0,0 @@
{
"generated_at": "2026-06-27T14:46:37.623279+03:00",
"host": "10.11.10.18",
"summary": {
"total": 30,
"passed": 30,
"failed": 0
},
"tests": [
{
"id": "llm",
"name": "LLM (Qwen3.5-35B-A3B)",
"endpoint": "POST /v1/chat/completions",
"http_code": 200,
"ok": true,
"latency_ms": 342.2,
"result": {
"reply": "Un deepfake este o media manipulat, realizat prin tehnologia inteligenței artificiale, care înlocuiează cu realism înspăimântător fața sau vocea unei persoane cu cea a altcuiva."
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "llm_completions",
"name": "LLM · completions",
"endpoint": "POST /v1/completions",
"http_code": 200,
"ok": true,
"latency_ms": 111.8,
"result": {
"text": " un oras care atrage foarte multi turisti si"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "llm_info",
"name": "LLM · info",
"endpoint": "GET /v1/info",
"http_code": 200,
"ok": true,
"latency_ms": 14.5,
"result": {
"keys": [
"resource",
"models",
"functions"
]
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "embeddings",
"name": "Embeddings (bge-m3)",
"endpoint": "POST /v1/embeddings",
"http_code": 200,
"ok": true,
"latency_ms": 43.8,
"result": {
"dim": 1024
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "rerank",
"name": "Rerank (bge-reranker-v2-m3)",
"endpoint": "POST /v1/rerank",
"http_code": 200,
"ok": true,
"latency_ms": 39.3,
"result": {
"top_index": 1,
"score": 0.626
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "audio",
"name": "Audio (Whisper large-v3-turbo)",
"endpoint": "POST /v1/audio/transcriptions",
"http_code": 200,
"ok": true,
"latency_ms": 371.3,
"result": {
"text": "Nici nu mai știi cine este de fapt agresorul și agresatul. De ce? Simplu. Pentru că în acest moment, Uniunea Europeană...",
"language": "ro"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "video",
"name": "Video/BusterX (deepfake)",
"endpoint": "POST /analyze/video",
"http_code": 200,
"ok": true,
"latency_ms": 1389.8,
"result": {
"verdict": "REAL",
"frames_analyzed": 16
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "video_semantic",
"name": "Video · semantic",
"endpoint": "POST /analyze/video/semantic",
"http_code": 200,
"ok": true,
"latency_ms": 18390.9,
"result": {
"num_chunks": 5,
"summary": "The video presents a continuous, polemical monologue delivered by a male speaker in a studio setting, likely a podcast o"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "extractors_metadata",
"name": "Extractors · metadata",
"endpoint": "POST /v1/metadata",
"http_code": 200,
"ok": true,
"latency_ms": 284.1,
"result": {
"media_type": "video",
"sha256": "27d6c00786e63905"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "extractors_ner",
"name": "Extractors · NER (GLiNER)",
"endpoint": "POST /v1/ner",
"http_code": 200,
"ok": true,
"latency_ms": 262.9,
"result": {
"entities": [
"Klaus Iohannis:persoană",
"Emmanuel Macron:persoană",
"Bucuresti:locație"
]
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "extractors_detect",
"name": "Extractors · detect (YOLOv8)",
"endpoint": "POST /v1/detect",
"http_code": 200,
"ok": true,
"latency_ms": 77.1,
"result": {
"objects": 4,
"labels": [
"person",
"person",
"person",
"person"
]
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "extractors_ocr",
"name": "Extractors · OCR (LLM vision)",
"endpoint": "POST /v1/ocr",
"http_code": 200,
"ok": true,
"latency_ms": 684.6,
"result": {
"text": "Asa arată\nANTI-ROMÂNISMUL\n22:08\nVOCEA LIBERTĂȚII\n15 AUG. 25\nALASKA\nTRUMP VS PUTIN\nTikTok\n@ ovi1623\n>> Da. Deci acuma nici nu mai știi cine"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "extractors_sentiment",
"name": "Extractors · sentiment (LLM)",
"endpoint": "POST /v1/sentiment",
"http_code": 200,
"ok": true,
"latency_ms": 551.5,
"result": {
"label": "pozitiv",
"score": 0.9
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "forensic",
"name": "Forensic · module list",
"endpoint": "GET /api/forensic-modules",
"http_code": 200,
"ok": true,
"latency_ms": 9.5,
"result": {
"modules": [
"m25",
"m26",
"m27",
"m28",
"m29"
]
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "forensic_evidence",
"name": "Forensic · analiza reala",
"endpoint": "POST /api/forensic-evidence",
"http_code": 200,
"ok": true,
"latency_ms": 9563.6,
"result": {
"modules_run": [
"m25",
"m26",
"m27",
"m28",
"m29"
],
"frames": 131
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "web",
"name": "Web · search (SearXNG)",
"endpoint": "POST /v1/search",
"http_code": 200,
"ok": true,
"latency_ms": 1303.6,
"result": {
"results": 3,
"first": "AI Deepfake Detection Online Free - Images, Videos, Voices"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "web_fetch",
"name": "Web · fetch",
"endpoint": "POST /v1/fetch",
"http_code": 200,
"ok": true,
"latency_ms": 731.4,
"result": {
"bytes": 113707
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "web_gather",
"name": "Web · gather (evidence)",
"endpoint": "POST /v1/gather",
"http_code": 200,
"ok": true,
"latency_ms": 3115.4,
"result": {
"evidence_items": 5,
"urls_found": 5
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "catalog",
"name": "Catalog · status",
"endpoint": "GET /catalog/v1/status",
"http_code": 200,
"ok": true,
"latency_ms": 81.8,
"result": {
"status": "healthy",
"components": [
"llm-inference",
"audio-transcription",
"video-analysis",
"web-factcheck"
]
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "catalog_components",
"name": "Catalog · components",
"endpoint": "GET /catalog/v1/components",
"http_code": 200,
"ok": true,
"latency_ms": 76.0,
"result": {
"components": 4
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "catalog_models",
"name": "Catalog · models",
"endpoint": "GET /catalog/v1/models",
"http_code": 200,
"ok": true,
"latency_ms": 67.9,
"result": {
"models": 3
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "gateway",
"name": "Gateway (auth+rutare)",
"endpoint": "GET /health + 401",
"http_code": 200,
"ok": true,
"latency_ms": 8.8,
"result": {
"health": 200,
"web_no_auth": 401
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "brain_atoms",
"name": "Brain · analysis_atom",
"endpoint": "GET /v1/analysis_atom/stats/extended",
"http_code": 200,
"ok": true,
"latency_ms": 15.3,
"result": {
"total_atoms": 9,
"by_tier": {
"gold": 4,
"silver": 3,
"bronze": 2
}
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "brain_facts",
"name": "Brain · fact_status",
"endpoint": "GET /v1/fact_status/list",
"http_code": 200,
"ok": true,
"latency_ms": 14.5,
"result": {
"total": 7
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "brain_vcache",
"name": "Brain · verification_cache",
"endpoint": "GET /v1/verification_cache/list",
"http_code": 200,
"ok": true,
"latency_ms": 11.3,
"result": {
"total": 5
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "brain_search",
"name": "Brain · search (RAG)",
"endpoint": "POST /v1/search",
"http_code": 200,
"ok": true,
"latency_ms": 3044.4,
"result": {
"total_results": 0,
"cache": "MISS"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "brain_gather",
"name": "Brain · gather (RAG)",
"endpoint": "POST /v1/gather",
"http_code": 200,
"ok": true,
"latency_ms": 3038.3,
"result": {
"evidence_items": 0,
"urls": 0
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "dashboard",
"name": "Dashboard · health",
"endpoint": "GET /health",
"http_code": 200,
"ok": true,
"latency_ms": 19.3,
"result": {
"status": "healthy",
"db": true
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "dashboard_monitoring",
"name": "Dashboard · monitoring 11/11",
"endpoint": "GET /api/monitoring/services",
"http_code": 200,
"ok": true,
"latency_ms": 107.6,
"result": {
"healthy": "11/11"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "cloak",
"name": "Cloak · SERP scraper",
"endpoint": "POST /v1/search",
"http_code": 200,
"ok": true,
"latency_ms": 1991.0,
"result": {
"results": 3,
"first": "Deepfake - Wikipedia"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
}
]
}

View file

@ -1,249 +0,0 @@
{
"generated_at": "2026-06-27T14:34:04.610734+03:00",
"host": "10.11.10.18",
"summary": {
"total": 17,
"passed": 17,
"failed": 0
},
"tests": [
{
"id": "llm",
"name": "LLM (Qwen3.5-35B-A3B)",
"endpoint": "POST /v1/chat/completions",
"http_code": 200,
"ok": true,
"latency_ms": 424.6,
"result": {
"reply": "Un deepfake este un conținut media manipulat prin tehnologia inteligenței artificiale, care înlocuiește fața sau vocea unei persoane cu cea a alteia pentru a crea imagini sau înregistrări video extrem de realiste, dar falsificate."
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "embeddings",
"name": "Embeddings (bge-m3)",
"endpoint": "POST /v1/embeddings",
"http_code": 200,
"ok": true,
"latency_ms": 42.5,
"result": {
"dim": 1024
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "rerank",
"name": "Rerank (bge-reranker-v2-m3)",
"endpoint": "POST /v1/rerank",
"http_code": 200,
"ok": true,
"latency_ms": 33.3,
"result": {
"top_index": 1,
"score": 0.626
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "audio",
"name": "Audio (Whisper large-v3-turbo)",
"endpoint": "POST /v1/audio/transcriptions",
"http_code": 200,
"ok": true,
"latency_ms": 251.9,
"result": {
"text": "Nici nu mai știi cine este de fapt agresorul și agresatul. De ce? Simplu. Pentru că în acest moment, Uniunea Europeană...",
"language": "ro"
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "video",
"name": "Video/BusterX (deepfake)",
"endpoint": "POST /analyze/video",
"http_code": 200,
"ok": true,
"latency_ms": 1355.9,
"result": {
"verdict": "REAL",
"frames_analyzed": 16
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "extractors_metadata",
"name": "Extractors · metadata",
"endpoint": "POST /v1/metadata",
"http_code": 200,
"ok": true,
"latency_ms": 275.1,
"result": {
"media_type": "video",
"sha256": "27d6c00786e63905"
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "extractors_ner",
"name": "Extractors · NER (GLiNER)",
"endpoint": "POST /v1/ner",
"http_code": 200,
"ok": true,
"latency_ms": 813.0,
"result": {
"entities": [
"Klaus Iohannis:persoană",
"Emmanuel Macron:persoană",
"Bucuresti:locație"
]
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "extractors_detect",
"name": "Extractors · detect (YOLOv8)",
"endpoint": "POST /v1/detect",
"http_code": 200,
"ok": true,
"latency_ms": 1464.4,
"result": {
"objects": 4,
"labels": [
"person",
"person",
"person",
"person"
]
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "extractors_ocr",
"name": "Extractors · OCR (LLM vision)",
"endpoint": "POST /v1/ocr",
"http_code": 200,
"ok": true,
"latency_ms": 5621.1,
"result": {
"text": "Asa arată\nANTI-ROMÂNISMUL\n22:08\nVOCEA LIBERTĂȚII\n15 AUG. 25\nALASKA\nTRUMP VS PUTIN\nTikTok\n@ ovi1623\n>> Da. Deci acuma nici nu mai știi cine"
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "extractors_sentiment",
"name": "Extractors · sentiment (LLM)",
"endpoint": "POST /v1/sentiment",
"http_code": 200,
"ok": true,
"latency_ms": 551.3,
"result": {
"label": "pozitiv",
"score": 0.9
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "forensic",
"name": "Forensic (rPPG/lip-sync/...)",
"endpoint": "GET /api/forensic-modules",
"http_code": 200,
"ok": true,
"latency_ms": 6.3,
"result": {
"modules": [
"m25",
"m26",
"m27",
"m28",
"m29"
]
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "web",
"name": "Web search (SearXNG)",
"endpoint": "POST /v1/search",
"http_code": 200,
"ok": true,
"latency_ms": 1504.0,
"result": {
"results": 3,
"first": "AI Deepfake Detection Online Free - Images, Videos, Voices"
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "catalog",
"name": "Catalog (via gateway)",
"endpoint": "GET /catalog/v1/status",
"http_code": 200,
"ok": true,
"latency_ms": 68.9,
"result": {
"status": "healthy",
"components": [
"llm-inference",
"audio-transcription",
"video-analysis",
"web-factcheck"
]
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "gateway",
"name": "Gateway (auth+rutare)",
"endpoint": "GET /health + 401",
"http_code": 200,
"ok": true,
"latency_ms": 7.3,
"result": {
"health": 200,
"web_no_auth": 401
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "brain_atoms",
"name": "Brain · analysis_atom",
"endpoint": "GET /v1/analysis_atom/stats/extended",
"http_code": 200,
"ok": true,
"latency_ms": 54.1,
"result": {
"total_atoms": 9,
"by_tier": {
"gold": 4,
"silver": 3,
"bronze": 2
}
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "brain_facts",
"name": "Brain · fact_status",
"endpoint": "GET /v1/fact_status/list",
"http_code": 200,
"ok": true,
"latency_ms": 16.3,
"result": {
"total": 7
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
},
{
"id": "brain_vcache",
"name": "Brain · verification_cache",
"endpoint": "GET /v1/verification_cache/list",
"http_code": 200,
"ok": true,
"latency_ms": 22.8,
"result": {
"total": 5
},
"checked_at": "2026-06-27T14:34:04.610734+03:00"
}
]
}

View file

@ -1,422 +0,0 @@
{
"generated_at": "2026-06-27T14:43:58.666410+03:00",
"host": "10.11.10.18",
"summary": {
"total": 30,
"passed": 30,
"failed": 0
},
"tests": [
{
"id": "llm",
"name": "LLM (Qwen3.5-35B-A3B)",
"endpoint": "POST /v1/chat/completions",
"http_code": 200,
"ok": true,
"latency_ms": 400.6,
"result": {
"reply": "Deepfake este o tehnică de manipulare a conținutului multimedia care utilizează inteligența artificială pentru a înlocua fața sau vocea unei persoane reale cu cea a alteia, creând astfel imagini sau videoclipuri extrem de realiste dar false."
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "llm_completions",
"name": "LLM · completions",
"endpoint": "POST /v1/completions",
"http_code": 200,
"ok": true,
"latency_ms": 122.0,
"result": {
"text": " Bucuresti.\n\n<think>\n\n</think>\n\nAfirm"
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "llm_info",
"name": "LLM · info",
"endpoint": "GET /v1/info",
"http_code": 200,
"ok": true,
"latency_ms": 12.9,
"result": {
"keys": [
"resource",
"models",
"functions"
]
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "embeddings",
"name": "Embeddings (bge-m3)",
"endpoint": "POST /v1/embeddings",
"http_code": 200,
"ok": true,
"latency_ms": 41.8,
"result": {
"dim": 1024
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "rerank",
"name": "Rerank (bge-reranker-v2-m3)",
"endpoint": "POST /v1/rerank",
"http_code": 200,
"ok": true,
"latency_ms": 39.7,
"result": {
"top_index": 1,
"score": 0.626
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "audio",
"name": "Audio (Whisper large-v3-turbo)",
"endpoint": "POST /v1/audio/transcriptions",
"http_code": 200,
"ok": true,
"latency_ms": 372.5,
"result": {
"text": "Nici nu mai știi cine este de fapt agresorul și agresatul. De ce? Simplu. Pentru că în acest moment, Uniunea Europeană...",
"language": "ro"
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "video",
"name": "Video/BusterX (deepfake)",
"endpoint": "POST /analyze/video",
"http_code": 200,
"ok": true,
"latency_ms": 1384.5,
"result": {
"verdict": "REAL",
"frames_analyzed": 16
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "video_semantic",
"name": "Video · semantic",
"endpoint": "POST /analyze/video/semantic",
"http_code": 200,
"ok": true,
"latency_ms": 27228.4,
"result": {
"num_chunks": 5,
"summary": "[Aggregation failed: Client error '404 Not Found' for url 'http://didiai-llm-api:14011/v1/v1/chat/completions'\nFor more "
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "extractors_metadata",
"name": "Extractors · metadata",
"endpoint": "POST /v1/metadata",
"http_code": 200,
"ok": true,
"latency_ms": 320.3,
"result": {
"media_type": "video",
"sha256": "27d6c00786e63905"
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "extractors_ner",
"name": "Extractors · NER (GLiNER)",
"endpoint": "POST /v1/ner",
"http_code": 200,
"ok": true,
"latency_ms": 115.1,
"result": {
"entities": [
"Klaus Iohannis:persoană",
"Emmanuel Macron:persoană",
"Bucuresti:locație"
]
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "extractors_detect",
"name": "Extractors · detect (YOLOv8)",
"endpoint": "POST /v1/detect",
"http_code": 200,
"ok": true,
"latency_ms": 53.7,
"result": {
"objects": 4,
"labels": [
"person",
"person",
"person",
"person"
]
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "extractors_ocr",
"name": "Extractors · OCR (LLM vision)",
"endpoint": "POST /v1/ocr",
"http_code": 200,
"ok": true,
"latency_ms": 701.6,
"result": {
"text": "Asa arată\nANTI-ROMÂNISMUL\n22:08\nVOCEA LIBERTĂȚII\n15 AUG. 25\nALASKA\nTRUMP VS PUTIN\nTikTok\n@ ovi1623\n>> Da. Deci acuma nici nu mai știi cine"
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "extractors_sentiment",
"name": "Extractors · sentiment (LLM)",
"endpoint": "POST /v1/sentiment",
"http_code": 200,
"ok": true,
"latency_ms": 552.9,
"result": {
"label": "pozitiv",
"score": 0.9
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "forensic",
"name": "Forensic · module list",
"endpoint": "GET /api/forensic-modules",
"http_code": 200,
"ok": true,
"latency_ms": 8.7,
"result": {
"modules": [
"m25",
"m26",
"m27",
"m28",
"m29"
]
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "forensic_evidence",
"name": "Forensic · analiza reala",
"endpoint": "POST /api/forensic-evidence",
"http_code": 200,
"ok": true,
"latency_ms": 9039.9,
"result": {
"modules_run": [
"m25",
"m26",
"m27",
"m28",
"m29"
],
"frames": 131
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "web",
"name": "Web · search (SearXNG)",
"endpoint": "POST /v1/search",
"http_code": 200,
"ok": true,
"latency_ms": 841.4,
"result": {
"results": 3,
"first": "AI Deepfake Detection Online Free - Images, Videos, Voices"
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "web_fetch",
"name": "Web · fetch",
"endpoint": "POST /v1/fetch",
"http_code": 200,
"ok": true,
"latency_ms": 554.3,
"result": {
"bytes": 113707
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "web_gather",
"name": "Web · gather (evidence)",
"endpoint": "POST /v1/gather",
"http_code": 200,
"ok": true,
"latency_ms": 2911.9,
"result": {
"evidence_items": 5,
"urls_found": 5
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "catalog",
"name": "Catalog · status",
"endpoint": "GET /catalog/v1/status",
"http_code": 200,
"ok": true,
"latency_ms": 73.8,
"result": {
"status": "healthy",
"components": [
"llm-inference",
"audio-transcription",
"video-analysis",
"web-factcheck"
]
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "catalog_components",
"name": "Catalog · components",
"endpoint": "GET /catalog/v1/components",
"http_code": 200,
"ok": true,
"latency_ms": 70.6,
"result": {
"components": 4
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "catalog_models",
"name": "Catalog · models",
"endpoint": "GET /catalog/v1/models",
"http_code": 200,
"ok": true,
"latency_ms": 55.7,
"result": {
"models": 3
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "gateway",
"name": "Gateway (auth+rutare)",
"endpoint": "GET /health + 401",
"http_code": 200,
"ok": true,
"latency_ms": 7.1,
"result": {
"health": 200,
"web_no_auth": 401
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "brain_atoms",
"name": "Brain · analysis_atom",
"endpoint": "GET /v1/analysis_atom/stats/extended",
"http_code": 200,
"ok": true,
"latency_ms": 36.1,
"result": {
"total_atoms": 9,
"by_tier": {
"gold": 4,
"silver": 3,
"bronze": 2
}
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "brain_facts",
"name": "Brain · fact_status",
"endpoint": "GET /v1/fact_status/list",
"http_code": 200,
"ok": true,
"latency_ms": 13.3,
"result": {
"total": 7
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "brain_vcache",
"name": "Brain · verification_cache",
"endpoint": "GET /v1/verification_cache/list",
"http_code": 200,
"ok": true,
"latency_ms": 13.7,
"result": {
"total": 5
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "brain_search",
"name": "Brain · search (RAG)",
"endpoint": "POST /v1/search",
"http_code": 200,
"ok": true,
"latency_ms": 3040.4,
"result": {
"total_results": 0,
"cache": "MISS"
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "brain_gather",
"name": "Brain · gather (RAG)",
"endpoint": "POST /v1/gather",
"http_code": 200,
"ok": true,
"latency_ms": 3042.0,
"result": {
"evidence_items": 0,
"urls": 0
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "dashboard",
"name": "Dashboard · health",
"endpoint": "GET /health",
"http_code": 200,
"ok": true,
"latency_ms": 14.0,
"result": {
"status": "healthy",
"db": true
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "dashboard_monitoring",
"name": "Dashboard · monitoring 11/11",
"endpoint": "GET /api/monitoring/services",
"http_code": 200,
"ok": true,
"latency_ms": 129.6,
"result": {
"healthy": "11/11"
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
},
{
"id": "cloak",
"name": "Cloak · SERP scraper",
"endpoint": "POST /v1/search",
"http_code": 200,
"ok": true,
"latency_ms": 2014.3,
"result": {
"results": 3,
"first": "Deepfake - Wikipedia"
},
"checked_at": "2026-06-27T14:43:58.666410+03:00"
}
]
}

View file

@ -1,422 +0,0 @@
{
"generated_at": "2026-06-27T14:46:37.623279+03:00",
"host": "10.11.10.18",
"summary": {
"total": 30,
"passed": 30,
"failed": 0
},
"tests": [
{
"id": "llm",
"name": "LLM (Qwen3.5-35B-A3B)",
"endpoint": "POST /v1/chat/completions",
"http_code": 200,
"ok": true,
"latency_ms": 342.2,
"result": {
"reply": "Un deepfake este o media manipulat, realizat prin tehnologia inteligenței artificiale, care înlocuiează cu realism înspăimântător fața sau vocea unei persoane cu cea a altcuiva."
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "llm_completions",
"name": "LLM · completions",
"endpoint": "POST /v1/completions",
"http_code": 200,
"ok": true,
"latency_ms": 111.8,
"result": {
"text": " un oras care atrage foarte multi turisti si"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "llm_info",
"name": "LLM · info",
"endpoint": "GET /v1/info",
"http_code": 200,
"ok": true,
"latency_ms": 14.5,
"result": {
"keys": [
"resource",
"models",
"functions"
]
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "embeddings",
"name": "Embeddings (bge-m3)",
"endpoint": "POST /v1/embeddings",
"http_code": 200,
"ok": true,
"latency_ms": 43.8,
"result": {
"dim": 1024
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "rerank",
"name": "Rerank (bge-reranker-v2-m3)",
"endpoint": "POST /v1/rerank",
"http_code": 200,
"ok": true,
"latency_ms": 39.3,
"result": {
"top_index": 1,
"score": 0.626
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "audio",
"name": "Audio (Whisper large-v3-turbo)",
"endpoint": "POST /v1/audio/transcriptions",
"http_code": 200,
"ok": true,
"latency_ms": 371.3,
"result": {
"text": "Nici nu mai știi cine este de fapt agresorul și agresatul. De ce? Simplu. Pentru că în acest moment, Uniunea Europeană...",
"language": "ro"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "video",
"name": "Video/BusterX (deepfake)",
"endpoint": "POST /analyze/video",
"http_code": 200,
"ok": true,
"latency_ms": 1389.8,
"result": {
"verdict": "REAL",
"frames_analyzed": 16
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "video_semantic",
"name": "Video · semantic",
"endpoint": "POST /analyze/video/semantic",
"http_code": 200,
"ok": true,
"latency_ms": 18390.9,
"result": {
"num_chunks": 5,
"summary": "The video presents a continuous, polemical monologue delivered by a male speaker in a studio setting, likely a podcast o"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "extractors_metadata",
"name": "Extractors · metadata",
"endpoint": "POST /v1/metadata",
"http_code": 200,
"ok": true,
"latency_ms": 284.1,
"result": {
"media_type": "video",
"sha256": "27d6c00786e63905"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "extractors_ner",
"name": "Extractors · NER (GLiNER)",
"endpoint": "POST /v1/ner",
"http_code": 200,
"ok": true,
"latency_ms": 262.9,
"result": {
"entities": [
"Klaus Iohannis:persoană",
"Emmanuel Macron:persoană",
"Bucuresti:locație"
]
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "extractors_detect",
"name": "Extractors · detect (YOLOv8)",
"endpoint": "POST /v1/detect",
"http_code": 200,
"ok": true,
"latency_ms": 77.1,
"result": {
"objects": 4,
"labels": [
"person",
"person",
"person",
"person"
]
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "extractors_ocr",
"name": "Extractors · OCR (LLM vision)",
"endpoint": "POST /v1/ocr",
"http_code": 200,
"ok": true,
"latency_ms": 684.6,
"result": {
"text": "Asa arată\nANTI-ROMÂNISMUL\n22:08\nVOCEA LIBERTĂȚII\n15 AUG. 25\nALASKA\nTRUMP VS PUTIN\nTikTok\n@ ovi1623\n>> Da. Deci acuma nici nu mai știi cine"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "extractors_sentiment",
"name": "Extractors · sentiment (LLM)",
"endpoint": "POST /v1/sentiment",
"http_code": 200,
"ok": true,
"latency_ms": 551.5,
"result": {
"label": "pozitiv",
"score": 0.9
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "forensic",
"name": "Forensic · module list",
"endpoint": "GET /api/forensic-modules",
"http_code": 200,
"ok": true,
"latency_ms": 9.5,
"result": {
"modules": [
"m25",
"m26",
"m27",
"m28",
"m29"
]
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "forensic_evidence",
"name": "Forensic · analiza reala",
"endpoint": "POST /api/forensic-evidence",
"http_code": 200,
"ok": true,
"latency_ms": 9563.6,
"result": {
"modules_run": [
"m25",
"m26",
"m27",
"m28",
"m29"
],
"frames": 131
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "web",
"name": "Web · search (SearXNG)",
"endpoint": "POST /v1/search",
"http_code": 200,
"ok": true,
"latency_ms": 1303.6,
"result": {
"results": 3,
"first": "AI Deepfake Detection Online Free - Images, Videos, Voices"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "web_fetch",
"name": "Web · fetch",
"endpoint": "POST /v1/fetch",
"http_code": 200,
"ok": true,
"latency_ms": 731.4,
"result": {
"bytes": 113707
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "web_gather",
"name": "Web · gather (evidence)",
"endpoint": "POST /v1/gather",
"http_code": 200,
"ok": true,
"latency_ms": 3115.4,
"result": {
"evidence_items": 5,
"urls_found": 5
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "catalog",
"name": "Catalog · status",
"endpoint": "GET /catalog/v1/status",
"http_code": 200,
"ok": true,
"latency_ms": 81.8,
"result": {
"status": "healthy",
"components": [
"llm-inference",
"audio-transcription",
"video-analysis",
"web-factcheck"
]
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "catalog_components",
"name": "Catalog · components",
"endpoint": "GET /catalog/v1/components",
"http_code": 200,
"ok": true,
"latency_ms": 76.0,
"result": {
"components": 4
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "catalog_models",
"name": "Catalog · models",
"endpoint": "GET /catalog/v1/models",
"http_code": 200,
"ok": true,
"latency_ms": 67.9,
"result": {
"models": 3
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "gateway",
"name": "Gateway (auth+rutare)",
"endpoint": "GET /health + 401",
"http_code": 200,
"ok": true,
"latency_ms": 8.8,
"result": {
"health": 200,
"web_no_auth": 401
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "brain_atoms",
"name": "Brain · analysis_atom",
"endpoint": "GET /v1/analysis_atom/stats/extended",
"http_code": 200,
"ok": true,
"latency_ms": 15.3,
"result": {
"total_atoms": 9,
"by_tier": {
"gold": 4,
"silver": 3,
"bronze": 2
}
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "brain_facts",
"name": "Brain · fact_status",
"endpoint": "GET /v1/fact_status/list",
"http_code": 200,
"ok": true,
"latency_ms": 14.5,
"result": {
"total": 7
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "brain_vcache",
"name": "Brain · verification_cache",
"endpoint": "GET /v1/verification_cache/list",
"http_code": 200,
"ok": true,
"latency_ms": 11.3,
"result": {
"total": 5
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "brain_search",
"name": "Brain · search (RAG)",
"endpoint": "POST /v1/search",
"http_code": 200,
"ok": true,
"latency_ms": 3044.4,
"result": {
"total_results": 0,
"cache": "MISS"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "brain_gather",
"name": "Brain · gather (RAG)",
"endpoint": "POST /v1/gather",
"http_code": 200,
"ok": true,
"latency_ms": 3038.3,
"result": {
"evidence_items": 0,
"urls": 0
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "dashboard",
"name": "Dashboard · health",
"endpoint": "GET /health",
"http_code": 200,
"ok": true,
"latency_ms": 19.3,
"result": {
"status": "healthy",
"db": true
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "dashboard_monitoring",
"name": "Dashboard · monitoring 11/11",
"endpoint": "GET /api/monitoring/services",
"http_code": 200,
"ok": true,
"latency_ms": 107.6,
"result": {
"healthy": "11/11"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
},
{
"id": "cloak",
"name": "Cloak · SERP scraper",
"endpoint": "POST /v1/search",
"http_code": 200,
"ok": true,
"latency_ms": 1991.0,
"result": {
"results": 3,
"first": "Deepfake - Wikipedia"
},
"checked_at": "2026-06-27T14:46:37.623279+03:00"
}
]
}

0
ai_platform/local_gpu_stack/seed/seed_brain.sh Normal file → Executable file
View file

0
ai_platform/local_gpu_stack/seed/seed_catalog.sh Normal file → Executable file
View file