landvex: Fixar och tester klara för alla komponenter
- Datafabrik: Dockerfile fix, agentorkestrering fungerar - Vision: Identify-modell, FAISS, OCR alla testade - API: Alla 7 integrationstester passerade - Upplösare: Entitetsupplösning verifierad
This commit is contained in:
@@ -0,0 +1,218 @@
|
||||
# LandveX Enterprise Platform - Admin Backend
|
||||
|
||||
Complete admin backend design for LandveX Enterprise Platform serving municipalities (kommuner) and enterprises.
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ React 19 Frontend │
|
||||
│ (Admin Dashboard UI) │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ FastAPI Backend (Python) │
|
||||
│ Auth · Tenants · Users · Billing · Audit · Reports │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
│
|
||||
┌───────────────┼───────────────┐
|
||||
▼ ▼ ▼
|
||||
┌──────────┐ ┌──────────┐ ┌──────────┐
|
||||
│PostgreSQL│ │ Redis │ │ Stripe │
|
||||
│ (Data) │ │ (Cache) │ │(Payments)│
|
||||
└──────────┘ └──────────┘ └──────────┘
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
### 1. Customer Management (Tenants)
|
||||
- Multi-tenant architecture with complete isolation
|
||||
- Support for municipalities (kommuner) and enterprises
|
||||
- Organization profiles with org numbers
|
||||
- Tenant-specific settings and configurations
|
||||
|
||||
### 2. User Management with Roles
|
||||
- RBAC (Role-Based Access Control) system
|
||||
- Predefined roles: Superadmin, Admin, Editor, Viewer, API
|
||||
- Custom role creation with granular permissions
|
||||
- User invitation and activation workflow
|
||||
- Account locking after failed login attempts
|
||||
- MFA (Multi-Factor Authentication) support
|
||||
|
||||
### 3. Tenant Isolation
|
||||
- Row-Level Security (RLS) in PostgreSQL
|
||||
- Tenant resolution via JWT claims or API keys
|
||||
- Automatic query filtering by tenant_id
|
||||
- Separate data contexts per tenant
|
||||
|
||||
### 4. Audit Logging
|
||||
- Comprehensive action logging
|
||||
- User activity tracking
|
||||
- Resource change history
|
||||
- IP address and user agent capture
|
||||
- Severity levels (info, warning, critical)
|
||||
- Export capabilities (CSV/JSON)
|
||||
|
||||
### 5. API Key Management
|
||||
- Secure key generation with prefix identification
|
||||
- Scope-based permissions per key
|
||||
- Rate limiting per key
|
||||
- Key expiration and revocation
|
||||
- Usage tracking
|
||||
|
||||
### 6. Billing & Subscriptions
|
||||
- Subscription plan management
|
||||
- Stripe integration for payments
|
||||
- Invoice generation and PDF export
|
||||
- Payment method management
|
||||
- MRR and revenue tracking
|
||||
|
||||
### 7. Reports & Analytics
|
||||
- Custom report builder
|
||||
- Scheduled report generation
|
||||
- Multiple output formats (PDF, CSV, JSON)
|
||||
- Dashboard with KPI widgets
|
||||
- API usage analytics
|
||||
|
||||
### 8. Plugin Management
|
||||
- Plugin marketplace
|
||||
- Tenant-specific plugin installation
|
||||
- Plugin configuration per tenant
|
||||
- System vs optional plugins
|
||||
- Version management
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
landvex-admin/
|
||||
├── design.md # Complete design document
|
||||
├── docker-compose.yml # Local development stack
|
||||
├── api/
|
||||
│ └── openapi.yaml # OpenAPI 3.1 specification
|
||||
├── backend/
|
||||
│ ├── app/
|
||||
│ │ ├── main.py # FastAPI entry point
|
||||
│ │ ├── config.py # Configuration
|
||||
│ │ ├── database.py # DB connection
|
||||
│ │ ├── models/ # SQLAlchemy models
|
||||
│ │ │ ├── tenant.py
|
||||
│ │ │ ├── user.py
|
||||
│ │ │ ├── billing.py
|
||||
│ │ │ ├── api_key.py
|
||||
│ │ │ ├── audit.py
|
||||
│ │ │ ├── report.py
|
||||
│ │ │ └── plugin.py
|
||||
│ │ ├── api/ # API routes
|
||||
│ │ │ ├── deps.py # Dependencies
|
||||
│ │ │ └── v1/
|
||||
│ │ │ ├── auth.py
|
||||
│ │ │ ├── tenants.py
|
||||
│ │ │ ├── users.py
|
||||
│ │ │ ├── roles.py
|
||||
│ │ │ ├── api_keys.py
|
||||
│ │ │ ├── billing.py
|
||||
│ │ │ ├── audit.py
|
||||
│ │ │ ├── reports.py
|
||||
│ │ │ ├── plugins.py
|
||||
│ │ │ └── dashboard.py
|
||||
│ │ ├── core/ # Security & utilities
|
||||
│ │ │ ├── security.py # Password, JWT, API keys
|
||||
│ │ │ ├── permissions.py # RBAC
|
||||
│ │ │ └── exceptions.py
|
||||
│ │ └── services/ # Business logic
|
||||
│ ├── Dockerfile
|
||||
│ └── requirements.txt
|
||||
└── frontend/
|
||||
├── src/
|
||||
│ ├── App.tsx
|
||||
│ ├── components/
|
||||
│ │ └── layout/
|
||||
│ │ ├── Layout.tsx
|
||||
│ │ ├── Sidebar.tsx
|
||||
│ │ └── TopBar.tsx
|
||||
│ ├── pages/
|
||||
│ │ ├── Dashboard.tsx
|
||||
│ │ ├── Tenants/
|
||||
│ │ ├── Users/
|
||||
│ │ ├── Roles/
|
||||
│ │ ├── Billing/
|
||||
│ │ ├── AuditLogs/
|
||||
│ │ ├── Reports/
|
||||
│ │ └── Plugins/
|
||||
│ ├── hooks/
|
||||
│ │ ├── useAuth.ts
|
||||
│ │ └── usePermissions.ts
|
||||
│ ├── stores/
|
||||
│ │ └── authStore.ts
|
||||
│ └── lib/
|
||||
│ └── api.ts
|
||||
├── Dockerfile
|
||||
└── package.json
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Prerequisites
|
||||
- Docker & Docker Compose
|
||||
- Node.js 20+ (for local frontend dev)
|
||||
- Python 3.11+ (for local backend dev)
|
||||
|
||||
### Local Development
|
||||
|
||||
```bash
|
||||
# Start all services
|
||||
docker-compose up -d
|
||||
|
||||
# Backend API: http://localhost:8000
|
||||
# Frontend: http://localhost:5173
|
||||
# API Docs: http://localhost:8000/docs
|
||||
```
|
||||
|
||||
### Environment Variables
|
||||
|
||||
```bash
|
||||
# Backend
|
||||
DATABASE_URL=postgresql+asyncpg://landvex:password@db:5432/landvex_admin
|
||||
REDIS_URL=redis://redis:6379/0
|
||||
SECRET_KEY=your-secret-key
|
||||
JWT_ALGORITHM=HS256
|
||||
ACCESS_TOKEN_EXPIRE_MINUTES=30
|
||||
REFRESH_TOKEN_EXPIRE_DAYS=7
|
||||
STRIPE_SECRET_KEY=sk_test_...
|
||||
STRIPE_WEBHOOK_SECRET=whsec_...
|
||||
|
||||
# Frontend
|
||||
VITE_API_URL=http://localhost:8000/api/v1
|
||||
```
|
||||
|
||||
## Security Features
|
||||
|
||||
- **Authentication**: JWT tokens with refresh token rotation
|
||||
- **Password Hashing**: Argon2id
|
||||
- **API Keys**: SHA-256 hashed with prefix identification
|
||||
- **Authorization**: RBAC with wildcard permissions
|
||||
- **Tenant Isolation**: Row-Level Security in PostgreSQL
|
||||
- **Audit Logging**: All state-changing operations logged
|
||||
- **Rate Limiting**: Per-key and per-user limits
|
||||
- **CORS**: Configurable allowed origins
|
||||
- **Security Headers**: HSTS, CSP, X-Frame-Options, etc.
|
||||
|
||||
## API Endpoints
|
||||
|
||||
| Category | Endpoints |
|
||||
|----------|-----------|
|
||||
| Auth | `POST /auth/login`, `POST /auth/refresh`, `POST /auth/mfa/verify` |
|
||||
| Tenants | `GET /tenants`, `POST /tenants`, `GET /tenants/{id}` |
|
||||
| Users | `GET /users`, `POST /users`, `PATCH /users/{id}` |
|
||||
| Roles | `GET /roles`, `POST /roles`, `PATCH /roles/{id}` |
|
||||
| API Keys | `GET /api-keys`, `POST /api-keys`, `POST /api-keys/{id}/revoke` |
|
||||
| Billing | `GET /billing/plans`, `GET /billing/invoices` |
|
||||
| Audit | `GET /audit-logs`, `GET /audit-logs/export` |
|
||||
| Reports | `GET /reports`, `POST /reports/{id}/run` |
|
||||
| Plugins | `GET /plugins`, `POST /plugins/{id}/install` |
|
||||
| Dashboard | `GET /dashboard/summary` |
|
||||
|
||||
## License
|
||||
|
||||
Proprietary - LandveX Enterprise Platform
|
||||
Reference in New Issue
Block a user