296 Commits

Author SHA1 Message Date
Joseph Doherty a6c4cc2173 Update windchill connection string to QA failover host
Switch from wndchl-db-vt01 to WNCHLSQLQA with MultiSubnetFailover for
availability group connectivity.
2026-05-04 07:49:51 -04:00
Joseph Doherty ddc782dc76 Add DevLoader project reference 2026-02-13 10:11:01 -05:00
Joseph Doherty 1b9367dcbb Redesign refresh status table with summary counts and detail popup, sort pipeline dropdown alphabetically
Replace 11 per-table record columns on /refresh-status with Passed/Failed summary counts and a click-to-expand detail dialog showing per-table results. Add date-range SQL query to push filtering to the database. Sort pipeline dropdown alphabetically on /data-sync/requests.
2026-02-11 19:00:53 -05:00
Joseph Doherty 12cf94a9dc Fix Blazor WASM loading, add missing filter panel bind parameters, and gate nav behind auth
Remove UseBlazorFrameworkFiles() that blocked MapStaticAssets() from serving fingerprinted
Blazor framework files. Add Operators/ProfitCenters/WorkCenters alias parameters to their
respective filter panels so @bind-* two-way binding works in SearchEdit. Move all nav links
inside AuthorizeView so they only show when logged in.
2026-02-10 08:56:42 -05:00
Joseph Doherty 16b21ac243 Add Encrypt=false to Docker connection strings, gate nav links behind auth, and fix navbar layout
Add Encrypt=false to runtime Docker connection strings for SQL Server
compatibility. Wrap admin nav links (Search Queue, Refresh Status, Data
Sync) in AuthorizeView so they only render for authenticated users. Fix
navbar-nav horizontal layout with explicit flex-direction and an override
rule for hosted Blazor assets.
2026-02-10 08:06:16 -05:00
Joseph Doherty 9bd5e340b0 Convert XML list markup to plain numbered text in UI test remarks
Replace <list type="number"><item>...</item></list> with plain numbered
lines in method-level <remarks> blocks across 23 UI test files to match
the codebase convention of using simple text in XML doc comments.
2026-02-10 08:05:42 -05:00
dohejw01 cd219ae00b Merge pull request #1 from dohejw01/codex/playwright-dotnet-migration
Codex/playwright dotnet migration
2026-02-10 07:49:09 -05:00
Joseph Doherty 78e67c2aab Migrate UI tests to Playwright dotta 2026-02-10 07:47:48 -05:00
Joseph Doherty c3a9a6b19c Migrate NEW solution to central package management 2026-02-06 18:47:52 -05:00
Joseph Doherty 562f7e9e37 Migrate Playwright suite to .NET UI tests and deprecate TS project 2026-02-06 18:44:40 -05:00
Joseph Doherty 4e56ea3435 Add dockerized host deploy flow and fix Blazor static boot assets 2026-02-06 17:44:56 -05:00
Joseph Doherty dd18a05408 Migrate ExcelIO from ClosedXML to NPOI 2026-02-06 17:27:09 -05:00
Joseph Doherty 070d915b12 Add debug Dapper test script 2026-02-06 15:26:16 -05:00
Joseph Doherty 993126273a feat: add database and LDAP health checks with JSON response formatting
Implement health checks for SQL Server, Oracle databases (JDE, CMS, GIW), and LDAP servers to enable comprehensive system monitoring via the /health endpoint.
2026-01-30 07:24:33 -05:00
Joseph Doherty ee044d03e0 feat: add health check endpoint, file upload result handling, and Playwright E2E tests
- Add /health endpoint with anonymous access for monitoring
- Add FileUploadResult<T> model and PostMultipartForFileResultAsync for proper upload response handling
- Add ApiResult.Success() factory method for interface types
- Refactor Login.razor for cleaner code
- Add comprehensive Playwright E2E test suite with fixtures and helpers
2026-01-30 07:12:20 -05:00
Joseph Doherty ae69a261d6 fix(client): use grid reference pattern for explicit refresh after data changes
Fixes Clear Data bug in filter panels by using Radzen-recommended @ref + Reload()
pattern instead of relying on implicit data binding to update the grid display.
2026-01-30 07:10:58 -05:00
Joseph Doherty 1e23616638 refactor(tests): migrate Database.Tests from FluentAssertions to Shouldly
Replace FluentAssertions with Shouldly across all 6 test files (94 tests).
Add ShouldlyExtensions for BeCloseTo and BeEquivalentTo patterns.
2026-01-29 14:40:18 -05:00
Joseph Doherty 04383d672c refactor: UI file upload components and ephemeral RSA key service
Replace InputFile with RadzenUpload in filter panels for better UX,
switch to ephemeral RSA keys (safe for transport-only encryption),
and add test scripts and documentation files.
2026-01-28 17:22:30 -05:00
Joseph Doherty 5dd17cbab8 feat(host): add Serilog logging with console and file sinks
Configure structured logging following logging_style.md guidelines with
daily rolling log files (30-day retention) and proper shutdown handling.
2026-01-28 16:38:52 -05:00
Joseph Doherty f67b0e806e feat(configmanager): add Serilog file logging to UI and create README
Configure Serilog for the ConfigManager UI application, replacing console
logging with daily rolling file logs in logs/ directory with 30-day
retention. Add shutdown handler to flush logs on exit.
2026-01-28 16:13:16 -05:00
Joseph Doherty 45f4ecab7d feat(configmanager): add pipeline element management CLI commands
Add commands to manage pipeline elements (pre-scripts, transforms,
post-scripts, source, destination) matching the UI functionality:

