Initial commit: JDE Scoping Tool migration project
Set up repository with legacy .NET Framework 4.8 source (OLD/), new .NET 10 Blazor solution (NEW/), OpenSpec specifications, documentation, and project configuration.
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user