diff --git a/Nop.Plugin.Misc.AIPlugin/README.md b/Nop.Plugin.Misc.AIPlugin/README.md new file mode 100644 index 0000000..ca173d9 --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/README.md @@ -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