# 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 0. [Principes Éthiques et Modèle Économique](#0-principes-éthiques-et-modèle-économique) 1. [Pricing Models](#1-pricing-models) 2. [Commission Structure](#2-commission-structure) 3. [User Workflows](#3-user-workflows) 4. [State Machines](#4-state-machines) 5. [Business Rules Engine](#5-business-rules-engine) 6. [Validation Rules](#6-validation-rules) 7. [Complex Calculations](#7-complex-calculations) 8. [Notification Rules](#8-notification-rules) 9. [Limits & Quotas](#9-limits--quotas) 10. [SLA Definitions](#10-sla-definitions) 11. [Exclusions et Raisons Éthiques](#11-exclusions-et-raisons-éthiques) 12. [Gouvernance](#12-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](#11-exclusions-et-raisons-éthiques)). ### 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**: ```mermaid 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**: ```mermaid 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**: ```mermaid 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**