Files
pos-system/apps/web-client-tpos-net
Ho Ngoc Hai a8edfd1597 fix(p2): Wave 3 — fix 4 P2 backend architecture issues (TEC-261)
BACK-I-01: Add CI steps to generate openapi.yaml for all 24 .NET services
- Add .config/dotnet-tools.json with swashbuckle.aspnetcore.cli 7.2.0
- Add scripts/ci/generate-openapi.sh reusable script
- Update all 24 service CI workflows with dotnet tool restore + swagger tofile + artifact upload

BACK-I-02: Add OpenTelemetry Metrics + Prometheus /metrics to _template_dot_net
- Add OTel packages (Extensions.Hosting, Instrumentation.AspNetCore, Runtime, Prometheus)
- Register AddOpenTelemetry().WithMetrics() with ASPNetCore + Runtime instrumentation
- Map MapPrometheusScrapingEndpoint("/metrics") in middleware pipeline

BACK-W-01: Remove IHttpContextAccessor from all 18 handler files in merchant-service-net
- Create MerchantBaseController abstract base with GetCurrentUserId() helper
- Add Guid UserId to 11 Commands and 7 Queries
- Remove IHttpContextAccessor injection from all handlers, use request.UserId instead
- Update 7 controllers to inherit MerchantBaseController and extract userId from JWT claims
- Remove AddHttpContextAccessor() registration from Program.cs

BACK-W-03: Add explicit commandTimeout:5 to all Dapper queries in order-service-net
- 14 files updated: QueryAsync, ExecuteScalarAsync, QueryFirstOrDefaultAsync all get commandTimeout: 5

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-23 10:09:45 +07:00
..

WebClientTpos - Blazor Web App .NET 10

EN: English Documentation
VI: Tài liệu Tiếng Việt

Base frontend web application cho GoodGo Platform được xây dựng với Blazor WebAssembly + BFF Pattern.

Architecture / Kiến trúc

┌─────────────────────────────────────────────────────────────────────┐
│                           Browser                                    │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │              Blazor WebAssembly Client                        │   │
│  └─────────────────────────────────────────────────────────────┘   │
└────────────────────────────────┬────────────────────────────────────┘
                                 │ /api/*
                                 ▼
┌─────────────────────────────────────────────────────────────────────┐
│                    BFF (Backend for Frontend)                        │
│                   WebClientTpos.Server + YARP                        │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │ Routes:  /api/iam/**       → iam-service                     │   │
│  │          /api/merchants/** → merchant-service                │   │
│  │          /api/catalog/**   → catalog-service                 │   │
│  │          /api/orders/**    → order-service                   │   │
│  └─────────────────────────────────────────────────────────────┘   │
└────────────────────────────────┬────────────────────────────────────┘
                                 │ Internal Network
                                 ▼
┌─────────────────────────────────────────────────────────────────────┐
│                        Microservices                                 │
│   ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐        │
│   │   IAM    │   │ Merchant │   │ Catalog  │   │  Order   │        │
│   │ :5101    │   │  :5102   │   │  :5103   │   │  :5104   │        │
│   └──────────┘   └──────────┘   └──────────┘   └──────────┘        │
└─────────────────────────────────────────────────────────────────────┘

Tech Stack

Layer Technology
Client Blazor WebAssembly (.NET 10)
BFF ASP.NET Core + YARP Reverse Proxy
Shared Class Library với Data Annotations
Styling CSS Variables, Dark Mode

Getting Started / Bắt đầu

cd apps/web-client-tpos-net
dotnet restore
dotnet run --project src/WebClientTpos.Server

# Open http://localhost:5091

Project Structure / Cấu trúc

web-client-tpos-net/
├── src/
│   ├── WebClientTpos.Client/       # Blazor WebAssembly
│   ├── WebClientTpos.Server/       # BFF with YARP Proxy
│   └── WebClientTpos.Shared/       # Shared DTOs
├── docs/
│   ├── en/                         # English docs
│   └── vi/                         # Vietnamese docs
└── Dockerfile

See detailed documentation in docs/en/ or docs/vi/.