Export IO FAT results as Excel and native PDF in .arsas projects - #115
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c8367290f3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (!manifest.TryGetProperty(entryProperty, out var entryValue) || entryValue.ValueKind != JsonValueKind.String || | ||
| !manifest.TryGetProperty(hashProperty, out var hashValue) || hashValue.ValueKind != JsonValueKind.String) | ||
| { | ||
| return; // Legacy package: existing importer verifies snapshot, workbook and journals. |
There was a problem hiding this comment.
Require report hashes for modern packages
When an io-fat manifest is present but either report entry or hash property is missing or has the wrong JSON type, this returns as though the package were legacy. Removing reportSha256 or resultWorkbookSha256 therefore lets a corrupted or missing native report pass ValidateAsync and the project opens successfully. Preserve compatibility only for manifests that are actually identified as legacy; modern manifests should reject incomplete report metadata.
Useful? React with 👍 / 👎.
| >= ' ' and <= '~' => character, | ||
| _ => ' ' |
There was a problem hiding this comment.
Preserve non-ASCII evidence text in PDFs
For projects containing non-ASCII names, locations, signal descriptions, or status reasons, every character outside printable ASCII is silently replaced with a space. Common values such as Überstrom, accented operator notes, and non-Latin identifiers are consequently altered or erased in the final evidence report. Encode the supported WinAnsi characters correctly or use a font/encoding that preserves the source text rather than discarding it.
Useful? React with 👍 / 👎.
| _page.Text( | ||
| PageWidth - Margin - 218f, | ||
| _cursorY - 18f, | ||
| $"{ied.TestPoints.Count} signals | {ied.PassedCount} PASS | {ied.ReviewCount} review | {pending} pending", |
There was a problem hiding this comment.
Include failed points in each IED header
When an IED has failed points, the header subtracts them from pending but never displays a FAIL count. For example, an IED with one failed signal is summarized as 1 signals | 0 PASS | 0 review | 0 pending, so the displayed categories do not total the signal count and the repeated per-IED header conceals the failure until individual rows are inspected.
Useful? React with 👍 / 👎.
Purpose
Complete the next IO List FAT evidence-export phase:
.arsasExcel result export
ARSAS_SIGNAL_IMPORTthrough OOXML workbook relationshipsTestPointIdNative PDF engine
masarray/ARIEC60870engine.arsasportable projectThe new user-facing project contains:
manifest.jsonproject.snapshot.jsonreport/IO-FAT-Report.pdfreport/IO-FAT-Results.xlsxManifest SHA-256 values protect the snapshot, source workbook, PDF, Excel result workbook, and evidence journals. Package creation is atomic and remains blocked while an IED session is active.
Import and compatibility
.arsasand legacy.arsas-iofat.arsasfile into IO List TestingUI
The browser-print workflow is no longer the primary report path.
Regression coverage
Focused IO Testing now runs 59 tests covering:
%PDF-1.4generation, readable evidence, xref, and EOF.arsaspackage contentsAutomated validation at head
c8367290f34aef9ff6e3cb79377bb03a64cd5b32Source provenance
The PDF primitive design is ported from
masarray/ARIEC60870, especiallysrc/ARIEC60870.Desktop/Reporting/EvidencePdfReportService.cs. The IEC 61850 IO FAT layout and report model are newly implemented for ARSAS.