Files
DP44/enriched-qwen3-coder-next/DataPRO/Reports.md
2026-04-17 14:55:32 -04:00

6.0 KiB
Raw Blame History

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
DataPRO/Reports/ChannelCalibrationList.cs
DataPRO/Reports/DASLayout.cs
DataPRO/Reports/DiagnosticsReport.cs
2026-04-16T03:51:09.548515+00:00 Qwen/Qwen3-Coder-Next-FP8 1 574c22aeaf057df0

ChannelCalibrationList Documentation

1. Purpose

The ChannelCalibrationList class generates a calibration status report for sensor channels, aggregating calibration dates, next due dates, and status indicators (OK, Warn, Overdue) into structured Excel and/or PDF reports. It extends ReportBase and is responsible for transforming an array of ChannelHelper objects—containing channel-specific calibration data—into a formatted table report, applying conditional styling based on calibration status for the NextCal column. This report supports test-specific naming and optional dual-format output (Excel + PDF), and is used to provide auditable calibration traceability for test channels.

2. Public Interface

ChannelCalibrationList.Fields enum

Defines the column fields for the report table:

  • Location
  • SensorAxis
  • SerialNo
  • Cal
  • NextCal

ChannelHelper class

Encapsulates channel calibration data:

  • Properties:
    • string Location
    • string SensorAxis
    • string SerialNo
    • string SerialNumberWithAxis (not used in current implementation)
    • string Cal (calibration date string)
    • string NextCal (next calibration due date string)
    • ResultStatus CalStatus (enum: OK, Overdue, Warn)
  • Constructors:
    • ChannelHelper() initializes all string properties to "".
    • ChannelHelper(string location, string sensorAxis, string serialNo, string cal, string nextCal) initializes the first five properties.

ChannelHelper.ResultStatus enum

Indicates calibration status:

  • OK
  • Overdue
  • Warn

ChannelCalibrationList()

Default constructor; no side effects.

GetReportFilenamePath(string reportPath, string testId)

Signature: public static string GetReportFilenamePath(string reportPath, string testId)
Returns the full path for the report file. If testId is non-empty, prepends it to the filename (e.g., "T123 ChannelCalibrationList.xlsx"); otherwise, returns "ChannelCalibrationList.xlsx" in reportPath.

DoReport(...)

Signature: public void DoReport(ChannelHelper[] channels, string outputFileName, string folderNameId, string sensitivityDisplayFormat, bool generateExcelReports, bool generatePDFReports)
Generates the calibration report:

  • Builds a DataTable (dt) with columns from Fields enum.
  • Populates rows from channels, mapping ChannelHelper properties to columns.
  • Applies styling to the NextCal column via a parallel dtStyles DataTable:
    • OKFillStyles.Pass
    • WarnFillStyles.Warn
    • OverdueFillStyles.Fail
    • Only if NextCal is non-empty and not "--".
  • Deletes existing outputFileName if present (logs via ReportFileWillBeOverwritten/ReportFileInUse).
  • Sets TemplateFilename to the base template path (via GetReportFilenamePath(GetTemplateReportPath(), string.Empty)).
  • If generateExcelReports:
    • Calls OutputReport(new DataTable[] { dt }, new DataTable[] { dtStyles }).
    • Copies result to folderNameId via CopyReportIfNeeded.
  • If generatePDFReports:
    • Replaces .xlsx with .pdf in outputFileName.
    • Sets DestinationTemplateFilename to a temp file (.xlsx.tmp).
    • Calls OutputReportPDF(...) with sensitivityDisplayFormat.
    • Copies PDF result via CopyReportIfNeeded.

3. Invariants

  • dtStyles is only populated for NextCal and Cal columns (others default to -1).
  • NextCal styling is applied only when the value is non-null/whitespace and not "--".
  • Cal column data is copied directly from ch.Cal without styling.
  • Excel and PDF outputs share the same base template (from GetTemplateReportPath()), but PDF generation uses a temporary template copy to avoid overwriting the Excel-filled template.
  • outputFileName is overwritten in-place for PDF generation only if generatePDFReports is true.
  • channels array may be empty; no explicit validation is performed.

4. Dependencies

  • Base class: ReportBase (provides OutputReport, OutputReportPDF, CopyReportIfNeeded, ReportFileWillBeOverwritten, ReportFileInUse, GetTemplateReportPath, TemplateFilename, OutputFilename, DestinationTemplateFilename).
  • Enums used: ReportBase.FillStyles (values: Pass, Warn, Fail, NotTested).
  • Namespaces: System, System.Linq, System.Data, System.IO.
  • Consumers: Likely invoked by higher-level test orchestration logic (e.g., test runner or report generator) that provides ChannelHelper[] data.

5. Gotchas

  • SerialNumberWithAxis property in ChannelHelper is defined but never used in DoReport.
  • Cal column has no styling applied, even though dtStyles is created for it—only NextCal uses dtStyles.
  • Date formatting for Cal/NextCal is assumed to be handled by the caller (strings passed directly); no parsing or validation occurs in DoReport.
  • PDF generation reuses outputFileName (replaces .xlsx.pdf), meaning the Excel file is overwritten before PDF generation if both formats are requested. The DestinationTemplateFilename workaround (... + ".tmp") is used to preserve the Excel template, but the original Excel output is overwritten.
  • No handling for null in channels array or null/empty ChannelHelper instances—could throw NullReferenceException.
  • GetReportFilenamePath does not use testId for PDF naming in DiagnosticsReport or DASLayout; only DASLayout uses testId in its own GetReportFilenamePath.
  • ChannelHelper constructor overloads do not initialize CalStatus; default is OK (enum default), but this may be misleading if not explicitly set by caller.
  • None identified from source alone.