From ff0a25775fca3a2e24b45091353feb45a1a78a1e Mon Sep 17 00:00:00 2001 From: Gaetano Savo Date: Tue, 15 Apr 2025 14:44:49 +0200 Subject: [PATCH] Aggiunta documentazione su GestorePDF --- arm_GestorePDF.md | 162 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 arm_GestorePDF.md diff --git a/arm_GestorePDF.md b/arm_GestorePDF.md new file mode 100644 index 0000000..0313e7b --- /dev/null +++ b/arm_GestorePDF.md @@ -0,0 +1,162 @@ +# GestorePDF System Documentation + +## Overview + +GestorePDF is a multi-threaded PDF generation system composed of two main components: + +- **GestorePDF** (v4.0.0.0) - Main executable project +- **GestorePDF.Logic** (v2016.207.1342.27) - Core business logic library + +## Architecture + +### Component Structure + +1. **GestorePDF (Main Application)** + - Entry point for the PDF management system + - Contains ThreadManager for process initialization + +2. **GestorePDF.Logic (Business Logic)** + - Core processing engine + - Handles PDF generation workflow + - Manages thread queuing and execution + - Implements error handling and logging + +### Key Components + +#### ThreadManager (GestorePDF) + +- Main entry point class +- Initializes the PDF processing system +- Starts the processing logic + +#### MasterThread (GestorePDF.Logic) + +- Manages work queue using `ConcurrentQueue` +- Processes data threads sequentially +- Creates GestoreThread instances for PDF generation +- Implements thread-safe processing + +#### GestoreThread (GestorePDF.Logic) + +- Core PDF generation worker +- Handles both "DIAGNOSI" and "MONITORAGGIO" report types +- Features: + - PDF generation via PDFGenerator + - Error logging and database status updates + - Configurable PDF storage options + - Document status management + - Exception handling and error reporting + +#### Worker (GestorePDF.Logic) + +- Task-based processing unit +- Manages processing context via PipelineContext +- Handles network (Rete) and fiscal code (CodiceFiscale) data + +## Process Flow + +1. ThreadManager initializes the system +2. MasterThread manages the work queue +3. GestoreThread performs PDF generation: + - Processes DIAGNOSI reports + - Processes MONITORAGGIO reports + - Updates document status + - Handles error conditions + +## Integration Points + +- **Database**: SQL Server (DBProvider.SqlServerStampeC6) +- **Logging**: NLog system +- **PDF Generation**: PDFGenerator component +- **Utilities**: ContrattoSei.Utilities + +## Configuration + +- PDF storage options controlled via "SavePDFtoDISK" setting +- Supports multiple storage modes: + - File system storage + - Database storage + - Configurable target folders + +## Error Handling + +- Comprehensive exception handling +- Error logging to database +- Document status recovery +- Fault customer tracking + +## Performance Considerations + +- Thread-safe queue implementation +- Sequential processing of data threads +- Configurable processing delays +- Status monitoring and recovery mechanisms + +## Template System + +The system uses `TemplateGenerator.xml` as a configuration file that defines the structure and content of generated PDF reports: + +1. **Section Definitions** + - Contains detailed definitions of all possible sections (e.g., AreediBisogno, AssetClass, etc.) + - Each section defines: + - Title + - Body content + - Detailed descriptions and explanations + +2. **Report Templates** + - Defines two main report types: + - "MONITORAGGIO" + - "DIAGNOSI" + +3. **Client Customization** + - Differentiates templates by: + - Contract type: "OLD" vs "PRIVATE" + - Client type: "NONPROFFESIONAL" vs "PROFFESIONAL" + +4. **Page Layout** + - Specifies sections per page + - Defines section order + - Includes various components (AreediBisogno, AssetClass, etc.) + +## Data Sources + +1. **SQL Server Database (DBProvider.SqlServerStampeC6)**: + - Key Stored Procedures: + - `c6martPeriodico.UpdateStatoReport` - report status updates + - `[C6MartPeriodico].[GESTIONE_INSERT_CUSTOMER_ERROR]` - error handling + - `test.GESTIONE_PDF_PREPARE_TEST_SAMPLE` - data preparation + - `[C6Mart].[UT_INSERT_ERROR]` - error logging + - `SP_GESTIONE_UPDATE_ELABORAZIONE_PDF` - processing updates + +2. **DataThread Structure**: + Contains core report generation data: + - CodiceFiscale + - Rete + - TipoContratto + - ReportsType + - TipoReport ("DIAGNOSI" or "MONITORAGGIO") + - NomeFileReport + +3. **Data Access Layer**: + - Uses `DataAccessLayer` for database access + - `DataAccessDE` for specific database operations + +4. **Configuration**: + - Uses `ConfigurationManager.AppSettings` for parameters: + - "SavePDFtoDISK" + - "SavePDFtoDISK_Folder" + - "SP_GESTIONE_UPDATE_ELABORAZIONE_PDF" + +## Data Flow + +1. System receives PDF generation request via `DataThread` +2. Retrieves necessary data from database using stored procedures +3. Applies data to template defined in TemplateGenerator.xml +4. Generates final PDF using PDFGenerator component + +## Future Enhancements + +- Support for additional report types +- Enhanced error handling and logging +- Improved performance optimization +- Expanded integration points