Hujjatlardan qidirish

Sahifa yoki bo‘lim nomini kiriting

Asoslar

Arxitektura

Modular monolit, servis chegaralari, dependencylar va data ownership.

Runtime topologiyasi

So‘rov va ma’lumot oqimi
Browser / CLI
      │ HTTPS
    Caddy ─────────────── public edge
      │
  ┌───┴────┐
  │ Web    │ Next.js
  │ Go API │ auth · policy · inference · persistence
  └───┬────┘
      ├──────── PostgreSQL + pgvector (source of truth)
      ├──────── Redis (limits / coordination)
      ├──────── Private S3 (file bytes)
      └──────── AI providers (egress)

  Go Worker ─── DB job leases ─── S3 / extraction

API va worker alohida jarayonlar, lekin bitta domen va PostgreSQL sxemasini ulashadi. Caddy yagona public edge; database, Redis, metrics va object storage private tarmoqlarda qoladi.

Komponent chegaralari

KomponentJavobgarlikDoimiy holat
WebUI, route state, streaming renderingServer API orqali
HTTP APIAuth, RBAC, validation, policy, inferencePostgreSQL transactionlari
WorkerJob claim, extraction, cleanup, retryLease/fencing yozuvlari
PostgreSQLUsers, chats, models, usage, audit, jobsAuthoritative
RedisRate-limit va qisqa coordinationAuthoritative emas
S3Fayl baytlariMetadata DB’da, bytes bucket’da

Asosiy tamoyillar

  • PostgreSQL — yakuniy haqiqat manbasi; kritik holat faqat Redis’da saqlanmaydi.
  • Provider implementatsiyalari yagona adapter interfeysiga normalizatsiya qilinadi.
  • Narxlar floating point emas, integer micros ko‘rinishida hisoblanadi.
  • Background job ownership lease va fencing token bilan himoyalanadi.
  • Upload bayti verified bo‘lmaguncha extraction navbatiga qo‘yilmaydi.
  • Production noto‘g‘ri konfiguratsiyada fail closed qiladi.

Compose tarmoqlari

Compose stack frontend, backend va egress chegaralarini ajratadi. Faqat Caddy host portlariga publish qilinadi. API provider/S3 tomon egress oladi, data servislar esa public interfacega chiqarilmaydi.