Arsitektur & Teknologi¶
EdigSSO Pro dibangun di atas stack teknologi modern dengan paradigma Micro-framework dan arsitektur Monolithic-layered agar mudah di-maintain namun berkinerja tinggi.
1. Arsitektur Singkat¶
┌─────────────────┐ ┌──────────────────┐
│ Browser (Web) │ │ Chrome Extension │ (auto-login, Manifest V3)
│ Jinja2 + JS │ │ service worker │
└────────┬────────┘ └────────┬─────────┘
│ HTTPS / REST │
└───────────┬────────────┘
▼
┌────────────────────────────┐
│ FastAPI (ASGI · Uvicorn) │ ← entry: app.main:app
│ routes → services → models│
└──┬─────────┬─────────┬─────┘
│ │ │
┌───────▼──┐ ┌────▼────┐ ┌──▼─────────────┐ ┌──────────────────┐
│PostgreSQL│ │ Redis │ │ Groq LLM │ │ Odoo Instances │
│ users / │ │ session │ │ llama 3.1/3.3 │ │ JSON-2 / XML-RPC │
│ instances│ │ + cache │ │ + llama-4 OCR │ │ (multi-tenant) │
│ + audit │ └─────────┘ └────────────────┘ └──────────────────┘
└──────────┘
2. Tech Stack Detail¶
| Layer | Teknologi | Versi Target |
|---|---|---|
| Language / Runtime | Python (python:3.11-slim) |
3.11 |
| Web Framework | FastAPI | 0.109.0 |
| ASGI Server | Uvicorn [standard] |
0.27.0 |
| Validation | Pydantic + email-validator | 2.6.0 |
| Templating | Jinja2 (server-rendered) | 3.1.3 |
| Frontend | Vanilla JS + CSS (tanpa framework external) | - |
| Database | PostgreSQL | 15-alpine |
| ORM / Migrations | SQLAlchemy · Alembic · psycopg2-binary | 2.0.25 |
| Cache / Session | Redis + redis-py | 7-alpine |
| AI / LLM | Groq SDK / LangChain | 0.4.2 |
| HTTP Client | httpx | 0.26.0 |
| Auth / Crypto | pyjwt · bcrypt · cryptography (AES-256) | - |
| Containerization | Docker + Docker Compose | - |
3. Komponen Odoo¶
EdigSSO bertindak sebagai Klien Eksternal dari Odoo. Interaksi dengan server Odoo memanfaatkan antarmuka standar:
- SSO Login: Merekayasa antarmuka session di /web/login dan /web/session/get_session_info.
- AI Agent API: Berkomunikasi sepenuhnya melalui protokol JSON-RPC 2.0 Odoo (External API), layaknya aplikasi client resmi Odoo. Tidak ada direct database access dari backend portal ke PostgreSQL milik Odoo.