Aller au contenu

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

  1. Couts variables : Dependent de l'usage reel. Client utilisant 50% quota = 50% cout API.
  2. Analyses complexes : Rapports PDF ou predictives consomment ~2x tokens.
  3. Cache : TTL 30min reduit les appels API redondants.
  4. 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

isPremium := licenseType == "pro" || licenseType == "business" || licenseType == "enterprise"

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

  1. Usage mensuel par client :

    SELECT client_id, used_this_month FROM ai_quotas;
    

  2. Tokens consommes : Logs du client Claude (TokensInput, TokensOutput)

  3. Cout reel :

    (input_tokens x $3 + output_tokens x $15) / 1,000,000
    

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