livrare lot 2

This commit is contained in:
EVOTECH IT SRL 2026-07-10 03:39:53 -07:00
commit 8ecc78e729
763 changed files with 164593 additions and 0 deletions

135
backend/CLAUDE.md Normal file
View file

@ -0,0 +1,135 @@
# DIDI Backend Platform
Misinformation detection platform — 3-layer microservices architecture (TypeScript/Node.js).
> **⚠️ READ FIRST**: [`REFACTOR_CONTEXT.md`](./REFACTOR_CONTEXT.md) — convenții, helpers,
> structură nouă post-refactor (sesiune 2026-05-07). Conține pattern-urile
> obligatorii (`log`, `requireEnv`, `internalError`, `lazyRedis`, `acquireLock`,
> `LogicalInputError`, etc) + anti-pattern-uri de evitat + fișierele mari rămase.
## Active Services
| Service | Port | Container | Compose file |
|---------|------|-----------|--------------|
| Agent V3 | 24803 | didi-agent-v3 | `services/orchestration-layer/agent-v3/docker-compose.yml` |
| didiFramework | 3005 | didi-framework | `services/orchestration-layer/didiFramework/docker-compose.yml` |
| Admin Dashboard | 3000 (HTTPS) | didi-admin | `services/data-layer/docker-compose.yml` |
Workers (in agent-v3 compose): worker-techniques ×2, worker-ai-tampered ×2, worker-claims ×3, worker-domain ×2, worker-media-preprocess ×2, verdict-aggregator ×2.
## Quick Commands
```bash
# Rebuild agent-v3 (+ all workers)
cd services/orchestration-layer/agent-v3 && docker compose up -d --build agent-v3
# Rebuild framework
cd services/orchestration-layer/didiFramework && docker compose up -d --build didi-framework
# Rebuild admin dashboard
cd admin-dashboard && docker build -t didi-admin:latest .
cd ../services/data-layer && docker compose up -d --force-recreate didi-admin
# Sync parameters to Redis
docker exec didi-framework sh -c 'wget -qO- --post-data="" http://127.0.0.1:3005/api/sync-redis'
# View logs
docker logs -f didi-agent-v3
docker logs -f didi-framework
```
## Structure
```
backend/
├── admin-dashboard/ # React 19, MUI 7, TypeScript
│ ├── src/components/ # ServiceCard, AnalysisHistory, UserManagement, etc.
│ ├── src/services/api.ts # API client (health checks via Docker container state)
│ ├── nginx-ssl.conf # Nginx proxy (/framework/ → :3005, /agent-v3/ → :24803)
│ └── Dockerfile # Multi-stage: node:20 build → nginx:alpine serve
├── production/ # Production docker-compose + .env
└── services/
├── data-layer/
│ ├── didiCache/ # Redis 7 config
│ ├── didiDatabase/ # Local PG (waitlist only, main DB is external cluster)
│ ├── didiQueue/ # RabbitMQ init scripts
│ ├── didiStorage/ # MinIO init + lifecycle
│ ├── pgadmin/
│ └── docker-compose.yml # All data layer + admin dashboard containers
├── gateway-auth-layer/
│ ├── didiKeycloak/ # Realm import + 3 custom themes
│ └── didiKong/ # Declarative config + SSL certs
└── orchestration-layer/
├── agent-v3/ # Analysis engine (Express 5, TypeScript)
│ ├── src/api/ # routes.ts, ai-tampered-routes.ts, claims-routes.ts, pipeline-routes.ts
│ ├── src/components/ # techniques/, ai-tampered/, claims/, pipeline/ executors
│ ├── src/shared/ # media/, persistence/, redis/, types/
│ ├── src/queue/ # dispatcher.ts, connection.ts, aggregator.ts, workers/
│ └── docker-compose.yml # agent-v3 + 13 worker containers
└── didiFramework/ # Parameters CRUD API (Express 4, TypeScript)
├── src/routes/ # 20+ route files (CRUD for all parameters)
├── sql/migrations/ # PG migrations
└── docker-compose.yml
```
## Databases
| Database | Host | Schema | Used by |
|----------|------|--------|---------|
| DIDI (PG cluster) | 10.11.50.167:5000 | bos_parammgmt | didiFramework (parameters CRUD) |
| | | bos_analysis | agent-v3 (analysis results) |
| | | bos_sysadmin | didiFramework (users, subscriptions) |
| | | bos_subscriber | didiFramework (personal data) |
| Redis | didi-cache:6379 | — | Both (framework config cache, session state) |
| RabbitMQ | rabbitmq:5672 | — | agent-v3 (async analysis queues) |
| MinIO | minio:9000 | — | Both (media file storage) |
## API Routes (Agent V3, all async)
All `/analyze` and `/analyze-media` endpoints dispatch to RabbitMQ workers and return 202.
| Prefix | File | What |
|--------|------|------|
| `/api/v3/techniques/*` | routes.ts | Manipulation technique detection |
| `/api/v3/ai-tampered/*` | ai-tampered-routes.ts | AI content detection |
| `/api/v3/claims/*` | claims-routes.ts | Claim extraction + verification |
| `/api/v3/pipeline/*` | pipeline-routes.ts | Full pipeline, history, extension |
| `/api/v3/source-assessment/*` | source-assessment-routes.ts | Source credibility |
| `/api/v3/domain/*` | routes.ts | Domain analysis |
| `/api/v3/media/*` | routes.ts | File upload/download (MinIO) |
## LLM Models
| Role | Model | Location |
|------|-------|----------|
| Primary (all) | Qwen 3.5 397B | Local GPU 10.11.10.17:14011 |
| Fallback 1 | Claude Sonnet 4.6 (Opus 4.6 for ai-tampered) | OpenRouter |
| Fallback 2 | GPT-4o | OpenRouter |
| Vision | Qwen Vision → Gemini Flash → GPT-4o | 10.11.10.42:14001 + OpenRouter |
| Transcription | M17-Whisper → Groq → OpenAI | 10.11.10.17:54300 + Cloud |
Managed via `component_stage_assignment` PG table → sync to Redis.
## Tech Stack
| Component | Technology |
|-----------|------------|
| Agent V3 | Node.js, TypeScript, Express 5 |
| didiFramework | Node.js, TypeScript, Express 4 |
| Admin Dashboard | React 19, MUI 7, TypeScript |
| Database | PostgreSQL 14 (Patroni/HAProxy) |
| Cache | Redis 7 |
| Queue | RabbitMQ 3.12 |
| Storage | MinIO |
| Gateway | Kong 3.4 (SSL :443) |
| Auth | Keycloak 22 |
## Credentials (Staging)
| Service | User | Password |
|---------|------|----------|
| PostgreSQL (cluster) | bos_interface | interface |
| Redis | — | redis123 |
| RabbitMQ | admin | rabbitmq123 |
| MinIO | minioadmin | minio123 |
| Keycloak | admin@didi.local | admin123 |