26ff8d9b4f
Set up repository with legacy .NET Framework 4.8 source (OLD/), new .NET 10 Blazor solution (NEW/), OpenSpec specifications, documentation, and project configuration.
58 lines
4.2 KiB
Markdown
58 lines
4.2 KiB
Markdown
# Architecture Overview
|
|
|
|
The JDE Scoping Tool is a manufacturing/ERP search application that caches data from JDE (Oracle) and CMS (Oracle) enterprise systems into SQL Server, allowing users to create complex searches and export results to Excel.
|
|
|
|
## Key Decisions
|
|
|
|
| Decision | Choice | Rationale |
|
|
|----------|--------|-----------|
|
|
| Target framework | .NET 10 | Modern LTS, consolidation from .NET Framework 4.8 |
|
|
| Deployment | Self-hosted Kestrel as Windows Service | Simple, no IIS dependency |
|
|
| UI | Blazor WebAssembly + Radzen | Modern SPA, free component library |
|
|
| Database access | Dapper | Preserve existing queries, minimal changes |
|
|
| Oracle driver | Oracle.ManagedDataAccess.Core | Both JDE and CMS now on Oracle |
|
|
| Data sources | Interface + prod/dev implementations | Development uses file exports, production uses Oracle |
|
|
| Authentication | Interface + prod/dev implementations | Development uses fake auth, production uses LDAP |
|
|
| Real-time | ASP.NET Core SignalR | Push search status updates |
|
|
| Excel | ClosedXML | Free MIT license (replaces EPPlus) |
|
|
| Testing | xUnit + Shouldly + NSubstitute | Free, readable assertions |
|
|
| Config | appsettings.json + env vars | Standard, secrets via environment |
|
|
| Database migrations | DbUp | Schema defined in application, versioned SQL scripts |
|
|
|
|
## High-Level Architecture
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Windows Service Host │
|
|
│ ┌───────────────┐ ┌───────────────┐ ┌─────────────────┐ │
|
|
│ │ Blazor WASM │ │ REST API │ │ SignalR Hub │ │
|
|
│ │ Client │ │ Controllers │ │ (StatusHub) │ │
|
|
│ └───────────────┘ └───────────────┘ └─────────────────┘ │
|
|
│ ┌───────────────────────────────────────────────────────┐ │
|
|
│ │ Background Services │ │
|
|
│ │ ┌─────────────────┐ ┌─────────────────────────┐ │ │
|
|
│ │ │ SearchProcessor │ │ DataSyncService │ │ │
|
|
│ │ └─────────────────┘ └─────────────────────────┘ │ │
|
|
│ └───────────────────────────────────────────────────────┘ │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
│
|
|
┌─────────────────────┼─────────────────────┐
|
|
▼ ▼ ▼
|
|
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
|
|
│ SQL Server │ │ JDE Oracle │ │ CMS Oracle │
|
|
│ (Local Cache)│ │ (Enterprise) │ │ (Enterprise) │
|
|
└───────────────┘ └───────────────┘ └───────────────┘
|
|
```
|
|
|
|
## Related Documentation
|
|
|
|
- [Solution Structure](./SolutionStructure.md)
|
|
- [Host Project](./HostProject.md)
|
|
- [Blazor Client](./BlazorClient.md)
|
|
- [Core Project](./CoreProject.md)
|
|
- [Database](./Database.md)
|
|
- [Data Flow](./DataFlow.md)
|
|
- [Configuration](./Configuration.md)
|
|
- [Testing](./Testing.md)
|
|
- [Dependencies](./Dependencies.md)
|