Add architecture docs for Mango.Nop & update dev DB config

Added detailed documentation: ARCHITECTURE.md, CONVENTIONS.md, GLOSSARY.md, and copilot-instructions.md for Mango.Nop.Core, Data, and Services. Updated/added README.md files for all Mango.Nop libraries and the FruitBank nopCommerce plugin, clarifying structure, key types, and usage. Switched appsettings.json connection string from production to development database. These changes improve developer onboarding and enforce architectural consistency.
This commit is contained in:
Loretta 2026-03-29 10:44:03 +02:00
parent 1448993fa7
commit 8c7a9c31ba
1 changed files with 67 additions and 0 deletions

View File

@ -0,0 +1,67 @@
# Nop.Plugin.Misc.AIPlugin (FruitBank nopCommerce Plugin)
> For FruitBankHybridApp domain rules see: `../../../../../FruitBankHybridApp/.github/copilot-instructions.md`
> For Mango.Nop library docs see: `../../Libraries/README.md`
The **server-side nopCommerce plugin** for FruitBank. Runs inside nopCommerce 4.80.9 (net9.0). Handles admin UI, SignalR hubs, data access, measurements, orders, shipping, and AI services.
Project file: `Nop.Plugin.Misc.FruitBankPlugin.csproj`
## Folder Structure
| Folder | Purpose | Key Types |
|---|---|---|
| `Areas/Admin/Controllers/` | Admin-side MVC controllers — order, product, shipping, SignalR endpoints, file management | `CustomOrderController`, `CustomOrderSignalREndpoint`, `ShippingController`, `StockSignalREndpointServer`, `CustomProductController` |
| `Areas/Admin/Components/` | Admin ViewComponents — DevExtreme grids | `ShippingGridComponent`, `ShippingDocumentGridComponent`, `PartnersGridComponent`, `FileUploadGridComponent` |
| `Areas/Admin/Models/` | Admin view models — shipping, order, product, app download | `ShippingModel`, `ShippingSearchModel`, `OrderSearchModelExtended`, `GridBaseViewModel` |
| `Areas/Admin/Views/` | Admin Razor views | |
| `Components/` | Public-side ViewComponents | |
| `Controllers/` | Public-side controllers | `CheckoutController`, `FruitBankDataController` |
| `Domains/` | Entity configuration + data layer | `CustomTable`, `FruitBankDbContext` |
| `Domains/DataLayer/` | DbTable classes — EF Core repository per entity | `ShippingDbTable`, `OrderDtoDbTable`, `ShippingItemPalletDbTable`, etc. |
| `Domains/DataLayer/Interfaces/` | Repository interfaces | `IShippingDbSet`, `IOrderDtoDbSet`, `IShippingItemPalletDbSet`, etc. |
| `Domains/EventConsumers/` | nopCommerce entity event handlers | `FruitBankEventConsumer` |
| `Factories/` | Model factories — build admin models from entities | `ShippingModelFactory`, `MgOrderModelFactory`, `MgProductModelFactory` |
| `Filters/` | MVC action filters | `PendingMeasurementCheckoutFilter` |
| `Helpers/` | Utility helpers | `TextHelper` |
| `Infrastructure/` | Plugin startup, routing, view engine | `PluginNopStartup`, `RouteProvider`, `ViewLocationExpander` |
| `Mapping/` | EF Core entity mapping builders | `PluginBuilder`, `NameCompatibility` |
| `Migrations/` | Database schema migrations | `SchemaMigration` |
| `Models/` | Shared models — AI chat, MgBase extensions | `AIChatMessage`, `MgOrderModelExtended`, `MgProductModelExtended` |
| `Models/Orders/` | Order-specific admin models | `OrderModelExtended`, `OrderAttributesModel`, `OrderRevisionModel` |
| `Models/Products/` | Product-specific admin models | `ProductModelExtended`, `ProductAttributesModel` |
| `Services/` | Business logic services | See below |
## Key Services
| Service | Purpose |
|---|---|
| `MeasurementService` / `IMeasurementService` | Shipping measurement logic (weighing pallets) |
| `OrderMeasurementService` | Order measurement logic (outbound weighing) |
| `FruitBankHub` | SignalR hub — real-time communication with FruitBankHybridApp clients |
| `FruitBankAttributeService` | GenericAttribute CRUD for FruitBank-specific attributes |
| `FileStorageService` / `IFileStorageProvider` | File upload/download, local storage |
| `LockService` / `ILockService` | Distributed locking |
| `CustomPriceCalculationService` | Custom price calculation override |
| `AICalculationService` | AI-powered calculations |
| `OpenAIApiService` / `OpenAIService` | OpenAI GPT integration |
| `CerebrasAPIService` | Cerebras AI API integration |
| `InnvoiceApiService` / `InnVoiceOrderService` | Billingo/Innvoice integration |
| `PdfToImageService` | PDF rendering to images |
## SignalR Endpoints
The plugin exposes SignalR endpoints consumed by FruitBankHybridApp:
| Endpoint | File | Role |
|---|---|---|
| `CustomOrderSignalREndpoint` | `Areas/Admin/Controllers/` | Order CRUD + measurement via SignalR |
| `StockSignalREndpointServer` | `Areas/Admin/Controllers/` | StockTaking CRUD via SignalR |
| `FruitBankHub` | `Services/` | Main SignalR hub |
## Dependencies
- `Mango.Nop.Core`, `Mango.Nop.Services` (ProjectReferences via `../../Libraries/`)
- `Nop.Services`, `Nop.Web` (nopCommerce ProjectReferences)
- DevExpress ASP.NET Core 25.1.3
- SignalR, EF Core 9.0, PdfPig, PDFtoImage