- prescript/postscript: add, remove, edit, move-up, move-down
- transform: add, remove, edit, move-up, move-down with type shortcuts
- source: edit (connection, query, mass-query)
- destination: edit (table, match columns, exclude from update)

Features include 1-based indices, --dry-run support, file input for
scripts/queries, and numbered element display in pipeline show output.
2026-01-28 16:08:28 -05:00
Joseph Doherty 6f3e12b3b4 refactor(configmanager): convert CLI to structured logging with Serilog
Replace Console.WriteLine calls with ILogger usage across all CLI commands.
Serilog is configured via DI with clean message-only output suitable for
CLI tooling. Log levels map to --quiet (Warning), default (Information),
and --verbose (Debug) flags.

- Add Serilog packages and configure in Program.cs
- Convert all 7 command files to use ILoggerFactory from DI
- Add BeginScope with context properties (Command, ConfigPath, etc.)
- Create logging_style.md documenting patterns and best practices
- Update tests with TestLoggingHelper for Serilog test configuration
2026-01-28 15:53:08 -05:00
Joseph Doherty 61694ca50b feat(configmanager): add config set and connection update CLI commands
Add missing CLI commands to match UI capabilities: config set commands for
all configuration sections (datasync, dataaccess, auth, ldap, search,
excelexport) and connection update command. Also adds unit tests for
SecretCommands, ValidateCommand, and TestConnectionCommand.
2026-01-28 15:10:22 -05:00
Joseph Doherty bad0102af1 feat(configmanager): add CLI feature parity with UI
Expand ConfigManager.Cli with pipeline, config, backup, and connection commands
to match the feature set of ConfigManager.Ui, plus README documentation.
2026-01-28 10:40:25 -05:00
Joseph Doherty 1fc7792cd1 refactor(configmanager): rename UI project and split test projects
Rename ConfigManager to ConfigManager.Ui to match the Core/CLI/UI project
structure, and split the monolithic test project into Core.Tests,
Cli.Tests, and Ui.Tests to align with the source project organization.
2026-01-28 10:24:36 -05:00
Joseph Doherty 7c4781dfe3 refactor(configmanager): split into Core, CLI, and UI projects
Extract shared models, services, and application logic into
JdeScoping.ConfigManager.Core library. Add JdeScoping.ConfigManager.Cli
console app with validate, test-connection, and secret commands using
System.CommandLine. UI project now references Core for platform-agnostic
functionality while retaining Avalonia-specific dialog and clipboard services.
2026-01-28 10:01:48 -05:00
Joseph Doherty 5ee710d330 feat(configmanager): add dedicated SQL Server port control
Add SqlServerPort property to connection string editor for explicit port
configuration, replacing the need to embed port in server name (e.g.,
localhost,1434). The port control generates the comma-separated format in
the connection string but does not parse it back when loading existing
connection strings.
2026-01-28 09:24:49 -05:00
Joseph Doherty daaeba2004 refactor(client): replace hardcoded API URLs with ApiRoutes constants
Centralizes all API endpoint strings in ApiRoutes for consistency and
easier maintenance. Adds Hubs class for SignalR endpoints. Removes
completed plan files.
2026-01-28 08:33:48 -05:00
Joseph Doherty 1e21e33ade chore: deprecate standalone SecureStoreManager utility
Move SecureStoreManager project and tests to Deprecated folder and remove
from solution. SecureStore functionality is now integrated into ConfigManager.
2026-01-27 07:26:40 -05:00
Joseph Doherty 937eb66ac8 test(configmanager): expand unit test coverage to 451 tests
Add comprehensive tests for services (ConnectionTestService, RuntimeConfigValidation),
ViewModels (PipelineEditor, dialogs, transformers), and Avalonia headless UI tests
for views and forms.
2026-01-27 07:24:55 -05:00
Joseph Doherty 227a749cdf docs: add XML documentation to NEW solution src files
Fix 173 of 175 documentation issues across 48 files using CommentChecker,
adding missing <summary>, <param>, and <inheritdoc /> tags to public APIs.
2026-01-27 06:19:20 -05:00
Joseph Doherty bfc1c8064a refactor(securestore): store entire connection strings in SecureStore
Eliminates placeholder substitution (${KEY}) in favor of storing complete
connection strings as single encrypted values. SecureStore now auto-creates
entries for all connection strings defined in appsettings. ConfigManager
editor reads/writes values directly to SecureStore.
2026-01-23 14:44:04 -05:00
Joseph Doherty ba54a87be5 refactor(configmanager): migrate to per-file pipeline system
Align ConfigManager with DataSync's per-file pipeline format (pipeline.*.json)
by reusing EtlPipelineConfig types directly, eliminating duplicate models and
simplifying the codebase. Removes ~3200 lines of obsolete code.
2026-01-23 02:30:48 -05:00
Joseph Doherty 1b7bb26def refactor(securestore): remove password-based authentication in favor of key-file only
Simplify SecureStore by removing MasterKeyEnvVar and password-based methods, leaving only key-file authentication for better security practices.
2026-01-23 00:17:19 -05:00
Joseph Doherty 9c4a184233 chore: add PLANS directory to gitignore 2026-01-22 23:50:28 -05:00
Joseph Doherty 29ac56006d feat: implement ETL pipeline redesign and ConfigManager improvements
- Add pipeline registry with JSON-based configuration and hot-reload support
- Implement manual sync request feature with API, client UI, and database
- Improve ConfigManager: connection string dropdown in pipeline editor,
  step delete/reorder functionality, and fix JSON parsing for ConnectionStrings
