9.2 KiB
9.2 KiB
1. Introducere și Context
Chatbot-ul de suport tehnic ROMFAST va oferi răspunsuri asistate de RAG și Claude Agent SDK atât pe website, cât și în Telegram. Arhitectura propusă trebuie să asigure timpul de răspuns sub 5 secunde, disponibilitate ridicată, persistența sesiunilor și integrarea cu infrastructura existentă (Docker în LXC Proxmox).
2. Mapare Cerințe → Soluții Arhitecturale
| Cerință cheie | Soluție arhitecturală |
|---|---|
| FR1, FR2, FR3 | Pipeline RAG (ChromaDB + Claude Agent SDK) cu preprocesare întrebări și scorare rezultate |
| FR4, FR10 | Session store (Redis sau SQLite in-memory backup) accesat de frontend, backend și Telegram |
| FR5–FR7 | Frontend web modular (HTML/JS/CSS) + API JSON standard |
| FR8, FR9 | FastAPI gateway cu CORS, HTTPS și suport query param message |
| FR11–FR15 | Microserviciu Telegram bazat pe python-telegram-bot conectat la același backend |
| NFR1–NFR3 | Containere Docker separate, auto-restart Proxmox, load shedding și cache răspunsuri |
| NFR4–NFR7 | TLS end-to-end, rate limiting, observability (logging centralizat, metrics, alerting) |
3. Vedere Arhitecturală de Nivel Înalt
- Client Web: UI chat responsiv, gestionează sesiuni locale și comunică cu backend via Fetch API.
- Gateway API (FastAPI): Orchestrare request-uri, autentificare sesiunilor anonime, fan-out către servicii interne.
- Serviciu RAG: Normalizare întrebări, căutare vectorială în ChromaDB, construirea contextului și apel Claude.
- ChromaDB + Knowledge Store: Vectori și metadate pentru documentația ROMFAST, pipeline ingestie periodică.
- Session Store: Stocare conversații și context (Redis/SQLite replicat) pentru persistență cross-platform.
- Telegram Bot Service: Handler comenzi, UI prin inline keyboards, sincronizare sesiuni cu gateway-ul.
- Observability Stack: Logging structurat, export metrics (Prometheus compatible) și alerting.
- Infrastructură Docker pe Proxmox LXC: Containere orchestrate manual sau cu docker-compose, SSL terminat via Traefik/nginx reverse proxy.
4. Descriere Componentă cu Componentă
4.1 Client Web
- Responsabilități: UI chat, tip indicators, gestionare localStorage (ID sesiune, istoric recent), trimis întrebări, afișare surse.
- Tehnologii: HTML5, CSS3 (Flex/Grid), ES6 modules, Fetch API, Web Workers opțional pentru preprocesare.
- Interfețe: API REST
/api/chat,/api/session, evenimente SSE/WebSocket pentru actualizări opționale. - Scalare: Servire statică prin CDN/lightweight web server; caching agresiv pentru assets.
4.2 Gateway API (FastAPI)
- Responsabilități: Validare input, rate limiting, orchestrare RAG, management erori, transformare răspunsuri.
- Tehnologii: FastAPI, Uvicorn, Pydantic, middleware CORS/HTTPS, JWT stateless pentru sesiuni anonime (semnare internă).
- Interfețe: REST endpoints
/chat,/session,/history,/health; webhook Telegram/telegram/webhook. - Scalare: Replicare container, load balancing prin reverse proxy, timeouts stricte, circuit breaker către Claude API.
4.3 Serviciu RAG
- Responsabilități: Curățare întrebări, vectorizare (embedding), căutare top-k în ChromaDB, compunere context și prompt engineering pentru Claude.
- Tehnologii: Python, Claude Agent SDK, sentence-transformers (embedding), langchain-like orchestrator.
- Interfețe: gRPC/REST intern expus gateway-ului, contract clar pentru request/response (query, session_id, metadata).
- Scalare: Worker pool asincron, caching răspunsuri populare, fallback la knowledge base static în caz de indisponibilitate Claude.
4.4 ChromaDB și Knowledge Store
- Responsabilități: Stocare vectori, metadate, versiuni documentație.
- Tehnologii: ChromaDB container, storage montat persistent (volume Proxmox), pipeline ingestie (Python ETL) cu scheduler.
- Interfețe: API nativ Chroma, scripturi ingestie (loaders), export pentru backup.
- Scalare: Partajare colecții pe namespace, sharding logic pentru domenii (Contabilitate, Admin, etc.), snapshot backup zilnic.
4.5 Session Store
- Responsabilități: Persistență context conversație, state comenzi Telegram, token TTL.
- Tehnologii: Redis (preferat) cu fallback SQLite on-disk, replică la cald.
- Interfețe: API key/value, TTL, liste pentru istoricul recent; acces prin SDK Python și JS.
- Scalare: Master/replica, persistare RDB/AOF, monitorizare memorie.
4.6 Telegram Bot Service
- Responsabilități: Gestionare comenzi
/start,/menu, etc., generare inline keyboard, relay întrebări către gateway, formatting Markdown. - Tehnologii: python-telegram-bot, async handlers, job queue pentru retry.
- Interfețe: Webhook către gateway, REST fallback polling, servicii interne pentru sesiuni.
- Scalare: Replici multiple cu queue deduplicare (Redis Streams), respectarea rate limit Telegram.
4.7 Observability și DevOps
- Responsabilități: Logging centralizat, metrics (latency, usage), alerting, CI/CD pipelines.
- Tehnologii: Elastic Stack sau Loki+Grafana, Prometheus exporters, Sentry/Opentelemetry pentru tracing.
- Interfețe: Dashboards Grafana, webhook alerting (Slack/Email), pipeline GitHub Actions.
- Scalare: Retenție loguri 30 zile, sampling tracing, rotație indices.
4.8 Infrastructură și Securitate
- Responsabilități: Orchestrare containere, management certificate, firewall, backup.
- Tehnologii: Docker, docker-compose, Traefik/nginx, Proxmox backup server, CrowdSec/Fail2ban.
- Interfețe: Reverse proxy, Let’s Encrypt ACME, scripturi deployment.
- Scalare: Vertical scaling LXC, pregătire migrare spre Kubernetes/Nomad dacă load crește.
5. Fluxuri de Date și Sequencing
5.1 Întrebare din Client Web
- UI trimite request
POST /api/chatcu mesaj și session_id. - Gateway validează, atașează metadata (persona, limbă) și trimite către serviciul RAG.
- Serviciul RAG vectorizează, interoghează ChromaDB, compune prompt cu surse.
- Claude Agent SDK generează răspuns, gateway-l adnotează cu surse și pași.
- Răspunsul este salvat în session store și returnat UI-ului pentru afișare.
5.2 Întrebare din Telegram
- Bot primește mesaj/comandă și trimite payload la webhook-ul gateway-ului.
- Gateway mapează Telegram user_id la session_id comun și procesează similar cu fluxul web.
- Răspunsul este formatat Markdown, validat sub 4096 caractere și trimis înapoi prin bot.
- Istoricul este sincronizat în session store pentru acces cross-platform.
5.3 Manevrarea Erorilor/Fallback
- Dacă Claude sau Chroma sunt indisponibile, gateway revine la răspunsuri cached sau FAQ static.
- În caz de eroare critică, gateway trimite mesaj prietenos utilizatorului și loghează incidentul.
- Scheduler declanșează alerting și reinstanțează containerul afectat.
6. Persistență și Management Date
- Sesiuni: session store cu TTL configurabil (7 zile), replicat, curățare periodică.
- Vectori: ChromaDB cu versiuni documente, index rebuild săptămânal, backup incremental.
- Knowledge base raw: Fișiere markdown/PDF într-un storage versionat (Git + backup Proxmox).
- Loguri și Metrics: Centralizare în Loki/Elastic, metrics în Prometheus, retenție 30 zile.
7. Integrare Telegram Specifică
- Webhook securizat (secret token) expus prin reverse proxy HTTPS.
- Mapare user_id ↔ session_id în session store pentru continuitate conversații.
- Gestionare rate limiting Telegram cu queue și exponential backoff.
- Menu builder modular pentru categorii (Conectare, Erori, Configurare) configurabile din metadata.
- Fallback la notificare suport uman prin integrare viitoare (webhook spre ticketing).
8. Securitate, Conformitate și Observabilitate
- Transport: TLS end-to-end, HSTS, certificate auto-întreținute.
- Rate limiting: NGINX/Traefik + Redis counters pentru prevenire abuz.
- Validare input: Sanitizare text, limită caractere, filtrare cod malițios.
- Privacy: Stocare minimă, criptare at rest pentru vectori și backup, politici GDPR (drept de ștergere).
- Monitoring: Health checks
/healthz, dashboards latență, error rate, uptime. - Alerting: Prag >3% erori, răspuns >4 secunde, spațiu disk <15% liber.
9. Scalabilitate și Reziliență
- Containere separate pentru gateway, RAG, Chroma, Telegram cu resurse dedicate.
- Auto-restart și watchdog scripts în Proxmox, backup zilnic volume critice.
- Circuit breakers și retry policy către Claude API, degrade gracefully la fallback static.
- Posibilă introducere CDN pentru livrare statice și caching răspunsuri frecvente.
10. Roadmap Tehnic (0–6 luni)
- Luna 0–1: Implementare client web + gateway API + RAG minim (Chroma + Claude), ingestie documentație de bază.
- Luna 1–2: Adăugare session store distribuit, logging centralizat, pipeline ingestie automat.
- Luna 2–3: Lansare Telegram bot cu comenzi de bază, sincronizare sesiuni, fallback complet erori.
- Luna 3–4: Introducere metrics/alerting, optimizare performanță, cache răspunsuri.
- Luna 4–6: Extindere knowledge base, analytics dashboard, pregătire pentru scaling (replici, load balancing).