Files
print-calculator/GEMINI.md
Joe Küng 9cbd856ab6
Some checks failed
Build, Test and Deploy / test-backend (push) Failing after 42s
Build, Test and Deploy / build-and-push (push) Has been skipped
Build, Test and Deploy / deploy (push) Has been skipped
feat(back-end): new db for custom quote requests
2026-02-12 15:26:58 +01:00

2.8 KiB

GEMINI Project Context

Questo file serve a dare contesto all'AI (Antigravity/Gemini) sulla struttura e logica del progetto.

Project Overview

Nome: Print Calculator Scopo: Calcolare costi e tempi di stampa 3D da file STL in modo preciso tramite slicing reale. Stack:

  • Backend: Java 21 (Spring Boot 3.4), PostgreSQL, Flyway.
  • Frontend: Angular 19 (TypeScript), Angular Material, Three.js per visualizzazione 3D.

Architecture

Backend (/backend)

  • BackendApplication.java: Entrypoint dell'applicazione Spring Boot.
  • controller/: Espone le API REST per l'upload e il calcolo dei preventivi.
  • service/SlicerService.java: Wrappa l'eseguibile di OrcaSlicer per effettuare lo slicing reale del modello.
    • Gestisce i profili di stampa (Macchina, Processo, Filamento) caricati da file JSON.
    • Crea configurazioni on-the-fly e invoca OrcaSlicer in modalità headless.
  • service/GCodeParser.java: Analizza il G-Code generato per estrarre tempo di stampa e peso del materiale dai metadati del file.
  • service/QuoteCalculator.java: Calcola il prezzo finale basandosi su politiche di prezzo salvate nel database.
    • Gestisce costi macchina a scaglioni (tiered pricing).
    • Calcola costi energetici basati sulla potenza della stampante e costo del kWh.
    • Applica markup percentuali e fee fissi per job.

Frontend (/frontend)

  • Applicazione Angular 19 con architettura modulare (core, features, shared).
  • Three.js: Utilizzato per il rendering dei file STL caricati dall'utente.
  • Angular Material: Per l'interfaccia utente.
  • ngx-translate: Per il supporto multilingua.

Key Concepts

  • Real Slicing: Il backend esegue un vero slicing usando OrcaSlicer. Questo garantisce stime di tempo e materiale estremamente precise.
  • Database-Driven Pricing: A differenza di versioni precedenti, il calcolo del preventivo è ora guidato da entità DB (PricingPolicy, PrinterMachine, FilamentVariant).
  • G-Code Metadata: L'applicazione legge direttamene i commenti generati dallo slicer nel G-Code (es. ; estimated printing time, ; filament used [g]).

Development Notes

  • Backend: Richiede JDK 21. Si avvia con ./gradlew bootRun.
  • Database: Richiede PostgreSQL. Le migrazioni sono gestite da Flyway.
  • Frontend: Richiede Node.js 22. Si avvia con npm start.
  • OrcaSlicer: Deve essere installato sul sistema e il percorso configurato in application.properties o tramite variabile d'ambiente SLICER_PATH.

AI Agent Rules

  • No Inline Code: Tutti i componenti Angular DEVONO usare file separati per HTML (templateUrl) e SCSS (styleUrl). È vietato usare template o styles inline nel decoratore @Component.
  • Spring Boot Conventions: Seguire i pattern standard di Spring Boot (Service-Repository-Controller).