Aggiungi campi per immagini e diametro del foro nel modello Articolo e nelle relative migrazioni; aggiorna i form e le viste per gestire i nuovi campi

This commit is contained in:
2026-05-18 16:23:12 +02:00
parent f3a1d816b7
commit 83412247a7
11 changed files with 373 additions and 33 deletions

82
CLAUDE.md Normal file
View File

@@ -0,0 +1,82 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
**HTT QRCode** is a Laravel 12 web application for managing industrial articles with QR code generation and scanning. Key capabilities: article catalog CRUD, unique QR code generation per article, PDF label printing, public QR scanner (no auth required), and Excel import.
**Stack**: Laravel 12 / PHP 8.2+ · Blade + TailwindCSS 3 + Alpine.js · SQLite (default) or MySQL · Vite · SimpleSoftwareIO/simple-qrcode · Barryvdh/laravel-dompdf · PHPOffice/PhpSpreadsheet
## Development Commands
```bash
# Start everything (PHP server + queue + logs + Vite HMR)
composer run dev
# Or separately:
php artisan serve # http://localhost:8000
npm run dev # Vite with hot reload
# Build for production
npm run build
# Run tests
composer run test
# or
php artisan test
php artisan test --filter NomeTest # single test
# Database
php artisan migrate
php artisan migrate:fresh --seed # reset + re-seed
php artisan db:seed --class=AdminUserSeeder # admin@example.com / password
# Code style (Laravel Pint)
./vendor/bin/pint
# Clear caches
php artisan cache:clear && php artisan config:clear && php artisan view:clear
# View all routes
php artisan route:list
# Real-time logs
php artisan pail
```
## Architecture
### Route → Controller → View mapping
| Route | Controller | View |
|---|---|---|
| `GET /` | closure | `welcome.blade.php` |
| `GET /scanner` | `PublicArticoloController@scanner` | `public/scanner.blade.php` |
| `GET /articolo/{qr_code}` | `PublicArticoloController@show` | `public/articolo.blade.php` |
| `admin/articoli` (resource) | `Admin/ArticoloController` | `admin/articoli/*.blade.php` |
Admin routes are grouped under `middleware(['auth'])` with prefix `admin/` and name prefix `admin.`. The `/dashboard` route simply redirects to `admin.articoli.index`.
### Articolo Model
`qr_code` is auto-generated on `created` event using the format `{id}-{timestamp}`. The `codice_articolo` field is unique. The public scanner URL resolves articles via `qr_code`, not `id`.
### QR Code features in `ArticoloController`
- `qrCode()` — renders QR inline as SVG/PNG
- `downloadQrCode()` — streams PNG (300×300px, error correction H)
- `printQrCodes()` — generates multi-article PDF via dompdf using `pdf-qrcodes.blade.php`
- `import()` — Excel import via PhpSpreadsheet; supports "merge" (default) and "clean import" modes
### Layouts
- `layouts/app.blade.php` — authenticated area (uses `<x-app-layout>`)
- `layouts/guest.blade.php` — public/auth pages (uses `<x-guest-layout>`)
- Blade components live in `resources/views/components/` and `app/View/Components/`
## Database
Default is **SQLite** (`database/database.sqlite`). The `articoli` table has two unique constraints: `codice_articolo` and `qr_code`.
Excel import expects these column groups: `UBICAZIONE` (Codice Articolo, Ciclo, Diametro, Descrizione, Posizione, Quantita) and `PARAMETRI TECNOLOGICI` (Tipo Lavorazione, Materiale da lavorare, Maximum Thickness, Speed RPM, Feed, Max Thrust A, Min Torque A, Quantita Fori).