ComplianceNFs/TODOs-and-Roadmap.md
Giuliano Paschoalino e6b2180c94 feat(logging): Implement robust logging across infrastructure, application, and UI layers
- Added Microsoft.Extensions.Logging to various projects for enhanced logging capabilities.
- Updated AccessDbRepository and AttachmentRepository to include logging for database operations.
- Integrated logging into MailListener for better error handling and operational insights.
- Modified tests to utilize mocks for ILogger to ensure logging behavior is tested.
- Enhanced App.xaml.cs and MainWindow.xaml.cs to log application startup and initialization events.
- Created LoggingBootstrapper to configure logging services in the WPF application.
- Updated TODOs-and-Roadmap.md to reflect the addition of logging features.
2025-06-18 17:38:52 -03:00

4.0 KiB

ComplianceNFs TODOs and Roadmap

TODOs in Codebase

ComplianceNFs.Infrastructure/Archiving/FileArchiver.cs

  • FileArchiver.ArchiveAsync: Create subfolder for invoice.Status, move file

ComplianceNFs.Infrastructure/Mail/MailListener.cs

  • MailListener.StartListening: Connect to Outlook app, filter by allowlist, support account/folder selection, recursively process subfolders, raise NewMailReceived
  • Add logging and error handling for Outlook interop failures

ComplianceNFs.Infrastructure/Parsers/PdfParser.cs

  • PdfParser.Parse: Use iTextSharp or PdfSharp to extract text/numbers via regex

ComplianceNFs.Infrastructure/Parsers/XmlParser.cs

  • XmlParser.Parse: Use System.Xml to parse known elements

ComplianceNFs.Infrastructure/Repositories/AccessDbRepository.cs

  • AccessDbRepository.GetByUnidade: Implement actual query to Access DB

  • AccessDbRepository.GetByUnidadeAndMonth: Implement actual query to Access DB

ComplianceNFs.Infrastructure/Repositories/AttachmentRepository.cs

  • AttachmentRepository.SaveRawAsync: Implement actual insert into Postgres attachments table

  • AttachmentRepository.UpdateMatchAsync: Implement actual update in Postgres

  • Add robust logging for DB operations and errors

ComplianceNFs.Core/Application/Services

  • InvoiceIngestionService: Implement ingestion logic and subscribe to NewMailReceived

  • MatchingService: Implement invoice matching logic

    • Add fallback and multi-invoice sum logic in MatchAsync
  • ComplianceService: Implement compliance validation logic

  • NotificationService: Implement notification logic for mismatches

  • ArchivingService: Implement archiving logic for final status

  • Add robust logging to application services

ComplianceNFs.Monitor/MonitorViewModel.cs

  • MonitorViewModel: Inject IInvoiceStatusStream and subscribe to updates

  • MonitorViewModel.ForceScan: Call service to force ingestion cycle

ComplianceNFs.Service/Program.cs

  • Register application services (InvoiceIngestionService, MatchingService, etc.)

Roadmap to Finish the App

1. Infrastructure Layer

  • FileArchiver: Implement logic to create subfolders by InvoiceStatus and move files accordingly.
  • MailListener: Use Outlook Interop to connect to local Outlook, filter by allowlist, support account/folder selection, recursively process subfolders, and raise NewMailReceived event.
  • PdfParser: Integrate iTextSharp or PdfSharp, extract invoice data using regex.
  • XmlParser: Use System.Xml to parse invoice XMLs and map to ParsedInvoice.
  • AccessDbRepository: Implement queries to Access DB for buying records.
  • AttachmentRepository: Implement Postgres insert/update for invoice attachments.
  • Add robust logging and error handling for all infrastructure components.

2. Application Layer

  • Implement and register:

    • InvoiceIngestionService
    • MatchingService
    • ComplianceService
    • NotificationService
    • ArchivingService
  • Wire up these services in DI in Program.cs.

  • Add fallback and multi-invoice sum logic in MatchingService.MatchAsync.

  • Add robust logging to application services.

3. Service Host

  • Ensure all services are registered and started in the Worker.
  • Implement polling and retry logic as per configuration.
  • Add robust logging to workflow orchestration.

4. WPF Monitor

  • Inject and subscribe to IInvoiceStatusStream in MonitorViewModel.
  • Implement ForceScan to trigger ingestion from UI.
  • Bind UI to show recent invoice status updates.
  • Add logging for UI events and errors.

5. Configuration & Testing

  • Test all configuration values from appsettings.json.
  • Add error handling, logging, and validation.
  • Write integration tests for end-to-end flow.

Note: Robust logging is now implemented across infrastructure, application, service, and UI layers. Review log output and adjust log levels as needed for production.