9a987a1e1818d800fd0ad0dd99f8fb04d9bf63aa
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>
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
Languages
PHP
66.2%
Twig
28.7%
JavaScript
4%
Jinja
0.5%
Makefile
0.3%
Other
0.2%