Update LiteCqrs integration and documentation
CI / Backend (build + test) (push) Failing after 1m23s
CI / Frontend (lint + typecheck + build) (push) Successful in 36s

- Replaced references to local project connections with the NuGet package for LiteCqrs in multiple documentation files, ensuring clarity on dependency management.
- Updated architecture and backend conventions documentation to reflect the current state of the LiteCqrs library as a NuGet package, enhancing consistency across the project.
- Improved descriptions of CQRS implementation and command/query handling in the tech stack documentation, providing clearer guidance for developers.
This commit is contained in:
Leonid Pershin
2026-07-24 04:18:03 +03:00
parent b05b76f32f
commit 9925968e22
4 changed files with 9 additions and 9 deletions
+2 -3
View File
@@ -8,9 +8,8 @@
сами создают конфиги, админ управляет серверами и пользователями. Есть **Telegram-бот** (ссылка на
сайт, просмотр конфигов, passwordless-вход). Бэкенд оркестрирует панели **3x-ui** через
[`ThreeXui.Net`](https://github.com/mrleo1nid/ThreeXui.Net), CQRS — через собственную библиотеку
[`LiteCqrs.Net`](https://github.com/mrleo1nid/LiteCqrs.Net) (на время разработки подключена как
`ProjectReference` из соседнего репозитория `D:\Github\LiteCqrs.Net`, ещё не опубликована в
NuGet/GitHub), и хранит проекцию домена в PostgreSQL.
[`LiteCqrs.Net`](https://github.com/mrleo1nid/LiteCqrs.Net) (NuGet-пакет), и хранит проекцию домена
в PostgreSQL.
Живые обновления — SignalR. Поставка — **единый Docker-образ** (фронт+бек+бот) + PostgreSQL в compose.
> Собрано и покрыто тестами, единый образ и compose-стек проверены живьём. Есть опциональный биллинг
+3 -3
View File
@@ -134,9 +134,9 @@ PnvPanel — backend на **ASP.NET Core (.NET 10)** по принципам **C
- **Команды** меняют состояние, возвращают `Result` / `Result<T>`; выполняются в транзакции (UnitOfWorkBehavior).
- **Запросы** только читают; могут ходить в БД проекциями (`Select` в DTO) без загрузки сущностей целиком.
- Диспетчер — `ISender` из [`LiteCqrs.Net`](https://github.com/mrleo1nid/LiteCqrs.Net) (собственная
лёгкая CQRS-библиотека, альтернатива MediatR с явным разделением Command/Query — сосед-репозиторий
в `D:\Github`, пока подключён `ProjectReference`'ом, не через NuGet): резолвит хендлер
команды/запроса из DI (dynamic-free кэшированный диспетчер) и прогоняет через pipeline behaviors.
лёгкая CQRS-библиотека, альтернатива MediatR с явным разделением Command/Query — NuGet-пакет,
версия закреплена в `Directory.Packages.props`): резолвит хендлер команды/запроса из DI
(dynamic-free кэшированный диспетчер) и прогоняет через pipeline behaviors.
Абстракции — `ICommand<T>`, `IQuery<T>`, `ICommandHandler<,>`, `IQueryHandler<,>`,
`IPipelineBehavior<,>` — все из `LiteCqrs`; PnvPanel-специфичные behaviors (`ValidationBehavior`,
`RequireActivationBehavior`, `UnitOfWorkBehavior`) и маркер `IRequiresActivation` остаются в
+1 -1
View File
@@ -99,7 +99,7 @@ backend/
- **Rich domain model**: инварианты в сущностях (приватные сеттеры, фабричные методы `Node.Register(...)`,
поведенческие методы `config.Revoke()`), а не анемичные DTO-сущности.
- **CQRS через [LiteCqrs.Net](https://github.com/mrleo1nid/LiteCqrs.Net)** (собственная лёгкая
CQRS-библиотека, не MediatR — сосед-репозиторий, пока подключён `ProjectReference`'ом): хендлеры
CQRS-библиотека, не MediatR — NuGet-пакет): хендлеры
реализуют `ICommandHandler<TCommand,TResult>` / `IQueryHandler<,>`; `ISender` резолвит их из DI и
прогоняет через `IPipelineBehavior<,>` (`LoggingBehavior``ValidationBehavior`
`RequireActivationBehavior``UnitOfWorkBehavior`, порядок задан в `AddLiteCqrs(...)`). Без
+3 -2
View File
@@ -5,8 +5,9 @@
- **Платформа**: .NET 10, ASP.NET Core Web API (Minimal API).
- **Архитектура**: Clean Architecture, 4 проекта — `Domain / Application / Infrastructure / Api`.
- **CQRS**: через [`LiteCqrs.Net`](https://github.com/mrleo1nid/LiteCqrs.Net) — собственную лёгкую
CQRS-библиотеку (сосед-репозиторий, на время разработки подключён `ProjectReference`'ом; ещё не
опубликован в NuGet), альтернативу MediatR с явным разделением Command/Query. `ISender.Send()`
CQRS-библиотеку (NuGet-пакет, версия закреплена в `Directory.Packages.props`; исходники —
отдельный репозиторий `D:\Github\LiteCqrs.Net`), альтернативу MediatR с явным разделением
Command/Query. `ISender.Send()`
резолвит `ICommandHandler<,>`/`IQueryHandler<,>` из DI (dynamic-free кэшированный диспетчер) и
прогоняет через `IPipelineBehavior<,>`: `LoggingBehavior` (готовый, из `LiteCqrs.Behaviors`),
`ValidationBehavior` (FluentValidation, свой), `RequireActivationBehavior` (свой),