-
This commit is contained in:
67
CLAUDE.md
67
CLAUDE.md
@@ -4,14 +4,62 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
|
||||
---
|
||||
|
||||
## ISTRUZIONI OBBLIGATORIE PER CLAUDE
|
||||
|
||||
### Auto-Aggiornamento CLAUDE.md
|
||||
|
||||
**OBBLIGATORIO:** Claude DEVE aggiornare questo file CLAUDE.md ogni volta che:
|
||||
|
||||
1. **Viene completato un task significativo** (fix, nuova feature, refactoring importante)
|
||||
2. **Viene risolto un problema tecnico** che potrebbe ripresentarsi in futuro
|
||||
3. **Si scopre un pattern/workaround** importante da ricordare
|
||||
4. **Termina una sessione di lavoro** - aggiornare "Quick Start - Session Recovery"
|
||||
|
||||
**Cosa aggiornare:**
|
||||
|
||||
- **Sezione "Quick Start - Session Recovery":**
|
||||
- Aggiornare "Ultima sessione" con data corrente
|
||||
- Spostare lavoro completato da "ultima sessione" a "sessioni precedenti"
|
||||
- Aggiungere nuovi task completati alla lista
|
||||
- Aggiornare "Prossimi task prioritari" (spuntare completati, aggiungere nuovi)
|
||||
|
||||
- **Sezione "Problemi Risolti (da ricordare)":**
|
||||
- Aggiungere OGNI problema tecnico risolto con:
|
||||
- Descrizione del problema
|
||||
- Causa root
|
||||
- Soluzione implementata
|
||||
- File coinvolti
|
||||
|
||||
- **Checklist:**
|
||||
- Aggiornare checkbox `[x]` per task completati
|
||||
- Aggiungere nuovi task se scoperti durante il lavoro
|
||||
|
||||
**Formato per nuovi problemi risolti:**
|
||||
|
||||
```markdown
|
||||
XX. **Nome Problema (FIX/IMPLEMENTATO DATA):** - **Problema:** Descrizione breve - **Causa:** Perché succedeva - **Soluzione:** Come è stato risolto - **File:** File modificati
|
||||
```
|
||||
|
||||
**NON dimenticare:** Questo file è la memoria persistente tra sessioni. Se non viene aggiornato, il lavoro fatto andrà perso e dovrà essere riscoperto.
|
||||
|
||||
---
|
||||
|
||||
## Quick Start - Session Recovery
|
||||
|
||||
**Ultima sessione:** 28 Novembre 2025
|
||||
**Ultima sessione:** 28 Novembre 2025 (sera)
|
||||
|
||||
**Stato progetto:** Migrazione Oracle APEX → .NET + React TypeScript in corso
|
||||
|
||||
**Lavoro completato nell'ultima sessione:**
|
||||
|
||||
- **FIX: Variabili Globali Report ({{$pageNumber}}, {{$totalPages}}, ecc.)** - RISOLTO
|
||||
- Le variabili speciali ora vengono correttamente risolte nel PDF finale
|
||||
- Aggiunta classe `PageContext` per passare numero pagina e totale pagine durante il rendering
|
||||
- Propagato `PageContext` attraverso tutta la catena di rendering (bitmap, text, binding resolution)
|
||||
- `ResolveBindingPath()` ora restituisce valori reali invece di placeholder
|
||||
|
||||
**Lavoro completato nelle sessioni precedenti (28 Novembre 2025):**
|
||||
|
||||
- **NUOVA FEATURE: Gestione Multi-Pagina nel Report Designer** - Completata
|
||||
- Nuovo tipo `AprtPage` per definire pagine con impostazioni individuali (size, orientation, margins, backgroundColor)
|
||||
- Ogni elemento ha `pageId` per assegnazione a pagina specifica
|
||||
@@ -878,6 +926,23 @@ frontend/src/
|
||||
|
||||
- **Migrazione template legacy:** `MigrateTemplatePages()` crea pagina default e assegna elementi orfani
|
||||
|
||||
15. **Variabili Globali Report (FIX 28/11/2025 sera):**
|
||||
- **Problema:** Le variabili speciali `{{$pageNumber}}`, `{{$totalPages}}`, `{{$date}}`, `{{$datetime}}`, `{{$time}}` non venivano stampate nel PDF - restavano come placeholder
|
||||
- **Causa:** `ResolveBindingPath()` restituiva placeholder statici (`"{{PAGE}}"`) invece dei valori reali perché il contesto pagina non veniva passato durante il rendering
|
||||
- **Soluzione:**
|
||||
1. Aggiunta classe `PageContext` con `PageNumber` e `TotalPages`
|
||||
2. Il ciclo di rendering ora traccia l'indice pagina corrente
|
||||
3. `PageContext` propagato attraverso tutta la catena: `GeneratePdfAsync` → `RenderContentToBitmap` → `RenderElementToCanvas` → `RenderTextToCanvas` → `ResolveContent` → `ResolveBindingWithFormat` → `ResolveBindingPath`
|
||||
4. `ResolveBindingPath()` ora usa i valori reali dal contesto:
|
||||
```csharp
|
||||
"$pageNumber" => pageContext?.PageNumber.ToString() ?? "1",
|
||||
"$totalPages" => pageContext?.TotalPages.ToString() ?? "1",
|
||||
"$date" => DateTime.Now.ToString("dd/MM/yyyy"),
|
||||
"$time" => DateTime.Now.ToString("HH:mm"),
|
||||
"$datetime" => DateTime.Now.ToString("dd/MM/yyyy HH:mm"),
|
||||
```
|
||||
- **File:** `ReportGeneratorService.cs` - Metodi `GeneratePdfAsync()`, `RenderContentToBitmap()`, `RenderElementToCanvas()`, `RenderTextToCanvas()`, `ResolveContent()`, `ResolveBindingWithFormat()`, `ResolveBinding()`, `ResolveExpression()`, `ResolveBindingPath()`
|
||||
|
||||
### Schema Database Report System
|
||||
|
||||
Le tabelle sono già nel DbContext (`AppollinareDbContext.cs`):
|
||||
|
||||
Reference in New Issue
Block a user