OPTRALIS - Specifications Techniques 2026¶
Document Technique : Quotas AI, Couts, Implementation
1. Resume Technique¶
| Plan | Machines | Quota AI/mois | Cout API | Cout Infra | Cout Total | Marge |
|---|---|---|---|---|---|---|
| Starter | 25 | 150 | ~3.50 EUR | ~0.88 EUR | ~4.38 EUR | 94% |
| Essentials | 75 | 300 | ~7 EUR | ~2.38 EUR | ~9.38 EUR | 94% |
| Pro | 200 | 1,500 | ~35 EUR | ~6.13 EUR | ~41.13 EUR | 88% |
| Business | 500 | 5,000 | ~115 EUR | ~15.13 EUR | ~130.13 EUR | 80% |
| Enterprise | Illimite | 15,000 | ~350 EUR | ~30.13 EUR | ~380.13 EUR | Var. |
2. Couts API Claude Sonnet 4¶
Prix Anthropic¶
| Type | Prix |
|---|---|
| Input tokens | $3 / 1M tokens |
| Output tokens | $15 / 1M tokens |
Consommation par Analyse¶
Base sur l'analyse des prompts dans ai-service/internal/claude/prompts.go :
| Composant | Tokens estimes |
|---|---|
| System prompt | ~600 |
| User prompt (metriques, logs, SMART data) | ~2,500 |
| Total Input | ~3,100 |
| Output JSON (analyse + recommandations) | ~900 |
| Total Output | ~900 |
Cout Unitaire par Analyse¶
Input: 3,100 x $3 / 1,000,000 = $0.0093
Output: 900 x $15 / 1,000,000 = $0.0135
-----------------------------------------
TOTAL: $0.0228 (~$0.025 arrondi)
Cout API par Plan¶
| Plan | Quota/mois | Cout API/mois |
|---|---|---|
| Starter | 150 | 150 x $0.025 = $3.75 (~3.50 EUR) |
| Essentials | 300 | 300 x $0.025 = $7.50 (~7 EUR) |
| Pro | 1,500 | 1,500 x $0.025 = $37.50 (~35 EUR) |
| Business | 5,000 | 5,000 x $0.025 = $125 (~115 EUR) |
| Enterprise | 15,000 | 15,000 x $0.025 = $375 (~350 EUR) |
Conversion : 1$ = 0.92 EUR
3. Couts Infrastructure Hetzner¶
Couts Fixes par Palier de Scaling¶
| Palier | VPS Hetzner | Capacite | Cout/mois |
|---|---|---|---|
| Small | CX22 (2vCPU, 4GB) | 1-100 machines | ~5 EUR |
| Medium | CX32 (4vCPU, 8GB) | 100-300 machines | ~13 EUR |
| Large | CX42 (8vCPU, 16GB) | 300-1000 machines | ~25 EUR |
| XLarge | Dedicated | 1000+ machines | ~50 EUR |
Inclus sur le VPS : PostgreSQL/TimescaleDB, Redis, API, Dashboard, AI-service, Caddy
Couts Variables (par machine monitoree)¶
| Composant | Cout/machine/mois |
|---|---|
| Stockage metriques (TimescaleDB) | 0.02 EUR |
| Processing/CPU | 0.01 EUR |
| Bande passante | inclus (20TB/mois) |
| Total variable | ~0.03 EUR/machine |
Couts Fixes Mutualises¶
| Nb Clients | VPS necessaire | Cout fixe total | Cout fixe/client |
|---|---|---|---|
| 10 | CX22 (5 EUR) | 5 EUR | 0.50 EUR |
| 50 | CX32 (13 EUR) | 13 EUR | 0.26 EUR |
| 100 | CX32 (13 EUR) | 13 EUR | 0.13 EUR |
| 500 | CX42 (25 EUR) | 25 EUR | 0.05 EUR |
4. Marges Reelles par Plan¶
Base 100 clients :
| Plan | Cout API | Cout Infra | Cout Total | Prix | Marge Brute | Marge % |
|---|---|---|---|---|---|---|
| Starter | 3.50 EUR | 0.88 EUR | 4.38 EUR | 79 EUR | 74.62 EUR | 94% |
| Essentials | 7 EUR | 2.38 EUR | 9.38 EUR | 169 EUR | 159.62 EUR | 94% |
| Pro | 35 EUR | 6.13 EUR | 41.13 EUR | 349 EUR | 307.87 EUR | 88% |
| Business | 115 EUR | 15.13 EUR | 130.13 EUR | 649 EUR | 518.87 EUR | 80% |
| Enterprise | 350 EUR | 30.13 EUR | 380.13 EUR | Devis | Variable | Variable |
Cout Infra = (machines x 0.03 EUR) + (cout fixe mutualise 0.13 EUR)
Notes sur les Couts¶
- Couts variables : Dependent de l'usage reel. Client utilisant 50% quota = 50% cout API.
- Analyses complexes : Rapports PDF ou predictives consomment ~2x tokens.
- Cache : TTL 30min reduit les appels API redondants.
- Cooldown : Empeche les analyses en rafale sur une meme machine.
5. Quotas AI par Plan¶
| Plan | Quota/mois | Machines | Ratio | Features |
|---|---|---|---|---|
| Starter | 150 | 25 | 6/machine | Base |
| Essentials | 300 | 75 | 4/machine | Base |
| Pro | 1,500 | 200 | 7.5/machine | Premium |
| Business | 5,000 | 500 | 10/machine | Premium |
| Enterprise | 15,000 | Illimite | Variable | Premium + Custom |
6. Endpoints AI par Tier¶
Base (Starter/Essentials)¶
POST /ai/analyze/logs
POST /ai/analyze/anomalies
POST /ai/analyze/full
POST /ai/recommendations
POST /ai/health-score
POST /ai/analyze/trends
POST /ai/scripts/generate
Premium (Pro/Business/Enterprise)¶
Tout ce qui precede +
POST /ai/analyze/degradation (Priorisation intelligente)
POST /ai/analyze/intermittent (Detection d'intermittence)
POST /ai/correlate (Correlation cross-machine)
POST /ai/predictive/maintenance (Analyse groupee)
+ Routines automatiques (scheduler)
+ Triggers sur evenements
+ Rapports PDF automatiques
Enterprise (Exclusif)¶
+ Configuration AI personnalisee (context custom)
+ Machines critiques/importantes
+ Retention donnees etendue (365 jours)
7. Fichiers a Modifier¶
7.1 Quotas AI¶
Fichier : ai-service/internal/services/quota.go
Lignes : 112-118
monthlyLimit := 150 // starter
switch licenseType {
case "essentials":
monthlyLimit = 300
case "pro":
monthlyLimit = 1500
case "business":
monthlyLimit = 5000
case "enterprise":
monthlyLimit = 15000
}
7.2 Types de Licence¶
Fichier : backend/internal/database/database.go
Lignes : 362-369
INSERT INTO license_types (name, display_name_fr, display_name_en, default_machines_limit, default_duration_months)
VALUES
('trial', 'Essai', 'Trial', 5, 1),
('starter', 'Starter', 'Starter', 25, 12),
('essentials', 'Essentiels', 'Essentials', 75, 12),
('pro', 'Pro', 'Pro', 200, 12),
('business', 'Business', 'Business', 500, 12),
('enterprise', 'Entreprise', 'Enterprise', 9999, 12)
ON CONFLICT (name) DO UPDATE SET
default_machines_limit = EXCLUDED.default_machines_limit;
7.3 Validation des Types¶
Fichier : backend/internal/services/admin.go
Ligne : 225
validTypes := map[string]bool{
"trial": true,
"starter": true,
"essentials": true,
"pro": true,
"business": true,
"enterprise": true,
}
7.4 Features Premium¶
Fichier : ai-service/internal/services/license.go
Ligne : 39
7.5 Scheduler et Triggers¶
Fichiers concernes :
- ai-service/internal/services/scheduler.go (lignes 112, 215, 226, 238)
- backend/internal/services/ai_triggers.go (lignes 382, 506)
- backend/internal/services/ai_routines.go (lignes 441, 487)
Modification :
-- Avant
WHERE c.license_type IN ('pro', 'enterprise')
-- Apres
WHERE c.license_type IN ('pro', 'business', 'enterprise')
8. Scripts SQL de Migration¶
Ajouter les Nouveaux Types¶
INSERT INTO license_types (name, display_name_fr, display_name_en, default_machines_limit)
VALUES
('essentials', 'Essentiels', 'Essentials', 75),
('business', 'Business', 'Business', 500)
ON CONFLICT (name) DO NOTHING;
Mettre a Jour les Limites¶
UPDATE license_types SET default_machines_limit = 25 WHERE name = 'starter';
UPDATE license_types SET default_machines_limit = 200 WHERE name = 'pro';
Mettre a Jour les Quotas AI Existants¶
UPDATE ai_quotas aq
SET monthly_limit = CASE
WHEN c.license_type = 'starter' THEN 150
WHEN c.license_type = 'essentials' THEN 300
WHEN c.license_type = 'pro' THEN 1500
WHEN c.license_type = 'business' THEN 5000
WHEN c.license_type = 'enterprise' THEN 15000
ELSE 150
END
FROM clients c
WHERE aq.client_id = c.id;
9. Monitoring des Couts¶
Metriques a Suivre¶
-
Usage mensuel par client :
-
Tokens consommes : Logs du client Claude (
TokensInput,TokensOutput) -
Cout reel :
Alertes Suggerees¶
| Condition | Action |
|---|---|
| Client a 80% quota | Notification |
| Client a 100% quota | Bloquer + proposition upgrade |
| Cout API > marge prevue | Alerte admin |
Requete de Suivi¶
SELECT
c.name,
c.license_type,
aq.used_this_month,
aq.monthly_limit,
ROUND(aq.used_this_month::numeric / aq.monthly_limit * 100, 1) as usage_percent
FROM clients c
JOIN ai_quotas aq ON c.id = aq.client_id
ORDER BY usage_percent DESC;
Document technique genere janvier 2026