Files
print-calculator/GEMINI.md
Joe Küng bcdeafe119
All checks were successful
Build, Test and Deploy / test-backend (push) Successful in 23s
Build, Test and Deploy / build-and-push (push) Successful in 22s
Build, Test and Deploy / deploy (push) Successful in 5s
chore(web): refractor
2026-02-06 11:33:25 +01:00

2.2 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. Stack:

  • Backend: Python (FastAPI), libreria trimesh per analisi geometrica.
  • Frontend: Angular 19 (TypeScript).

Architecture

Backend (/backend)

  • main.py: Entrypoint dell'applicazione FastAPI.
    • Definisce l'API POST /calculate/stl.
    • Gestisce l'upload del file, invoca lo slicer e restituisce il preventivo.
    • Configura CORS per permettere chiamate dal frontend.
  • slicer.py: Wrappa l'eseguibile di OrcaSlicer per effettuare lo slicing reale del modello.
    • Gestisce i profili di stampa (Macchina, Processo, Filamento).
    • Crea configurazioni on-the-fly per supportare mesh di grandi dimensioni.
  • calculator.py: Analizza il G-Code generato.
    • GCodeParser: Estrae tempo di stampa e materiale usato dai metadati del G-Code.
    • QuoteCalculator: Applica i costi (orari, energia, materiale) per generare il prezzo finale.

Frontend (/frontend)

  • Applicazione Angular standard.
  • Usa Angular Material.
  • Service per upload STL e visualizzazione preventivo.

Key Concepts

  • Real Slicing: Il backend esegue un vero slicing usando OrcaSlicer in modalità headless. Questo garantisce stime di tempo e materiale estremamente precise, identiche a quelle che si otterrebbero preparando il file per la stampa.
  • G-Code Parsing: Invece di stimare geometricamente, l'applicazione legge direttamene i commenti generati dallo slicer nel G-Code (es. estimated printing time, filament used).

Development Notes

  • Per eseguire il backend serve uvicorn.
  • Il frontend richiede npm install al primo avvio.
  • Le configurazioni di stampa (layer height, wall thickness, infill) sono attualmente hardcoded o con valori di default nel backend, ma potrebbero essere esposte come parametri API in futuro.

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.