Add per-IED print preview and harden IO FAT reconnect reporting - #124
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4ef1904935
ℹ️ 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".
| ArgumentNullException.ThrowIfNull(project); | ||
| ArgumentNullException.ThrowIfNull(ied); | ||
| var created = generatedAt ?? DateTimeOffset.Now; | ||
| var enabled = ied.TestPoints.Where(point => point.TestEnabled).ToList(); |
There was a problem hiding this comment.
Keep preview and exported PDF signal scopes consistent
When an operator disables test points, this filter removes them from both the preview table and its metrics, but ExportSelectedIedPdf_Click passes the original IED to IoFatPdfReportService, whose DrawIedSection iterates every ied.TestPoints entry without checking TestEnabled. The resulting per-IED PDF therefore contains signals that were absent from the print preview and may count them as pending; either preview the complete export scope or filter the scoped project before generating the PDF.
Useful? React with 👍 / 👎.
| private static bool IsReportSource(string source) | ||
| => source.Contains("BRCB", StringComparison.OrdinalIgnoreCase) || | ||
| source.Contains("URCB", StringComparison.OrdinalIgnoreCase) || | ||
| source.Contains("report", StringComparison.OrdinalIgnoreCase); |
There was a problem hiding this comment.
Recognize the runtime's static and dynamic report labels
For an active RCB whose name is something ordinary such as Events or RP01, the runtime emits CurrentSource as Static: Events or Dynamic: RP01 (NativeIec61850Client.BuildAcquisitionLabel), neither of which matches these tokens. ObserveIoFatAcquisitionAsync consequently treats genuinely report-backed points as unknown, waits the full timeout, and then reports report-backed 0/N; recognize the emitted Static:/Dynamic: acquisition prefixes rather than relying on the vendor-defined RCB name.
Useful? React with 👍 / 👎.
Purpose
Address field feedback in the workbook-driven IO List FAT workspace:
Per-IED print preview
.arsasexport unchangedThe implementation follows the project-owned ARIEC60870 pattern: standalone HTML is generated from current evidence and rendered with
WebBrowser.NavigateToString.Progress and reconnect
IsPreparingflags after the true preparation owner completesConnectUsingSavedModelAsyncfirst when endpoint/model cache is availableReporting priority
Automated validation at head
4ef19049357404a34501b45d961ce1b8111241a0Validate IO List Testing run 40 — success
.arsascontracts passedBuild ARSAS run 788 — success
Validate SV evidence bundles run 72 — success
No review threads are open.