feat: subscriptions
CI / 🧪 Tests Laravel (push) Successful in 2m48s
CI / 🐳 Build & Push Image (push) Successful in 3m0s

This commit is contained in:
2026-08-07 11:53:46 +02:00
parent 99cb0e63e6
commit 2ece4b6e3e
51 changed files with 1489 additions and 254 deletions
+35 -3
View File
@@ -28,6 +28,8 @@ return [
'role' => 'Role',
'email_verified_at' => 'Email verified at',
'account_verified_at' => 'Account verified at',
'certification_purchased_at' => 'Certification purchased at',
'trial_ends_at' => 'Trial ends at',
'suspended_at' => 'Suspended at',
'suspended_by' => 'Suspended by',
'avatar' => 'Avatar',
@@ -69,9 +71,9 @@ return [
],
'credit_products' => [
'navigation' => [
'label' => 'Credit products',
'singular' => 'Credit product',
'plural' => 'Credit products',
'label' => 'Offers',
'singular' => 'Offer',
'plural' => 'Offers',
],
'sections' => [
'product' => 'Product',
@@ -81,6 +83,7 @@ return [
'name' => 'Name',
'description' => 'Description',
'type' => 'Type',
'purpose' => 'Offer',
'credits' => 'Credits',
'amount' => 'Price',
'currency' => 'Currency',
@@ -98,6 +101,35 @@ return [
'sync_stripe_success' => 'Stripe product synchronized.',
],
],
'identity_verification_requests' => [
'navigation' => [
'label' => 'Identity verifications',
'singular' => 'Identity verification',
'plural' => 'Identity verifications',
],
'sections' => [
'request' => 'Certification request',
],
'fields' => [
'id' => 'ID',
'status' => 'Status',
'user' => 'User',
'submitted_at' => 'Submitted at',
'reviewed_at' => 'Reviewed at',
'reviewed_by' => 'Reviewed by',
'document' => 'Identity document',
'document_deleted_at' => 'Document deleted at',
'rejection_reason' => 'Rejection reason',
],
'actions' => [
'open_document' => 'Open for 5 minutes',
'approve' => 'Approve',
'reject' => 'Reject',
],
'placeholders' => [
'empty' => '-',
],
],
'payment_transactions' => [
'navigation' => [
'label' => 'Payments',
+9 -1
View File
@@ -26,7 +26,7 @@ return [
],
'meal_image_analysis' => [
'failed' => 'Unable to analyze the image right now.',
'insufficient_credits' => 'You do not have any analysis credits left.',
'subscription_required' => 'Analysis is available during the trial or with a subscription.',
],
'legal_documents' => [
'not_found' => 'Legal document not found.',
@@ -34,6 +34,14 @@ return [
'billing' => [
'active_subscription_exists' => 'You already have an active subscription.',
'no_active_subscription' => 'There is no active subscription to manage.',
'certification_already_purchased' => 'You have already purchased lifetime certification.',
],
'certification' => [
'document_required' => 'Add a photo or PDF of your identity document.',
'document_type' => 'The document must be a JPG, PNG, or PDF file.',
'document_max' => 'The document may not be larger than 10 MB.',
'already_pending' => 'Your identity document is already being reviewed.',
'rejection_reason_required' => 'A rejection reason is required.',
],
'notifications' => [
'test_title' => 'Test',
+9
View File
@@ -53,6 +53,15 @@ return [
'monthly' => 'Monthly',
'one_time' => 'Credit pack',
],
'billing_product_purpose' => [
'subscription' => 'Analysis subscription',
'certification' => 'Lifetime certification',
],
'identity_verification_status' => [
'pending' => 'Pending review',
'approved' => 'Approved',
'rejected' => 'Rejected',
],
'credit_ledger_entry_type' => [
'free_grant' => 'Free credits',
'purchase' => 'Purchase',
+35 -3
View File
@@ -28,6 +28,8 @@ return [
'role' => 'Rôle',
'email_verified_at' => 'Email vérifié le',
'account_verified_at' => 'Compte vérifié le',
'certification_purchased_at' => 'Certification achetée le',
'trial_ends_at' => 'Fin de lessai',
'suspended_at' => 'Suspendu le',
'suspended_by' => 'Suspendu par',
'avatar' => 'Avatar',
@@ -69,9 +71,9 @@ return [
],
'credit_products' => [
'navigation' => [
'label' => 'Produits de crédits',
'singular' => 'Produit de crédits',
'plural' => 'Produits de crédits',
'label' => 'Offres',
'singular' => 'Offre',
'plural' => 'Offres',
],
'sections' => [
'product' => 'Produit',
@@ -81,6 +83,7 @@ return [
'name' => 'Nom',
'description' => 'Description',
'type' => 'Type',
'purpose' => 'Offre',
'credits' => 'Crédits',
'amount' => 'Prix',
'currency' => 'Devise',
@@ -98,6 +101,35 @@ return [
'sync_stripe_success' => 'Produit Stripe synchronisé.',
],
],
'identity_verification_requests' => [
'navigation' => [
'label' => 'Vérifications didentité',
'singular' => 'Vérification didentité',
'plural' => 'Vérifications didentité',
],
'sections' => [
'request' => 'Demande de certification',
],
'fields' => [
'id' => 'ID',
'status' => 'Statut',
'user' => 'Utilisateur',
'submitted_at' => 'Envoyée le',
'reviewed_at' => 'Traitée le',
'reviewed_by' => 'Traitée par',
'document' => 'Pièce didentité',
'document_deleted_at' => 'Document supprimé le',
'rejection_reason' => 'Motif du refus',
],
'actions' => [
'open_document' => 'Ouvrir pendant 5 minutes',
'approve' => 'Approuver',
'reject' => 'Refuser',
],
'placeholders' => [
'empty' => '-',
],
],
'payment_transactions' => [
'navigation' => [
'label' => 'Paiements',
+9 -1
View File
@@ -26,7 +26,7 @@ return [
],
'meal_image_analysis' => [
'failed' => "Impossible d'analyser l'image pour le moment.",
'insufficient_credits' => "Tu n'as plus de crédits d'analyse.",
'subscription_required' => "L'analyse est disponible pendant l'essai ou avec l'abonnement.",
],
'legal_documents' => [
'not_found' => 'Document légal introuvable.',
@@ -34,6 +34,14 @@ return [
'billing' => [
'active_subscription_exists' => 'Tu as déjà un abonnement en cours.',
'no_active_subscription' => 'Aucun abonnement actif à gérer.',
'certification_already_purchased' => 'Tu as déjà acheté la certification à vie.',
],
'certification' => [
'document_required' => "Ajoute une photo ou un PDF de ta pièce d'identité.",
'document_type' => 'Le document doit être un fichier JPG, PNG ou PDF.',
'document_max' => 'Le document ne doit pas dépasser 10 Mo.',
'already_pending' => 'Ta pièce didentité est déjà en cours de vérification.',
'rejection_reason_required' => 'Un motif de refus est obligatoire.',
],
'notifications' => [
'test_title' => 'Test',
+9
View File
@@ -53,6 +53,15 @@ return [
'monthly' => 'Mensuel',
'one_time' => 'Pack de crédits',
],
'billing_product_purpose' => [
'subscription' => 'Abonnement analyse',
'certification' => 'Certification à vie',
],
'identity_verification_status' => [
'pending' => 'À vérifier',
'approved' => 'Approuvée',
'rejected' => 'Refusée',
],
'credit_ledger_entry_type' => [
'free_grant' => 'Crédits offerts',
'purchase' => 'Achat',