veza/veza-docs/ORIGIN/ORIGIN_BUSINESS_LOGIC.md
2026-03-05 19:22:31 +01:00

30 KiB

ORIGIN_BUSINESS_LOGIC.md

📋 RÉSUMÉ EXÉCUTIF

Ce document définit toutes les règles métier (business logic) de la plateforme Veza. Il couvre les prix, commissions, workflows utilisateurs, machines à états, règles de validation, calculs complexes, notifications, limites, quotas, et SLAs. Ces règles sont alignées avec les principes éthiques fondateurs du projet et garantissent la cohérence des comportements métier.

Dernière révision: 2026-03-04 (révision éthique — suppression crypto, AI, publicité)

🎯 OBJECTIFS

Objectif Principal

Centraliser et définir de manière exhaustive toutes les règles métier de la plateforme Veza pour garantir la cohérence, la traçabilité, et la maintenabilité pendant 24 mois.

Objectifs Secondaires

  • Standardiser les calculs financiers (prix, commissions, taxes)
  • Définir les workflows utilisateurs de bout en bout
  • Spécifier les transitions d'état valides
  • Documenter les règles de validation
  • Établir les limites et quotas par rôle

📖 TABLE DES MATIÈRES

  1. Principes Éthiques et Modèle Économique
  2. Pricing Models
  3. Commission Structure
  4. User Workflows
  5. State Machines
  6. Business Rules Engine
  7. Validation Rules
  8. Complex Calculations
  9. Notification Rules
  10. Limits & Quotas
  11. SLA Definitions
  12. Exclusions et Raisons Éthiques
  13. Gouvernance

