Serreau Jovann 9a987a1e18 feat: articles complets dans PDF contrat - page migration + CGV
14 articles couvrant l'ensemble des conditions :
1. Objet du contrat
2. Transfert des services (CMS Esy-Web, membre fondateur)
3. Conditions tarifaires (non negociables, lien grille)
4. Paiement (Stripe, SumUp Irlande, 1er paiement CB/SEPA obligatoire)
5. Impayes et suspension (automatique, art. 1219 CC, L.441-10 Ccom)
6. Systeme d'avertissement (3 niveaux, bureau a huis clos)
7. Horaires service client (10h-12h/14h-17h, 35 EUR/h hors horaires)
8. Duree et resiliation (CDI, 30j preavis)
9. Anciennete et droits anterieurs
10. Responsabilite
11. Donnees personnelles (RGPD)
12. CGV (lien, partie integrante du contrat)
13. Droit applicable (Laon)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:37:39 +02:00
2026-03-30 18:52:03 +02:00
2026-03-30 18:52:03 +02:00
2026-03-30 18:51:57 +02:00
2026-03-30 18:51:57 +02:00
2026-03-30 18:52:03 +02:00
2026-04-01 15:42:52 +02:00
2026-04-01 15:42:52 +02:00
2026-04-01 15:42:52 +02:00
2026-04-01 15:42:52 +02:00
2026-04-01 15:42:52 +02:00
2026-04-01 15:42:52 +02:00
2026-04-01 15:42:52 +02:00
2026-04-01 15:42:52 +02:00
2026-04-01 15:42:52 +02:00

CRM E-Cosplay

CRM de gestion clients, facturation, devis et services numeriques pour l'Association E-Cosplay.

Stack technique

  • Backend : Symfony 7 / PHP 8.4 / Doctrine ORM / PostgreSQL
  • Frontend : Twig + Tailwind CSS (neo-brutalist) + Vanilla JS
  • PDF : FPDF/FPDI + Dompdf (CGV)
  • Paiement : Stripe (CB, SEPA, PayPal, Klarna) + Stripe Connect
  • Signature : DocuSeal
  • Recherche : Meilisearch
  • Auth : Keycloak SSO + 2FA (email/TOTP)
  • Infra : Docker + Caddy + PgBouncer

Tests

make run_test          # PHP + JS
make test_coverage     # PHP avec couverture HTML
make run_test_coverage_js  # JS avec couverture

Qualite

make sonar             # PHPStan + ESLint + Coverage + SonarQube

SonarQube - Exclusions et ignores

Exclusions d'analyse (sonar.exclusions)

Fichier/Pattern Raison
vendor/**, var/**, node_modules/** Dependances tierces
migrations/** Code genere par Doctrine
src/Repository/** Repositories Doctrine auto-generes, pas de logique metier
templates/email/**, templates/emails/** Templates email HTML (pas de logique testable)
src/Service/AwsSesService.php Wrapper AWS SES (appels SDK externes)
src/Service/CloudflareService.php Wrapper Cloudflare API (appels SDK externes)
src/Service/DnsCheckService.php Appels systeme DNS (dig, whois)
src/Service/DnsInfraHelper.php Helper DNS infra (appels systeme)
src/Service/StripePriceService.php Wrapper Stripe Price API
src/Service/StripeWebhookService.php Gestion secrets webhook Stripe
src/Service/MailcowService.php Wrapper Mailcow API (service mail externe)
src/Controller/WebhookDocuSealController.php Webhook DocuSeal (interactions externes)
src/Controller/DnsReportController.php Rapport DNS (appels systeme)
src/Command/CheckDnsCommand.php Commande DNS (appels systeme)
src/Command/CloudflareDnsCleanCommand.php Commande Cloudflare (API externe)

Exclusions de duplication CPD (sonar.cpd.exclusions)

Fichier/Pattern Raison
src/Entity/** Entites Doctrine : getters/setters repetitifs par nature
src/Repository/** Repositories : structure identique (ServiceEntityRepository)
src/Service/Pdf/** Services PDF FPDF : Header/Footer/Body patterns similaires entre AdvertPdf, FacturePdf, DevisPdf
src/Service/TarificationService.php Config prix avec structures repetitives
src/Service/AdvertService.php, FactureService.php, DevisService.php Pattern TVA/totaux commun (isTvaEnabled, getTvaRate, computeTotals)
src/Service/MeilisearchService.php DAL CRUD repetitif pour 9 index (index/remove/search x 9 entites)
templates/admin/clients/show.html.twig Badges de statut HTML repetitifs (24 badges similaires pour differents etats)

Ignores de regles (sonar.issue.ignore.multicriteria)

Regle Fichier Raison
php:S4144 (methodes identiques) **/*.php Faux positifs sur methodes avec meme structure mais contexte different
php:S107 (trop de parametres) MailerService.php sendEmail() necessite 8 params (to, subject, content, from, replyTo, unsubscribe, attachments, priority) - tous utiles
php:S1200 (couplage classe) MeilisearchService.php Service DAL centralise qui depend de 9 entites par design
php:S1820 (trop de methodes) MeilisearchService.php 44 methodes = 3 generiques + (index/remove/search) x 9 entites + setup/purge/stats + serializers. Splitter ajouterait de la complexite sans valeur
Description
No description provided
Readme 9.6 MiB
Languages
PHP 66.2%
Twig 28.7%
JavaScript 4%
Jinja 0.5%
Makefile 0.3%
Other 0.2%