didi-lot2-backend/backend/CLAUDE.md
2026-07-10 03:39:53 -07:00

6 KiB
Raw Permalink Blame History

DIDI Backend Platform

Misinformation detection platform — 3-layer microservices architecture (TypeScript/Node.js).

⚠️ READ FIRST: 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

# 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