🔒 RÈGLES IMMUABLES

  1. Prix TOUJOURS en centimes (éviter erreurs d'arrondi)
  2. Commissions CALCULÉES avant taxes
  3. Remboursements MAX 30 jours après achat
  4. State transitions VALIDÉES (pas de transitions invalides)
  5. Limites APPLIQUÉES côté serveur (never trust client)
  6. Notifications ASYNCHRONES (via queue, pas bloquant)
  7. Calculs financiers AUDITÉS (log toutes les transactions)
  8. Quotas PAR RÔLE (user < creator < premium < admin)
  9. SLAs MESURABLES (métriques, alerting)
  10. Règles VERSIONÉES (changements documentés)

0. PRINCIPES ÉTHIQUES ET MODÈLE ÉCONOMIQUE

L'éthique de Veza n'est pas un argument marketing. C'est l'architecture de valeurs qui détermine chaque décision économique. Aucune règle métier ne peut contredire ces principes.

Modèle open source / open core

Gratuit (open core) :

  • Upload (quotas raisonnables)
  • Streaming illimité
  • Profil artiste complet
  • Chat et collaboration
  • Marketplace (commission sur transactions)

Premium individuel :

  • Stockage cloud étendu
  • Analytics avancés (détaillés, exportables)
  • Distribution (upload vers plateformes tierces)
  • Priorité dans les files de transcoding

Pro / Label :

  • API complète (rate limits étendus)
  • White label partiel
  • Analytics équipe
  • Support prioritaire

Commission marketplace :

  • Pourcentage sur les ventes de licences et beats
  • Transparente, documentée, sans surprise

Ce qui ne sera JAMAIS monétisé

  • Publicité : zéro régie publicitaire, zéro pixel de tracking tiers
  • Données utilisateurs : les données ne sont pas un produit
  • Freemium agressif : pas de features artificiellement bridées pour forcer l'upgrade
  • Algorithmes de rétention : pas d'optimisation pour maximiser le temps passé

1. PRICING MODELS

1.1 Product Pricing

Fixed Price:

Product price: $29.99
No variation

Pay What You Want (PWYW):

Minimum price: $5.00 (set by seller)
Suggested price: $15.00
Buyer chooses: $10.00 - $100.00+

Tiered Licensing:

Basic License:   $29.99  (personal use)
Standard License: $49.99  (commercial use, 10k streams)
Premium License:  $99.99  (unlimited commercial use)
Exclusive License: $499.99 (buyer gets exclusive rights)

Subscription Plans:

Free:     $0/month
  - Upload limit: 5 tracks/month
  - Download: No
  - Analytics: Basic
  - Storage: 1 GB

Creator:  $9.99/month ($99.99/year, 17% savings)
  - Upload limit: Unlimited
  - Download: Yes
  - Analytics: Advanced
  - Storage: 50 GB
  - Sell products: Yes (15% commission)

Premium:  $19.99/month ($199.99/year, 17% savings)
  - All Creator features
  - Priority support
  - Storage: 200 GB
  - Sell products: Yes (10% commission)
  - Collaboration tools
  - Distribution vers plateformes tierces

Note: Aucun plan ne contient de publicité. Veza est 100% sans publicité.

1.2 Dynamic Pricing

Early Bird Discounts:

First 100 buyers: 20% off
Next 400 buyers:  10% off
After 500 buyers: Regular price

Bundle Pricing:

Single product:    $29.99
3-product bundle:  $79.99 (11% savings)
5-product bundle:  $119.99 (20% savings)

Volume Discounts (for API/enterprise):

0-1,000 requests:   $0.01/request
1,001-10,000:       $0.008/request
10,001-100,000:     $0.006/request
100,001+:           $0.004/request

1.3 Currency Support

Supported Currencies:

USD (default)
EUR
GBP
CAD
AUD

Exchange Rates:

Source: European Central Bank (ECB) API
Update frequency: Daily at 00:00 UTC
Cache: 24 hours
Fallback: Manual rates (updated weekly)

Conversion Formula:

Price_Target = Price_USD * Exchange_Rate
Rounded to 2 decimals (0.01 precision)

Example:
$29.99 USD * 0.92 EUR/USD = 27.59 EUR

2. COMMISSION STRUCTURE

2.1 Platform Commission

Marketplace Sales:

User:    N/A (cannot sell)
Creator: 15% commission
Premium: 10% commission
Admin:   N/A (no commission on own sales)

Example (Creator selling $100 product):
Product price:        $100.00
Platform commission:  -$15.00 (15%)
Payment processing:   -$3.20 (Stripe 2.9% + $0.30)
Seller receives:      $81.80

Subscription Revenue Share:

Streaming plays:
- Creator receives $0.004 per play (avg)
- Revenus issus des abonnements Premium uniquement (pas de publicité)

Example (10,000 plays):
Creator revenue: 10,000 * $0.004 = $40.00

2.2 Payment Processing Fees

Stripe (default):

Card payments:    2.9% + $0.30
ACH (US):         0.8% (max $5.00)
SEPA (EU):        0.8% (max €5.00)
International:    +1.5% currency conversion

PayPal (alternative):

Domestic:         2.99% + $0.49
International:    4.49% + $0.49

Note

: Le paiement via Hyperswitch (open source, multi-provider) est le standard. Stripe et PayPal sont des providers configurés. Les cryptomonnaies sont exclues définitivement (voir §11 Exclusions).

2.3 Payout Schedule

Minimum Payout:

$50.00 minimum balance required

Payout Frequency:

Weekly:   Every Monday (for balances ≥ $50)
Manual:   Anytime (for balances ≥ $100)

Payout Methods:

Stripe Connect:   1-3 business days
PayPal:           Instant
Bank Transfer:    3-5 business days

2.4 Refund Policy

Timeframe:

Digital products: 14 days
Subscription:     Pro-rated to end of billing cycle
Services:         30 days (or as agreed)

Refund Amount:

Full refund:      100% (within 7 days, no downloads)
Partial refund:   50% (7-14 days, or after downloads)
No refund:        After 30 days

Commission on Refunds:

Platform commission: Refunded to buyer
Payment processing:  NOT refunded (non-recoverable)

Example (refund of $100 sale):
Buyer paid:              $100.00
Seller received:         $81.80
Refund to buyer:         $100.00
Platform loses:          $15.00 (commission)
Seller loses:            $18.20 (commission + processing fees)

3. USER WORKFLOWS

3.1 User Onboarding

Flow:

graph TD
    A[Visit Homepage] --> B{Has Account?}
    B -->|No| C[Click Sign Up]
    B -->|Yes| D[Click Log In]
    C --> E[Enter Email/Password]
    E --> F[Receive Verification Email]
    F --> G[Click Verification Link]
    G --> H[Email Verified]
    H --> I[Complete Profile]
    I --> J[Choose Role: Listener/Creator]
    J --> K{Creator?}
    K -->|Yes| L[Upload First Track]
    K -->|No| M[Browse Feed]
    L --> N[Onboarding Complete]
    M --> N
    D --> O[Enter Credentials]
    O --> P[Dashboard]

Steps:

  1. Registration (< 2 minutes)

    • Email, username, password
    • Captcha (after 3 failed attempts)
    • Terms acceptance
  2. Email Verification (< 5 minutes)

    • Send verification email
    • Link expires in 24 hours
    • Resend option (max 3 times)
  3. Profile Setup (< 5 minutes)

    • Display name, bio, avatar
    • Location (optional)
    • Social links (optional)
  4. Role Selection

    • Listener (default)
    • Creator (requires verification for monetization)
  5. First Interaction

    • Creator: Upload first track
    • Listener: Follow 3 suggested users

3.2 Track Upload Workflow

Flow:

1. Click "Upload Track"
2. Select audio file (drag & drop or browse)
3. File validation (format, size, duration)
4. Upload to S3 (resumable, chunked)
5. Extract metadata (ID3 tags)
6. Generate waveform (background job)
7. Fill metadata form:
   - Title, artist, genre
   - BPM, key (optional)
   - Description
   - Cover art
   - Visibility (public, unlisted, private)
   - Downloadable (yes/no)
8. Preview track
9. Publish
10. Track processing (transcode to multiple bitrates)
11. Track live (appears in feed)

Processing Time:

Upload:          ~1-5 min (depends on file size)
Metadata extract: ~5-10 sec
Waveform:        ~10-30 sec
Transcode:       ~1-3 min
Total:           ~2-9 min

3.3 Purchase Workflow

Flow:

1. Browse marketplace
2. Click product → View details
3. Listen to preview (30-60 sec)
4. Click "Add to Cart"
5. Continue shopping OR Checkout
6. Cart review:
   - Item list
   - Subtotal
   - Discount code (optional)
   - Tax calculation
   - Total
7. Click "Proceed to Checkout"
8. Select payment method:
   - Credit card (via Hyperswitch)
   - PayPal (via Hyperswitch)
9. Enter billing info
10. Review order
11. Click "Place Order"
12. Payment processing (Stripe/PayPal)
13. Payment successful:
    - Order confirmation email
    - Download links available
    - Invoice generated
14. Download files

Panier :

Le panier est conservé 30 jours.
Pas de relance email agressive pour paniers abandonnés.
Un seul email de rappel optionnel après 7 jours (si l'utilisateur a activé les notifications marketing).
Pas de discount de pression temporelle (pas de FOMO).

3.4 Subscription Workflow

Flow:

1. Click "Upgrade to Premium"
2. View plan comparison
3. Select plan (monthly/annual)
4. Enter payment info (saved for recurring)
5. Review subscription terms
6. Click "Subscribe"
7. Payment processed
8. Subscription active
9. Invoice sent monthly/annually
10. Auto-renewal (7 days before expiry)
11. Cancellation:
    - Access until end of billing period
    - No auto-renewal
    - Option to re-subscribe anytime

Trial Period:

Premium plan: 14-day free trial
- Full access
- No payment required upfront
- Reminder 3 days before trial ends
- Auto-convert to paid (if card on file)
- Cancel anytime during trial (no charge)

4. STATE MACHINES

4.1 Order State Machine

States:

pending     → Initial state after order created
paid        → Payment successful
processing  → Order being fulfilled (digital delivery)
completed   → Order fulfilled, files delivered
cancelled   → Order cancelled (before payment)
refunded    → Order refunded (after payment)
failed      → Payment failed

Transitions:

stateDiagram-v2
    [*] --> pending
    pending --> paid: Payment successful
    pending --> cancelled: User cancels
    pending --> failed: Payment failed
    paid --> processing: Start fulfillment
    processing --> completed: Delivery successful
    paid --> refunded: Refund requested (<14 days)
    completed --> refunded: Refund requested (<14 days)
    cancelled --> [*]
    failed --> [*]
    completed --> [*]
    refunded --> [*]

Business Rules:

- pending → paid: Stripe webhook confirms payment
- paid → processing: Triggered immediately (async job)
- processing → completed: Files delivered to buyer's library
- * → refunded: Only if within refund window (14 days)
- * → cancelled: Only if order not yet paid

4.2 Moderation State Machine

States:

submitted   → Content submitted by user
pending     → Awaiting moderation
approved    → Approved by moderator
rejected    → Rejected by moderator
flagged     → Flagged by users/auto-detection
banned      → Permanently banned

Transitions:

stateDiagram-v2
    [*] --> submitted
    submitted --> pending: Auto-check complete
    pending --> approved: Moderator approves
    pending --> rejected: Moderator rejects
    approved --> flagged: User reports
    flagged --> approved: False positive
    flagged --> rejected: Violates policy
    rejected --> banned: Repeat offender (3 strikes)
    banned --> [*]

Auto-Moderation Rules:

1. Détection par règles (pas d'IA) :
   - Mots-clés bloqués → flagged
   - Patterns de contenu explicite → flagged (règles déterministes)

2. Spam Detection :
   - Identical title/description → flagged
   - Excessive links → flagged
   - Bot patterns (rate, timing) → flagged

3. Copyright Detection :
   - Audio fingerprinting (ACRCloud)
   - Matches known tracks → flagged

4. Modération humaine :
   - Tout contenu flaggé est revu par un modérateur humain
   - La décision finale est toujours humaine

If flagged → pending modération humaine
If auto-approved → approved (contenu conforme aux règles)

4.3 User Account State Machine

States:

registered      → Account created
verified        → Email verified
active          → Account active, can use platform
inactive        → Account inactive (user choice)
suspended       → Temporarily suspended (violation)
banned          → Permanently banned
deleted         → Account deleted (GDPR)

Transitions:

registered → verified: Email verification
verified → active: Profile completed
active → inactive: User deactivates
inactive → active: User reactivates
active → suspended: Policy violation (1-30 days)
suspended → active: Suspension period ends
suspended → banned: Multiple violations (3 strikes)
active → banned: Severe violation (illegal content)
* → deleted: User requests deletion (GDPR right)

5. BUSINESS RULES ENGINE

5.1 Track Publication Rules

Rule 1: Minimum Track Duration

IF track.duration < 30 seconds THEN
  REJECT with error "Track too short (min 30 seconds)"
END IF

Rule 2: Maximum Track Duration

IF track.duration > 3600 seconds (1 hour) THEN
  REJECT with error "Track too long (max 1 hour)"
END IF

Rule 3: File Size Limits

IF user.role == "user" AND file.size > 100MB THEN
  REJECT with error "File too large (max 100MB for free users)"
ELSE IF user.role IN ["creator", "premium"] AND file.size > 500MB THEN
  REJECT with error "File too large (max 500MB)"
END IF

Rule 4: Upload Limits

IF user.role == "user" AND user.tracks_this_month >= 5 THEN
  REJECT with error "Upload limit reached (5/month for free users)"
ELSE IF user.role == "creator" AND user.tracks_this_day >= 50 THEN
  REJECT with error "Upload limit reached (50/day for creators)"
END IF

5.2 Pricing Rules

Rule 1: Minimum Product Price

IF product.price < 1.00 THEN
  REJECT with error "Minimum price is $1.00"
END IF

Rule 2: Maximum Product Price

IF product.price > 10000.00 THEN
  REJECT with error "Maximum price is $10,000"
END IF

Rule 3: PWYW Minimum

IF product.pricing_model == "pwyw" AND product.minimum_price < 1.00 THEN
  REJECT with error "PWYW minimum must be at least $1.00"
END IF

5.3 Discount Rules

Rule 1: Discount Code Validity

IF discount_code.valid_from > NOW() THEN
  REJECT with error "Discount code not yet valid"
ELSE IF discount_code.valid_until < NOW() THEN
  REJECT with error "Discount code expired"
ELSE IF discount_code.usage_count >= discount_code.usage_limit THEN
  REJECT with error "Discount code usage limit reached"
END IF

Rule 2: Minimum Purchase Amount

IF discount_code.minimum_purchase_amount IS NOT NULL 
   AND cart.subtotal < discount_code.minimum_purchase_amount THEN
  REJECT with error "Minimum purchase amount not met"
END IF

Rule 3: Maximum Discount Amount

IF discount_code.discount_type == "percentage" THEN
  discount_amount = cart.subtotal * (discount_code.discount_value / 100)
  IF discount_code.maximum_discount_amount IS NOT NULL 
     AND discount_amount > discount_code.maximum_discount_amount THEN
    discount_amount = discount_code.maximum_discount_amount
  END IF
END IF

6. VALIDATION RULES

6.1 User Input Validation

Email:

Pattern: ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$
Max length: 255 characters
Unique: Must not already exist (case-insensitive)

Username:

Pattern: ^[a-zA-Z0-9_]{3,30}$
Min length: 3 characters
Max length: 30 characters
Unique: Must not already exist (case-insensitive)
Reserved: admin, root, system, veza, api, www (blocked)

Password:

Min length: 12 characters
Max length: 128 characters
Must contain:
  - At least 1 uppercase letter
  - At least 1 lowercase letter
  - At least 1 digit
  - At least 1 special character (!@#$%^&*)
Cannot contain:
  - Email or username
  - Common passwords (check against Have I Been Pwned API)
  - Sequential characters (abc, 123)

Bio:

Max length: 500 characters
Allowed characters: Any UTF-8
Blocked patterns: Excessive links (max 3), mots-clés bloqués (liste de modération)

6.2 Track Metadata Validation

Title:

Min length: 1 character
Max length: 255 characters
Required: Yes

Artist:

Max length: 255 characters
Required: No (defaults to creator's name)

Genre:

Enum: electronic, house, techno, trance, dubstep, drum-and-bass, ...
Required: Yes

BPM:

Min: 60
Max: 200
Required: No

Duration:

Min: 30 seconds
Max: 3600 seconds (1 hour)
Required: Yes (auto-extracted from file)

6.3 Financial Validation

Product Price:

Min: $1.00
Max: $10,000.00
Precision: 2 decimals
Currency: USD, EUR, GBP, CAD, AUD

Discount Percentage:

Min: 1%
Max: 99%
Integer: Yes (no fractional percentages)

Discount Fixed Amount:

Min: $0.01
Max: $1,000.00
Precision: 2 decimals

7. COMPLEX CALCULATIONS

7.1 Order Total Calculation

Formula:

subtotal = SUM(item.price for item in cart.items)

discount_amount = 0
IF discount_code IS NOT NULL THEN
  IF discount_code.discount_type == "percentage" THEN
    discount_amount = subtotal * (discount_code.discount_value / 100)
    IF discount_code.maximum_discount_amount IS NOT NULL THEN
      discount_amount = MIN(discount_amount, discount_code.maximum_discount_amount)
    END IF
  ELSE IF discount_code.discount_type == "fixed_amount" THEN
    discount_amount = discount_code.discount_value
  END IF
END IF

taxable_amount = subtotal - discount_amount

tax_rate = get_tax_rate(user.country, user.state)
tax_amount = taxable_amount * tax_rate

total = subtotal - discount_amount + tax_amount

ROUND(total, 2)  // Round to 2 decimals

Example:

Item 1:           $29.99
Item 2:           $49.99
Subtotal:         $79.98

Discount (20%):   -$16.00
Taxable:          $63.98

Tax (10%):        +$6.40
Total:            $70.38

7.2 Seller Payout Calculation

Formula:

order_total = $100.00

platform_commission_rate = 0.15  // 15% for creators
platform_commission = order_total * platform_commission_rate
= $100.00 * 0.15 = $15.00

payment_processing_fee = (order_total * 0.029) + 0.30
= ($100.00 * 0.029) + $0.30 = $3.20

seller_payout = order_total - platform_commission - payment_processing_fee
= $100.00 - $15.00 - $3.20 = $81.80

Example:

Order total:              $100.00
Platform commission (15%): -$15.00
Payment processing (2.9% + $0.30): -$3.20
Seller receives:          $81.80

7.3 Streaming Royalty Calculation

Formula:

monthly_subscription_revenue = $100,000
total_plays_this_month = 10,000,000

per_play_rate = monthly_subscription_revenue / total_plays_this_month
= $100,000 / 10,000,000 = $0.01 per play

track_plays = 50,000
track_royalty = track_plays * per_play_rate
= 50,000 * $0.01 = $500.00

creator_share = 0.70  // 70% to creator, 30% platform
creator_payout = track_royalty * creator_share
= $500.00 * 0.70 = $350.00

Minimum Payout:

IF creator_balance >= $50.00 THEN
  process_payout(creator_id, creator_balance)
ELSE
  hold_until_minimum_reached()
END IF

7.4 Tax Calculation

US Sales Tax (varies by state):

state_tax_rates = {
  "CA": 0.0725,  // California: 7.25%
  "TX": 0.0625,  // Texas: 6.25%
  "NY": 0.04,    // New York: 4%
  "FL": 0.06,    // Florida: 6%
  // ... other states
}

tax_amount = subtotal * state_tax_rates[buyer.state]

EU VAT (value-added tax):

country_vat_rates = {
  "DE": 0.19,  // Germany: 19%
  "FR": 0.20,  // France: 20%
  "UK": 0.20,  // UK: 20%
  "ES": 0.21,  // Spain: 21%
  // ... other countries
}

IF buyer.has_valid_vat_number THEN
  // Reverse charge (B2B)
  vat_amount = 0
ELSE
  // Standard VAT (B2C)
  vat_amount = subtotal * country_vat_rates[buyer.country]
END IF

8. NOTIFICATION RULES

8.1 Email Notifications

Transactional Emails (always sent):

- Account verification
- Password reset
- Order confirmation
- Order shipped (physical goods)
- Refund processed
- Subscription activated
- Subscription expiring (7 days before)
- Payment failed

Marketing Emails (opt-in, jamais agressif):

- New features announcement
- Weekly digest (new tracks from followed users)
- Monthly summary (stats personnels du créateur)
Note: Pas de recommandations produit basées sur le comportement.
      Pas de notifications de type FOMO.

Cadence Limits:

Transactional: No limit
Marketing:     Max 2/week (user can opt out)

8.2 Push Notifications

Real-time Notifications:

- New message received
- New follower
- Track liked
- Track commented
- Mention in comment/post
- Order placed (for sellers)
- Payout processed

Batched Notifications (hourly):

- Multiple comments (3+ comments → "Your track has 3 new comments")
- Regroupées pour éviter la surcharge
Note: Pas de compteurs de likes en notification push (anti social validation loop)

Quiet Hours & Respect du DND:

Default: 22:00 - 08:00 (user's timezone)
User can configure in settings
Respect du mode "Do Not Disturb" OS
Contrôle total utilisateur sur chaque type de notification

8.3 In-App Notifications

Notification Types:

- Follow: "John Doe started following you"
- Like: "Jane Smith liked your track 'Summer Vibes'"
- Comment: "User123 commented on your track"
- Mention: "You were mentioned in a post"
- Order: "New order #12345 from BuyerName"
- System: "Your track 'Track Name' has been approved"

Notification Grouping:

IF same_type AND same_resource AND time_diff < 1 hour THEN
  group_notifications()
  // "John and 5 others liked your track"
END IF

Notification Expiry:

Mark as read: User clicks notification
Auto-expire:  30 days (unread notifications)
Delete:       90 days (all notifications)

9. LIMITS & QUOTAS

9.1 Upload Limits

Free User:

Tracks:      5/month
File size:   100 MB/file
Storage:     1 GB total
Playlist:    10 playlists

Creator:

Tracks:      Unlimited (50/day rate limit)
File size:   500 MB/file
Storage:     50 GB total
Playlist:    Unlimited
Products:    Unlimited

Premium:

Tracks:      Unlimited (100/day rate limit)
File size:   500 MB/file
Storage:     200 GB total
Playlist:    Unlimited
Products:    Unlimited
Collaboration: Yes

9.2 API Rate Limits

Public API (unauthenticated):

100 requests/hour per IP

Authenticated API:

Free:     1,000 requests/hour
Creator:  5,000 requests/hour
Premium:  10,000 requests/hour
Enterprise: Custom

WebSocket Connections:

Max connections per user: 5
Max rooms per user:       50
Max messages per minute:  60

9.3 Social Limits

Follows:

Free:     Follow up to 500 users
Creator:  Follow up to 2,000 users
Premium:  Follow up to 5,000 users

Messages:

Free:     50 DMs/day
Creator:  200 DMs/day
Premium:  Unlimited

Comments:

All users: 100 comments/day
Rate limit: 1 comment/second

10. SLA DEFINITIONS

10.1 Uptime SLA

Target: 99.95% uptime

Allowed downtime per month: 21.6 minutes
Allowed downtime per year:  4.38 hours

Credits (for Premium/Enterprise):

Uptime 99.95% - 99.99%:  No credit
Uptime 99.00% - 99.95%:  10% monthly fee credit
Uptime 95.00% - 99.00%:  25% monthly fee credit
Uptime < 95.00%:         50% monthly fee credit

Exclusions:

- Scheduled maintenance (announced 7 days in advance)
- Force majeure (natural disasters, wars, etc.)
- Third-party failures (AWS, Stripe, etc.)
- User-caused issues (DDoS from user's network)

10.2 Performance SLA

API Response Time:

p50 (median):  < 50ms
p95:           < 100ms
p99:           < 500ms

Page Load Time:

Time to First Byte (TTFB):  < 200ms
First Contentful Paint:     < 1.5s
Time to Interactive:        < 3.5s

Audio Streaming:

Buffering:          < 1 second initial
Rebuffering rate:   < 0.5%
Audio start time:   < 2 seconds

10.3 Support SLA

Response Time:

Critical (platform down):   < 15 minutes
High (feature broken):      < 2 hours
Medium (minor issue):       < 8 hours
Low (question/enhancement): < 24 hours

Resolution Time:

Critical:  < 4 hours
High:      < 24 hours
Medium:    < 3 days
Low:       < 7 days

Support Channels:

Free users:      Email, Help Center
Premium users:   Email, Chat, Priority support
Enterprise:      Phone, Dedicated account manager

10.4 Payout SLA

Processing Time:

Stripe Connect:   1-3 business days
PayPal:           Instant (< 1 hour)
Bank Transfer:    3-5 business days

Failure Handling:

IF payout_failed THEN
  retry_after_24_hours()
  IF retry_failed THEN
    notify_user_email()
    manual_review_by_finance_team()
  END IF
END IF

11. EXCLUSIONS ET RAISONS ÉTHIQUES

Les éléments suivants sont définitivement exclus de la logique métier de Veza.

Cryptomonnaies

  • Aucun paiement en Bitcoin, Ethereum, ou autre cryptomonnaie
  • Raison : impact environnemental disproportionné, spéculation, fraude documentée dans le domaine musical

Publicité

  • Zéro régie publicitaire, zéro pixel de tracking tiers, zéro retargeting
  • Raison : la publicité transforme les utilisateurs en produit. Incompatible avec le principe « l'humain d'abord »

Vente de données

  • Aucune monétisation des données comportementales
  • Raison : les données des utilisateurs ne sont pas un produit

Recommandations ML

  • Pas de collaborative filtering, content-based filtering, ou analyse prédictive du comportement
  • Raison : optimise pour la rétention, pas pour la découverte authentique. La découverte musicale est basée sur les genres/tags déclarés par les artistes, la curation éditoriale humaine, et les connexions sociales

Gamification addictive

  • Pas de systèmes XP, niveaux, streaks, leaderboards de popularité
  • Raison : transforme l'expression artistique en compétition et normalise les métriques de performance comme mesure de la valeur artistique

Freemium agressif

  • Pas de features artificiellement bridées, pas de dark patterns dans les flows d'upgrade
  • Raison : les modèles de tarification sont simples et honnêtes

12. GOUVERNANCE

Roadmap publique

  • La roadmap produit est publique et commentable
  • Les utilisateurs peuvent voter sur les features planifiées
  • Les décisions produit majeures sont documentées avec leur justification

Contribution open source

  • Le cœur de la plateforme est open source
  • Processus de contribution documenté (CONTRIBUTING.md)
  • Code review systématique par les mainteneurs

Transparence économique

  • Les commissions sont documentées et visibles avant chaque transaction
  • Les conditions d'utilisation sont rédigées en langage humain
  • Les changements tarifaires sont annoncés 90 jours à l'avance

CHECKLIST DE VALIDATION

Pricing

  • All prices in centimes (avoid rounding errors)
  • Currency conversion rates updated daily
  • Commission structure documented
  • Refund policy defined

Workflows

  • All user workflows documented
  • State machines defined
  • Valid state transitions specified
  • Business rules engine implemented

Calculations

  • Financial calculations audited
  • Tax calculations compliant
  • Royalty calculations transparent
  • Rounding handled correctly

Limits & Quotas

  • Per-role limits enforced
  • Rate limiting implemented
  • Quota monitoring enabled
  • Graceful degradation

SLAs

  • Uptime targets defined
  • Performance targets measurable
  • Support SLAs documented
  • Monitoring & alerting configured

📊 MÉTRIQUES DE SUCCÈS

Business Metrics

  • Conversion Rate: > 3% (visitors → purchases)
  • Average Order Value: > $50
  • Customer Lifetime Value: > $500
  • Churn Rate: < 5%/month

Operational Metrics

  • Uptime: 99.95%
  • API Response Time p95: < 100ms
  • Support Response Time: < 2 hours (high priority)
  • Payout Success Rate: > 99%

🔄 HISTORIQUE DES VERSIONS

Version Date Changements
1.0.0 2025-11-02 Version initiale - Règles métier complètes
2.0.0 2026-03-04 Révision éthique : suppression crypto/AI/publicité, ajout principes éthiques, modèle open core, gouvernance

⚠️ AVERTISSEMENT

CES RÈGLES MÉTIER SONT ALIGNÉES AVEC L'ÉTHIQUE DU PROJET

Toute modification nécessite :

  1. RFC Business Logic Change avec impact analysis et vérification d'alignement éthique
  2. Approbation Product Owner + Legal (si implications légales)
  3. Migration plan pour données existantes
  4. Communication aux utilisateurs (si impact visible)

Les changements de règles financières nécessitent validation CFO. Aucune modification ne peut contredire les principes éthiques fondateurs (§0).


Document créé par: Product Team + Business Analysts
Date de création: 2025-11-02
Dernière révision: 2026-03-04 (révision éthique)
Prochaine révision: Trimestrielle
Propriétaire: Chief Product Officer

Statut: APPROUVÉ — v2.0.0