54c5e3776612775405cc69ae7b9dddba70917ee2
RTX 5060 investigation: confirmed via pc-builder.io's own server-side
search (search_query=RTX 5060 against the full 6222-product GPU catalog,
0 results) that it simply isn't in pc-builder.io's catalog yet - not a
scraping bug, the source data doesn't have it. However, while checking
whether the other merchants had it in stock, found a real matching bug:
labelMatchesModelToken bug: extractModelToken("...RTX 5060 Ti...") only
returned "5060", identical to extractModelToken("...RTX 5060...") without
Ti. Every merchant lookup for either card matched on plain "5060" and
could silently return the *other* card's price (confirmed live: LDLC and
Grosbill returned the exact same product/price for both "RTX 5060" and
"RTX 5060 Ti" queries before this fix).
Fixed by:
- extractModelToken now appends a trailing suffix token (Ti, Super, XT,
XTX) when it immediately follows the model number, so "5060 Ti" and
"5060" are extracted as distinct tokens
- New labelMatchesModelToken() replaces the naive
label.includes(modelToken) check everywhere: a bare token ("5060") no
longer matches a label that actually has a suffix right after it
("5060 Ti"), while a suffixed token ("5060 Ti") only matches labels
carrying that exact suffix
- 9 new unit tests covering extraction and matching, including the
regression case (RTX 5060 must not match "RTX 5060 Ti" labels)
Verified fix live: LDLC/Grosbill now return correctly distinct prices for
"RTX 5060" (369.95/364.99) vs "RTX 5060 Ti" (489.95/329.99).
New manual_part_seeder_service.ts: since pc-builder.io's catalog lags
behind real product releases, this seeds a small manually-tracked list of
recent parts it doesn't carry yet (currently RTX 5060 8GB and 5060 Ti
16GB), resolving their price live from the already-supported merchants
rather than hardcoding a number that would go stale. `scrape:parts` now
runs this after the regular catalog scrape. Skips an entry rather than
inserting a guessed price if no merchant has it in stock.
Also fixes a real bug hit while testing the seeder: scraped_parts and
components.purchase_url were varchar(255), which truncates/rejects
Grosbill's long tracking-redirect URLs (500+ characters with encoded
analytics params) - both widened to TEXT via a new migration.
PC Builder
Une application web moderne pour construire et gérer des configurations PC personnalisées. Construite avec AdonisJS et Vue.js (Inertia).
🎯 Fonctionnalités
- Gestion des composants : Cataloguer et gérer les composants informatiques (CPU, GPU, RAM, etc.)
- Construction de PC : Créer et configurer des ordinateurs personnalisés
- Galerie de photos : Ajouter et gérer des images de vos configurations
- Authentification utilisateur : Système d'inscription et de connexion sécurisé
- Interface réactive : Interface utilisateur moderne avec Vue.js et Tailwind CSS
📋 Prérequis
- Node.js >= 18.0.0
- npm ou yarn
- PostgreSQL (ou autre base de données supportée)
- Docker (optionnel, pour l'environnement de développement)
🚀 Installation
1. Cloner le repository
git clone http://192.168.1.39:3000/Stude12/pc_builder
cd pc_builder
2. Installer les dépendances
npm install
3. Configuration de l'environnement
Copier le fichier .env.example en .env et configurer vos variables :
cp .env.example .env
Éditer .env et configurer :
DB_CONNECTION: Type de base de donnéesDB_HOST,DB_PORT,DB_USER,DB_PASSWORD,DB_DATABASE: Connexion à la baseAPP_KEY: Clé de chiffrement (générer avecnode ace generate:key)
4. Générer la clé d'application
node ace generate:key
5. Exécuter les migrations
node ace migration:run
6. Démarrer le serveur de développement
npm run dev
L'application sera disponible à http://localhost:3333
🛠️ Scripts disponibles
# Développement avec hot reload
npm run dev
# Compilation pour la production
npm run build
# Serveur de production
npm run start
# Linter (ESLint)
npm run lint
# Tests
npm run test
# Vérifier les types TypeScript
npm run typecheck
📁 Structure du projet
pc_builder/
├── app/ # Code métier
│ ├── controllers/ # Contrôleurs des routes
│ ├── models/ # Modèles Lucid (ORM)
│ ├── middleware/ # Middlewares
│ ├── validators/ # Validateurs
│ ├── services/ # Logique métier
│ ├── exceptions/ # Exceptions personnalisées
│ └── transformers/ # Transformeurs de données
├── inertia/ # Code frontend Vue.js
│ ├── pages/ # Pages Vue.js
│ ├── components/ # Composants Vue.js réutilisables
│ ├── layouts/ # Layouts de pages
│ ├── composables/ # Composables Vue.js
│ ├── assets/ # Images, icônes, CSS
│ └── directives/ # Directives Vue.js personnalisées
├── config/ # Fichiers de configuration
├── database/ # Migrations et schema
│ ├── migrations/ # Fichiers de migration
│ └── schema.ts # Schéma de la base de données
├── start/ # Points d'entrée de l'application
├── public/ # Fichiers publics statiques
├── resources/ # Templates Edge
├── tests/ # Tests unitaires et fonctionnels
└── node_modules/ # Dépendances (ignorées par git)
🗄️ Modèles de données
User
- Utilisateurs de l'application
- Authentification et autorisation
Computer
- Configurations PC
- Associations avec les composants
- Galerie de photos
Component
- Composants informatiques
- Classés par type (CPU, GPU, RAM, etc.)
ComputerState
- État et historique des configurations
ComputerPicture
- Images des configurations PC
🔐 Sécurité
- Validation CSRF sur tous les formulaires
- Hachage sécurisé des mots de passe
- Middleware d'authentification
- Protection CORS configurée
- Échappement des données XSS
🧪 Tests
# Exécuter les tests
npm run test
# Tests avec couverture
npm run test:coverage
📦 Déploiement
Avec Docker
# Construire l'image
docker-compose build
# Lancer les services
docker-compose up -d
Manuel
- Compiler le projet :
npm run build - Installer les dépendances de production :
npm ci --omit=dev - Démarrer l'application :
npm start
🤝 Contribution
Les contributions sont bienvenues ! Voici le workflow :
- Créer une nouvelle branche :
git checkout -b feature/ma-feature - Faire vos modifications
- Commiter vos changements :
git commit -m "Add: description" - Pousser vers la branche :
git push origin feature/ma-feature - Ouvrir une Pull Request
📝 Convention de commits
feat:Nouvelle fonctionnalitéfix:Correction de bugdocs:Documentationstyle:Formatage, sans changement logiquerefactor:Refactorisation de codetest:Ajout ou modification de testschore:Maintenance, dépendances
📄 Licence
Ce projet est sous licence MIT.
📧 Support
Pour toute question ou problème, veuillez ouvrir une issue sur le repository.
Repository : http://192.168.1.39:3000/Stude12/pc_builder
Branche principale : main
Languages
TypeScript
65.8%
Vue
32.8%
JavaScript
0.4%
Shell
0.4%
Edge
0.3%
Other
0.3%