2026-01-22 17:48:33 -05:00
Joseph Doherty 5a332232d0 chore: add data/ secrets files to gitignore 2026-01-22 11:12:28 -05:00
Joseph Doherty db663cc82d feat(configmanager): add ConnectionStrings editor with test connection support
Adds a new ConnectionStrings section to ConfigManager allowing users to manage
database connection strings with provider selection, connection testing, and
visual feedback for connection state.
2026-01-22 11:12:08 -05:00
Joseph Doherty 9bf0c29add refactor(configmanager): simplify SecureStore UI with unified info view
Consolidate SecureStoreLockedFormView and SecureStoreUnlockedFormView into
a single SecureStoreInfoFormView that displays store status and metadata.
Simplifies MainWindowViewModel by removing redundant state management.
Also adds design docs for RegexTransformer feature.
2026-01-22 09:40:38 -05:00
Joseph Doherty 5669bac221 test(configmanager): add RegexTransformerViewModel unit tests
Tests cover:
- Loading from model
- Serializing to model
- Test pattern command (success and error cases)
- Mode switching and help text
- Summary display
- Change notification
2026-01-22 07:23:19 -05:00
Joseph Doherty b9c977dea1 feat(configmanager): register RegexEditorView DataTemplate in MainWindow 2026-01-22 07:22:08 -05:00
Joseph Doherty 4954368284 feat(configmanager): add RegexEditorView Avalonia UI
Implements editor with:
- Column name input
- Mode toggle (Find & Replace / Match & Extract)
- Pattern and Replacement inputs
- Case insensitive checkbox
- NonMatchBehavior dropdown
- Live test/preview section with result display
- Pattern examples help box
2026-01-22 07:21:11 -05:00
Joseph Doherty 6095f3dca0 feat(configmanager): register Regex transformer in TransformerFactory
Add Regex to:
- Create() factory method
- CreateNew() factory method
- AvailableTypes list
2026-01-22 07:19:01 -05:00
Joseph Doherty 5058cd6802 feat(configmanager): add RegexTransformerViewModel
Implements ViewModel for Regex transformer editor with:
- Column, Pattern, Replacement, IgnoreCase, NonMatchBehavior properties
- Mode toggle between Find & Replace and Match & Extract
- Live test/preview functionality with error handling
2026-01-22 07:17:53 -05:00
Joseph Doherty 8734c57c9b test(datasync): add edge case tests for RegexTransformer
Tests cover:
- Capture group substitution in replacement
- Case-insensitive matching
- Null/DBNull passthrough
- Non-target columns unchanged
- Invalid regex pattern handling
- Column not found handling
2026-01-22 07:16:25 -05:00
Joseph Doherty af73aeba77 test(datasync): add Match & Extract mode tests for RegexTransformer
Tests cover:
- Extracting first capture group
- NonMatchBehavior: KeepOriginal, ReturnNull, ReturnEmpty
2026-01-22 07:15:06 -05:00
Joseph Doherty cb41e42bb7 feat(datasync): add RegexTransformer with Find & Replace mode
Initial implementation supporting:
- Find & Replace mode with regex pattern and replacement string
- Case-insensitive option
- NonMatchBehavior enum for handling non-matches
2026-01-22 07:14:08 -05:00
Joseph Doherty f87805b931 feat(configmanager): add NonMatchBehavior enum and regex properties to TransformerModel
Add configuration model support for the new Regex transformer including:
- NonMatchBehavior enum with JSON string serialization
- ColumnName, Pattern, Replacement, IgnoreCase, NonMatchBehavior properties
2026-01-22 07:12:22 -05:00
Joseph Doherty 6642c83cdb feat(configmanager): add runtime config validation using Infrastructure validators
Enable ConfigManager to validate runtime configuration (SecureStore secrets,
connection strings, LDAP) using the same validators as the Host application.
Adds AddInfrastructureValidators() extension for shared validator registration.
2026-01-21 18:31:42 -05:00
Joseph Doherty e5fe2f06e9 feat: add startup config validation and document ConfigManager pipeline editor
Add ConfigurationValidationRunner with IConfigurationValidator interface for
validating required settings at startup. Includes SecureStore and LDAP validators.
Expand ConfigManager with pipeline editing UI, dialogs, and step editors.
Update documentation with config validation guidance.
2026-01-21 17:47:15 -05:00