OpenTMS: diegimas ir technologijos
Visa sistema veikia viename serveryje: debesyje, kurį prižiūrime mes, arba jūsų infrastruktūroje. Čia – ko reikia serveriui, kaip sudėliotos dalys ir kuo jos sukurtos.
Serverio reikalavimai
Mažiausias serveris tinka išbandyti sistemą ar vienai nedidelei įmonei. Produkcijos stulpelis – serveris, kuriam suplanuotas mūsų debesis su daug įmonių.
| Kas | Mažiausiai | Produkcijai |
|---|---|---|
| Procesorius | 2 vCPU, x86-64 | 8 branduoliai, x86-64 |
| Atmintis | 4 GB RAM | 64 GB RAM |
| Diskas | 40 GB SSD | 2 × 512 GB NVMe, RAID 1 |
| Operacinė sistema | Ubuntu 24.04 arba 26.04 LTS | Ubuntu 24.04 arba 26.04 LTS |
| Programinė įranga | Docker Engine ir Compose v2 | Docker Engine ir Compose v2 |
| Tinklas | Vieša IP, 80 ir 443 prievadai | Vieša IP, 80 ir 443 prievadai, WireGuard |
| Domenai | Biuro, vairuotojo ir API adresai | Biuro, vairuotojo ir API adresai |
| Atsarginės kopijos | Serverio diske | Ir išorėje: S3 saugykla arba SFTP |
Procesorius – x86-64 (amd64). 4 GB atminties užtenka, kad nauja versija būtų surinkta šalia veikiančios; tam diske turi būti bent 6 GB laisvos vietos. PostgreSQL atminties nustatymai apskaičiuojami pagal serverio RAM.
Architektūra
Vienas API, viena duomenų bazė ir vienas darbininkas fone. Kiekviena išorinė paslauga jungiama per savo adapterį, o daugumą jų galima išjungti.
Duomenų modelis
Kiekviena eilutė priklauso paskyrai, o duomenų bazė pati neleidžia matyti kitos įmonės duomenų.
Technologijos
Versijos – tokios, kokios užfiksuotos kode. Jokio Redis, brokerio ar paieškos variklio: šiuos darbus atlieka PostgreSQL.
Sąsaja
- React 19.3 · TypeScript 6.0Biuro ir vairuotojo programos
- Vite 8.3Surinkimas ir kūrimo serveris
- TanStack Query 5.104Serverio duomenys biuro programoje
- AG Grid Community 36.2Užsakymų lentelė
- Tailwind CSS 3.4 · Radix UIKomponentai (shadcn/ui)
- MapLibre GL 6.16Žemėlapiai
- Dexie 4.4 · Workbox 7.4Vairuotojo programa veikia be ryšio (PWA)
- openapi-fetch 0.17API klientas, sugeneruotas iš OpenAPI
Serverio dalis
- Python 3.13 · uvViena kalba API, darbininkui ir komandinei eilutei
- FastAPI 0.143 · Uvicorn 0.54REST API ir gyvas srautas (SSE)
- Pydantic 2.14Duomenų tikrinimas ir nustatymai
- asyncpg 0.32Grynas SQL, be ORM
- WeasyPrint 70PDF dokumentai
- structlog 26.1JSON žurnalai
- MCP Python SDK 2.3MCP serveris AI asistentams
- Anthropic SDK 1.15Claude Google Vertex AI ES regione
Duomenų bazė
- PostgreSQL 18.6Vienintelė duomenų saugykla
- Row-Level SecurityKiekvienos įmonės duomenys atskirti duomenų bazėje
- dbmate 2.36 · squawk 2.70Migracijos su „up“ ir „down“, tikrinamos
- pgBackRest 2.59Šifruotos atsarginės kopijos ir WAL archyvas
Darbų eilė ir podėlis
- PostgreSQL outboxDarbai įrašomi toje pačioje transakcijoje, be Redis ar BullMQ
- FOR UPDATE SKIP LOCKEDPython darbininkas, darbai paeiliui pagal įmonę
- LISTEN / NOTIFYGyvi pakeitimai be atskiro brokerio
- HTTP cache · zstdFailai su maiša laikomi metus, API – no-store
Prisijungimas ir sauga
- Argon2 · TOTPSlaptažodžiai ir dviejų veiksnių prisijungimas
- OpenID ConnectPrisijungimas su Google ir Microsoft
- OAuthAI asistentų prisijungimas prie MCP serverio
- AES-256-GCMDuomenų bazėje saugomos paslaptys užšifruotos
API
- OpenAPI 3.1 · REST /api/v1Vienas API programoms, integracijoms ir agentams
- ScalarViešas API aprašas api.opentms.app/docs
- Standard WebhooksPasirašyti webhook’ai
- oasdiff 1.33Neleidžia nesuderinamų API pakeitimų
Talpinimas
- Docker · Compose v2Trys atvaizdai: serverio dalis, kraštinis serveris, duomenų bazė
- Caddy 2.11HTTPS (Let’s Encrypt), programos ir /api
- Ubuntu 24.04 / 26.04 LTSnftables ir WireGuard, SSH tik per VPN
- Uptime Kuma 2.5Viešas būsenos puslapis
Testai ir kokybė
- pytest 9.1 · HypothesisTestai su tikra PostgreSQL 18
- Vitest 5 · Testing LibrarySąsajos testai
- Playwright 1.64Visa sistema naršyklėje
- Locust 2.46Apkrova: 3 įmonės × 50 000 užsakymų
- ruff · mypy · ESLint · gitleaksKodo ir paslapčių patikros prieš kiekvieną pakeitimą
Tinka ir vežėjui su keliais vilkikais
Sistema paleidžiama per kelias dienas, be ilgo diegimo, mokymų ir privalomų modulių. Esamus užsakymus galite perkelti įklijavę juos iš Excel.
- 1 · Sukuriate paskyrą ir įmonę
- 2 · Prijungiate Noium raktą
- 3 · Pakviečiate kolegas ir pirmą vairuotoją
Sukurti paskyrą
Prisiregistruokite darbo el. paštu arba Google ar Microsoft paskyra.
Jau turite paskyrą? Prisijungti