Add structured metadata and update doc references
- Introduce @repo and @project metadata blocks in copilot-instructions.md and README.md for all projects, declaring type, dependencies, and layer. - Update all documentation links to reference canonical AyCode.Core and AyCode.Blazor repo locations, removing hardcoded paths. - Move MgGridBase and related doc references to AyCode.Blazor.Components/docs/ to reflect repo reorg. - Expand project READMEs with purpose, key files, and dependency tables for clearer architecture. - Update glossary, conventions, and architecture docs to match new doc structure and reference locations. - Apply minor corrections to terminology and file references for consistency and accuracy. - Standardize documentation and make project relationships explicit.
This commit is contained in:
parent
e393718c20
commit
90419001ab
|
|
@ -1,9 +1,15 @@
|
||||||
# FruitBankHybridApp — Domain Rules
|
# FruitBankHybridApp — Domain Rules
|
||||||
|
|
||||||
|
@repo {
|
||||||
|
type = "product"
|
||||||
|
layer = 2
|
||||||
|
own-dep-repos = ["AyCode.Core", "AyCode.Blazor", "Mango.Nop Libraries"]
|
||||||
|
}
|
||||||
|
|
||||||
> This is the **single source of truth** for domain rules. Do not duplicate these elsewhere.
|
> This is the **single source of truth** for domain rules. Do not duplicate these elsewhere.
|
||||||
> For detailed docs see: `README.md` → `docs/`
|
> For detailed docs see: `README.md` → `docs/`
|
||||||
> For core framework rules see: `../../../Aycode/Source/AyCode.Core/.github/copilot-instructions.md`
|
> For core framework rules see: `.github/copilot-instructions.md` (in AyCode.Core repo)
|
||||||
> For UI framework rules see: `../../../Aycode/Source/AyCode.Blazor/.github/copilot-instructions.md`
|
> For UI framework rules see: `.github/copilot-instructions.md` (in AyCode.Blazor repo)
|
||||||
> For nopCommerce library rules see: `../NopCommerce.Common/4.70/Libraries/.github/copilot-instructions.md`
|
> For nopCommerce library rules see: `../NopCommerce.Common/4.70/Libraries/.github/copilot-instructions.md`
|
||||||
|
|
||||||
## Business Domain
|
## Business Domain
|
||||||
|
|
@ -30,7 +36,7 @@
|
||||||
12. All AyCode references are via **DLL** (not ProjectReference) — this is intentional. nopCommerce 4.80.9 requirement.
|
12. All AyCode references are via **DLL** (not ProjectReference) — this is intentional. nopCommerce 4.80.9 requirement.
|
||||||
13. **No redundant code** — before writing new logic, search for existing methods. Reuse or extract shared logic into smaller methods rather than duplicating.
|
13. **No redundant code** — before writing new logic, search for existing methods. Reuse or extract shared logic into smaller methods rather than duplicating.
|
||||||
14. **Keep all .md files in sync** — when you modify code, update any affected .md file in the same area. If you already read an .md file during your work and notice it contradicts the current code, fix the discrepancy — but do NOT proactively scan or open .md files just to check for issues.
|
14. **Keep all .md files in sync** — when you modify code, update any affected .md file in the same area. If you already read an .md file during your work and notice it contradicts the current code, fix the discrepancy — but do NOT proactively scan or open .md files just to check for issues.
|
||||||
15. **MgGridBase** (AyCode.Blazor) is the canonical grid base for all data screens. New grids inherit `FruitBankGridBase<TEntity>`, set CRUD tags in the constructor, and use `MgGridWithInfoPanel` for layout. See `AyCode.Blazor/docs/MGGRID.md` for the full technical reference. Do NOT create parallel grid base classes.
|
15. **MgGridBase** (AyCode.Blazor) is the canonical grid base for all data screens. New grids inherit `FruitBankGridBase<TEntity>`, set CRUD tags in the constructor, and use `MgGridWithInfoPanel` for layout. See `AyCode.Blazor.Components/docs/MGGRID.md` (in AyCode.Blazor repo) for the full technical reference. Do NOT create parallel grid base classes.
|
||||||
16. **AyCode.Core** solution (`../../../Aycode/Source/AyCode.Core/`) contains all core framework code: SignalR base classes, serialization, binary protocol, data sources, logging. When a type is referenced but not defined in this solution, look it up in AyCode.Core source and docs.
|
16. **AyCode.Core** solution (`../../../Aycode/Source/AyCode.Core/`) contains all core framework code: SignalR base classes, serialization, binary protocol, data sources, logging. When a type is referenced but not defined in this solution, look it up in AyCode.Core source and docs.
|
||||||
17. **AyCode.Blazor** solution (`../../../Aycode/Source/AyCode.Blazor/`) contains all UI framework code: MgGridBase, MgGridWithInfoPanel, toolbar, layout persistence, Blazor component infrastructure. When a UI base class or component is not found here, look it up in AyCode.Blazor source and docs.
|
17. **AyCode.Blazor** solution (`../../../Aycode/Source/AyCode.Blazor/`) contains all UI framework code: MgGridBase, MgGridWithInfoPanel, toolbar, layout persistence, Blazor component infrastructure. When a UI base class or component is not found here, look it up in AyCode.Blazor source and docs.
|
||||||
18. **Mango.Nop Libraries** (`../NopCommerce.Common/4.70/Libraries/`) — independent shared library with its own `.github/copilot-instructions.md` and `docs/`. Contains DTOs, entities, data access, and service base classes. When a DTO or entity base class is not found in this solution, look it up in the Libraries source and docs.
|
18. **Mango.Nop Libraries** (`../NopCommerce.Common/4.70/Libraries/`) — independent shared library with its own `.github/copilot-instructions.md` and `docs/`. Contains DTOs, entities, data access, and service base classes. When a DTO or entity base class is not found in this solution, look it up in the Libraries source and docs.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
# FruitBank.Common.Server
|
# FruitBank.Common.Server
|
||||||
|
|
||||||
|
@project {
|
||||||
|
type = "product"
|
||||||
|
own-dep-projects = [
|
||||||
|
"AyCode.Core, AyCode.Interfaces, AyCode.Models.Server, AyCode.Services, AyCode.Services.Server (in AyCode.Core repo)",
|
||||||
|
"Mango.Nop.Core (in Mango.Nop Libraries repo)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
Server-side library: SignalR hubs, real-time broadcast service, logging infrastructure, and nopCommerce integration constants.
|
Server-side library: SignalR hubs, real-time broadcast service, logging infrastructure, and nopCommerce integration constants.
|
||||||
|
|
||||||
## Folder Structure
|
## Folder Structure
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
# FruitBank.Common
|
# FruitBank.Common
|
||||||
|
|
||||||
|
@project {
|
||||||
|
type = "product"
|
||||||
|
own-dep-projects = [
|
||||||
|
"AyCode.Core, AyCode.Entities, AyCode.Interfaces, AyCode.Models, AyCode.Services, AyCode.Utils (in AyCode.Core repo)",
|
||||||
|
"Mango.Nop.Core (in Mango.Nop Libraries repo)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
Shared domain library for the FruitBank nopCommerce plugin. Contains entities, DTOs, interfaces, measurement helpers, SignalR tags, and constants for fruit & vegetable wholesale operations.
|
Shared domain library for the FruitBank nopCommerce plugin. Contains entities, DTOs, interfaces, measurement helpers, SignalR tags, and constants for fruit & vegetable wholesale operations.
|
||||||
|
|
||||||
## Folder Structure
|
## Folder Structure
|
||||||
|
|
@ -27,4 +35,4 @@ Shared domain library for the FruitBank nopCommerce plugin. Contains entities, D
|
||||||
- **Shipping = INBOUND** (supplier → warehouse), **Order = OUTBOUND** (warehouse → customer)
|
- **Shipping = INBOUND** (supplier → warehouse), **Order = OUTBOUND** (warehouse → customer)
|
||||||
- **"Pallet" = measurement record**, always created even for non-measurable products
|
- **"Pallet" = measurement record**, always created even for non-measurable products
|
||||||
- **NetWeight = GrossWeight − PalletWeight − (TrayQuantity × TareWeight)**
|
- **NetWeight = GrossWeight − PalletWeight − (TrayQuantity × TareWeight)**
|
||||||
- See [`docs/GLOSSARY.md`](../docs/GLOSSARY.md) for full terminology
|
- See `docs/GLOSSARY.md` for full terminology
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
# FruitBankHybrid.Shared.Common
|
# FruitBankHybrid.Shared.Common
|
||||||
|
|
||||||
|
@project {
|
||||||
|
type = "product"
|
||||||
|
}
|
||||||
|
|
||||||
Shared common library. Currently a placeholder — no source files yet. .NET 10.0 with AOT enabled.
|
Shared common library. Currently a placeholder — no source files yet. .NET 10.0 with AOT enabled.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
# FruitBankHybrid.Shared.Tests
|
# FruitBankHybrid.Shared.Tests
|
||||||
|
|
||||||
|
@project {
|
||||||
|
type = "test"
|
||||||
|
own-dep-projects = [
|
||||||
|
"AyCode.Entities, AyCode.Services, AyCode.Utils (in AyCode.Core repo)",
|
||||||
|
"Mango.Nop.Core, Mango.Nop.Services (in Mango.Nop Libraries repo)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
MSTest integration and serialization tests. Covers SignalR client operations, JSON reference handling, binary serialization, Toon format, and bunit component rendering.
|
MSTest integration and serialization tests. Covers SignalR client operations, JSON reference handling, binary serialization, Toon format, and bunit component rendering.
|
||||||
|
|
||||||
## Folder Structure
|
## Folder Structure
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,14 @@
|
||||||
# FruitBankHybrid.Shared
|
# FruitBankHybrid.Shared
|
||||||
|
|
||||||
|
@project {
|
||||||
|
type = "product"
|
||||||
|
own-dep-projects = [
|
||||||
|
"AyCode.Core, AyCode.Entities, AyCode.Interfaces, AyCode.Models, AyCode.Services, AyCode.Services.Server, AyCode.Utils (in AyCode.Core repo)",
|
||||||
|
"AyCode.Blazor.Components (in AyCode.Blazor repo)",
|
||||||
|
"Mango.Nop.Core (in Mango.Nop Libraries repo)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
Main Blazor UI library shared across all three deployment targets (Server, WASM, MAUI). Contains pages, DevExpress grid components, SignalR client, measurement service, and layout.
|
Main Blazor UI library shared across all three deployment targets (Server, WASM, MAUI). Contains pages, DevExpress grid components, SignalR client, measurement service, and layout.
|
||||||
|
|
||||||
## Folder Structure
|
## Folder Structure
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
# FruitBankHybrid.Web.Client
|
# FruitBankHybrid.Web.Client
|
||||||
|
|
||||||
|
@project {
|
||||||
|
type = "product"
|
||||||
|
own-dep-projects = [
|
||||||
|
"AyCode.Core, AyCode.Core.Server, AyCode.Entities, AyCode.Entities.Server, AyCode.Interfaces, AyCode.Interfaces.Server, AyCode.Models, AyCode.Models.Server, AyCode.Services, AyCode.Services.Server, AyCode.Utils (in AyCode.Core repo)",
|
||||||
|
"Mango.Nop.Core (in Mango.Nop Libraries repo)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
Blazor WebAssembly client running in the browser after server prerendering. .NET 10.0.
|
Blazor WebAssembly client running in the browser after server prerendering. .NET 10.0.
|
||||||
|
|
||||||
## Folder Structure
|
## Folder Structure
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
# FruitBankHybrid.Web
|
# FruitBankHybrid.Web
|
||||||
|
|
||||||
|
@project {
|
||||||
|
type = "product"
|
||||||
|
own-dep-projects = [
|
||||||
|
"AyCode.Core, AyCode.Core.Server, AyCode.Entities, AyCode.Entities.Server, AyCode.Interfaces, AyCode.Interfaces.Server, AyCode.Models, AyCode.Models.Server, AyCode.Services, AyCode.Services.Server, AyCode.Utils (in AyCode.Core repo)",
|
||||||
|
"Mango.Nop.Core (in Mango.Nop Libraries repo)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
ASP.NET Core Blazor Server host. Serves the web interface, hosts SignalR hubs, and supports interactive WebAssembly rendering.
|
ASP.NET Core Blazor Server host. Serves the web interface, hosts SignalR hubs, and supports interactive WebAssembly rendering.
|
||||||
|
|
||||||
## Folder Structure
|
## Folder Structure
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
# FruitBankHybrid
|
# FruitBankHybrid
|
||||||
|
|
||||||
|
@project {
|
||||||
|
type = "product"
|
||||||
|
own-dep-projects = [
|
||||||
|
"AyCode.Core, AyCode.Services, AyCode.Entities (in AyCode.Core repo)",
|
||||||
|
"Mango.Nop.Core (in Mango.Nop Libraries repo)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
.NET MAUI Hybrid cross-platform app hosting Blazor components via BlazorWebView. Targets Android (API 33+), iOS (15.0+), and Windows.
|
.NET MAUI Hybrid cross-platform app hosting Blazor components via BlazorWebView. Targets Android (API 33+), iOS (15.0+), and Windows.
|
||||||
|
|
||||||
## Folder Structure
|
## Folder Structure
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,9 @@ FruitBankHybrid FruitBankHybrid.Web FruitBankHybrid.Web.Client
|
||||||
All projects also reference **AyCode.Core** (net9.0) and **AyCode.Blazor** (net10.0) via DLL references (not ProjectReference).
|
All projects also reference **AyCode.Core** (net9.0) and **AyCode.Blazor** (net10.0) via DLL references (not ProjectReference).
|
||||||
|
|
||||||
> **Context:** When a type or base class is not found in this solution, browse the external repos:
|
> **Context:** When a type or base class is not found in this solution, browse the external repos:
|
||||||
> - **AyCode.Core**: `../../../Aycode/Source/AyCode.Core/` — SignalR, serialization, binary protocol, data sources
|
> - **AyCode.Core** (in AyCode.Core repo) — SignalR, serialization, binary protocol, data sources
|
||||||
> - **AyCode.Blazor**: `../../../Aycode/Source/AyCode.Blazor/` — MgGridBase, UI components, layout persistence
|
> - **AyCode.Blazor** (in AyCode.Blazor repo) — MgGridBase, UI components, layout persistence
|
||||||
> - **Mango.Nop Libraries**: `../NopCommerce.Common/4.70/Libraries/` — independent library with own [copilot-instructions](../NopCommerce.Common/4.70/Libraries/.github/copilot-instructions.md) and [docs/](../NopCommerce.Common/4.70/Libraries/docs/)
|
> - **Mango.Nop Libraries**: `../NopCommerce.Common/4.70/Libraries/` — independent library with own `.github/copilot-instructions.md` and `docs/`
|
||||||
> - **FruitBank Plugin**: `../NopCommerce.Common/4.70/Plugins/Nop.Plugin.Misc.AIPlugin/` — server-side SignalR hubs, measurement services, DbTable classes
|
> - **FruitBank Plugin**: `../NopCommerce.Common/4.70/Plugins/Nop.Plugin.Misc.AIPlugin/` — server-side SignalR hubs, measurement services, DbTable classes
|
||||||
|
|
||||||
## Target Frameworks
|
## Target Frameworks
|
||||||
|
|
@ -67,7 +67,7 @@ User → DevExpress Grid → AcSignalRDataSource → SignalR (AcBinary) → DevA
|
||||||
|
|
||||||
## MgGrid — Grid System
|
## MgGrid — Grid System
|
||||||
|
|
||||||
All data screens use **MgGridBase** from AyCode.Blazor (see [AyCode.Blazor/docs/MGGRID.md](../../../Aycode/Source/AyCode.Blazor/docs/MGGRID.md) for full technical docs).
|
All data screens use **MgGridBase** from AyCode.Blazor (see `AyCode.Blazor.Components/docs/MGGRID.md` (in AyCode.Blazor repo) for full technical docs).
|
||||||
|
|
||||||
### FruitBank Grid Hierarchy
|
### FruitBank Grid Hierarchy
|
||||||
|
|
||||||
|
|
@ -90,7 +90,7 @@ public class FruitBankGridBase<TDataItem>
|
||||||
: MgGridBase<SignalRDataSourceObservable<TDataItem>, TDataItem, int, LoggerClient>
|
: MgGridBase<SignalRDataSourceObservable<TDataItem>, TDataItem, int, LoggerClient>
|
||||||
```
|
```
|
||||||
|
|
||||||
Adds FruitBank-specific defaults (master vs detail grid settings, alternating row style, header background). For the full settings table see [`FruitBankHybrid.Shared/Components/Grids/README.md`](../FruitBankHybrid.Shared/Components/Grids/README.md).
|
Adds FruitBank-specific defaults (master vs detail grid settings, alternating row style, header background). For the full settings table see `FruitBankHybrid.Shared/Components/Grids/README.md`.
|
||||||
|
|
||||||
### SignalR Tag Mapping
|
### SignalR Tag Mapping
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Conventions
|
# Conventions
|
||||||
|
|
||||||
> For core framework conventions see: `../../../Aycode/Source/AyCode.Core/docs/CONVENTIONS.md`
|
> For core framework conventions see: `CONVENTIONS.md` (in AyCode.Core repo)
|
||||||
> For UI framework conventions see: `../../../Aycode/Source/AyCode.Blazor/docs/CONVENTIONS.md`
|
> For UI framework conventions see: `CONVENTIONS.md` (in AyCode.Blazor repo)
|
||||||
|
|
||||||
## Naming
|
## Naming
|
||||||
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
- **GenericAttributes** for extending nopCommerce entities with custom data (IsMeasurable, Tare, AverageWeight).
|
- **GenericAttributes** for extending nopCommerce entities with custom data (IsMeasurable, Tare, AverageWeight).
|
||||||
- **Composition interfaces** for measurement traits: IMeasuringValues = IMeasuringWeights + IMeasuringQuantity.
|
- **Composition interfaces** for measurement traits: IMeasuringValues = IMeasuringWeights + IMeasuringQuantity.
|
||||||
- **DevExpress DxGrid** with `AcSignalRDataSource` for real-time grid data.
|
- **DevExpress DxGrid** with `AcSignalRDataSource` for real-time grid data.
|
||||||
- **MgGridBase** — canonical grid base from AyCode.Blazor (see [MGGRID.md](../../../Aycode/Source/AyCode.Blazor/docs/MGGRID.md)). Provides SignalR CRUD, layout persistence, master-detail, InfoPanel, fullscreen.
|
- **MgGridBase** — canonical grid base from AyCode.Blazor (see `AyCode.Blazor.Components/docs/MGGRID.md` (in AyCode.Blazor repo)). Provides SignalR CRUD, layout persistence, master-detail, InfoPanel, fullscreen.
|
||||||
- **FruitBankGridBase** — project adapter that fixes `TId=int`, `TLoggerClient=LoggerClient`, adds per-user layout and master/detail defaults.
|
- **FruitBankGridBase** — project adapter that fixes `TId=int`, `TLoggerClient=LoggerClient`, adds per-user layout and master/detail defaults.
|
||||||
- **FruitBankSignalRClient** as single hub client for all server communication.
|
- **FruitBankSignalRClient** as single hub client for all server communication.
|
||||||
- **DatabaseClient** for client-side caching with ConcurrentDictionary tables.
|
- **DatabaseClient** for client-side caching with ConcurrentDictionary tables.
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Glossary / Fogalomtár
|
# Glossary / Fogalomtár
|
||||||
|
|
||||||
> For core framework glossary see: `../../../Aycode/Source/AyCode.Core/docs/GLOSSARY.md`
|
> For core framework glossary see: `GLOSSARY.md` (in AyCode.Core repo)
|
||||||
> For UI framework glossary see: `../../../Aycode/Source/AyCode.Blazor/docs/GLOSSARY.md`
|
> For UI framework glossary see: `GLOSSARY.md` (in AyCode.Blazor repo)
|
||||||
|
|
||||||
Domain terminology for the FruitBank system. **Read this before making changes.**
|
Domain terminology for the FruitBank system. **Read this before making changes.**
|
||||||
|
|
||||||
|
|
@ -64,8 +64,8 @@ FruitBank extends them via:
|
||||||
|
|
||||||
## UI / Grid Components
|
## UI / Grid Components
|
||||||
|
|
||||||
For MgGrid framework terms (MgGridBase, MgGridWithInfoPanel, MgGridToolbarBase, MgGridDataColumn, MgGridInfoPanel, IMgGridBase, etc.) see [`AyCode.Blazor/docs/GLOSSARY.md`](../../../Aycode/Source/AyCode.Blazor/docs/GLOSSARY.md#mggrid-system) and [`MGGRID.md`](../../../Aycode/Source/AyCode.Blazor/docs/MGGRID.md).
|
For MgGrid framework terms (MgGridBase, MgGridWithInfoPanel, MgGridToolbarBase, MgGridDataColumn, MgGridInfoPanel, IMgGridBase, etc.) see `GLOSSARY.md` (in AyCode.Blazor repo) and `AyCode.Blazor.Components/docs/MGGRID.md` (in AyCode.Blazor repo).
|
||||||
|
|
||||||
| Term | Definition |
|
| Term | Definition |
|
||||||
|---|---|
|
|---|---|
|
||||||
| **FruitBankGridBase** | Project-level adapter: fixes `TSignalRDataSource=SignalRDataSourceObservable`, `TId=int`, `TLoggerClient=LoggerClient`. Adds per-user layout, master/detail defaults. See [`Grids/README.md`](../FruitBankHybrid.Shared/Components/Grids/README.md). |
|
| **FruitBankGridBase** | Project-level adapter: fixes `TSignalRDataSource=SignalRDataSourceObservable`, `TId=int`, `TLoggerClient=LoggerClient`. Adds per-user layout, master/detail defaults. See `FruitBankHybrid.Shared/Components/Grids/README.md`. |
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Domain Model Schema (Toon Format)
|
# Domain Model Schema (Toon Format)
|
||||||
|
|
||||||
> Full domain model in [Toon](../../AyCode.Core/AyCode.Core/Serializers/Toons/README.md) (Token-Oriented Object Notation) format.
|
> Full domain model in Toon (Token-Oriented Object Notation) format — see `AyCode.Core/Serializers/Toons/README.md` (in AyCode.Core repo).
|
||||||
> This is the authoritative schema for entities, DTOs, and enums in the FruitBank domain.
|
> This is the authoritative schema for entities, DTOs, and enums in the FruitBank domain.
|
||||||
|
|
||||||
@meta {
|
@meta {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue