Commit Graph

614 Commits

Author SHA1 Message Date
Ho Ngoc Hai
30b3f9a37c feat(staff-portal): implement staff attendance and leave request management with dedicated portal UI and backend services 2026-03-06 04:29:00 +07:00
Ho Ngoc Hai
a51ecacfac feat(shop-recipes): add product linking, ingredient display, and edit functionality for recipes. 2026-03-06 03:29:28 +07:00
Ho Ngoc Hai
fd75da34dc feat: enhance inventory management with new item types, stocktake, wastage, and recipe-based deductions 2026-03-05 22:28:45 +07:00
Ho Ngoc Hai
6d5d4108c7 refactor(api, web-client): remove API versioning from services and update client calls, and enhance staff schedule management in the admin UI to support multiple days and shift presets. 2026-03-05 16:40:02 +07:00
Ho Ngoc Hai
3f1ecc8122 feat(booking-service, web-client-tpos): implement staff schedule creation/deletion and enhance staff name display. 2026-03-05 16:19:46 +07:00
Ho Ngoc Hai
81c5be9e37 fix(staff): Vấn đề trạng thái nhân viên "Invited" 2026-03-05 15:56:37 +07:00
Ho Ngoc Hai
e4bedf2cd3 feat(allPos): upgrad frontend 2026-03-05 15:33:23 +07:00
Ho Ngoc Hai
1fb1a5c52c feat(claude): establish detailed agent role definitions and comprehensive project context 2026-03-05 14:30:06 +07:00
Ho Ngoc Hai
91a219d65f feat: implement hourly rates for tables/rooms, add shop publishing, and introduce system health checks. 2026-03-05 12:09:28 +07:00
Ho Ngoc Hai
c70248fdec feat(karaoke-pos): integrate session management and F&B ordering with backend APIs across the workflow pages. 2026-03-05 11:15:46 +07:00
Ho Ngoc Hai
e748c43b22 feat(shop-admin): add happy hour and promotion configuration UI and enhance room management with add/edit/delete functionality. 2026-03-05 08:44:47 +07:00
Ho Ngoc Hai
cd979970e7 feat(fnb, tpos): implement table QR code scanning for customer menu and reservation management 2026-03-05 08:28:32 +07:00
Ho Ngoc Hai
cfcdbd069d feat(pos): implement order payment flow and update order aggregate status handling. 2026-03-05 08:05:19 +07:00
Ho Ngoc Hai
0901e91673 feat(pos): implement table-based ordering, kitchen ticket workflow, and table floor plan management 2026-03-05 07:53:00 +07:00
Ho Ngoc Hai
7102b89ef1 refactor(web-client-tpos): extract shop admin sections into dedicated Blazor components and centralize helpers 2026-03-05 07:16:16 +07:00
Ho Ngoc Hai
802c03995a feat(order-processing): execute order item strategies during order creation and add kitchen ticket API with session management. 2026-03-05 06:19:18 +07:00
Ho Ngoc Hai
926d4ee83c feat(tpos-client): implement send to kitchen workflow, table reservations, and enhanced admin zone management. 2026-03-05 06:00:21 +07:00
Ho Ngoc Hai
a4f4c4755e feat(fnb-reservation): implement reservation management with API, infrastructure, and TPOS client UI. 2026-03-05 05:39:02 +07:00
Ho Ngoc Hai
c0301a22e5 feat(pos): Display empty state messages for resource grids and implement shop-specific staff management in POS views. 2026-03-05 05:03:28 +07:00
Ho Ngoc Hai
88cd45c3a8 feat(pos-cafe): implement payment method settings, add detailed order history view, and update payment icons to Lucide 2026-03-05 04:40:06 +07:00
Ho Ngoc Hai
b041ba5449 feat(web-client-tpos): integrate StorageService API and adapt client data handling while removing multi-vertical architecture plan documentation. 2026-03-05 04:25:53 +07:00
Ho Ngoc Hai
14f6ddea77 feat(web-client-tpos): implement shop storage management and enhance revenue charts with membership level improvements 2026-03-05 04:16:49 +07:00
Ho Ngoc Hai
c86500214b feat: implement category CRUD with image upload, extend staff profile fields, and add membership level/EXP management 2026-03-05 03:03:48 +07:00
Ho Ngoc Hai
4d6c9c6ba3 feat: enhance error handling for staff and member creation, update IAM token lifetime, and refine staff query enumeration. 2026-03-05 02:10:52 +07:00
Ho Ngoc Hai
629fed8a55 commit 2026-03-05 01:39:40 +07:00
Ho Ngoc Hai
df7eec1ec2 feat(web-client-tpos, inventory-service): implement percentage-based campaigns and enrich inventory with product names 2026-03-04 20:22:54 +07:00
Ho Ngoc Hai
051261accd feat: implement recipe management, inventory operations, voucher integration, and order discounts 2026-03-04 20:05:38 +07:00
Ho Ngoc Hai
65f3da53ae refactor(merchant-service): standardize enumeration name resolution in shop queries using a new helper method. 2026-03-04 16:11:55 +07:00
Ho Ngoc Hai
028ef4c1cd feat: implement user-based wallet and transaction retrieval by parsing JWT sub claim and adjust JWT validation parameters across services. 2026-03-04 13:08:08 +07:00
Ho Ngoc Hai
7baba14fad refactor(web-client-tpos, order-service): improve API deserialization, update DTO types for Dapper compatibility, and refine API proxying for staff schedules and order cancellations. 2026-03-04 12:53:43 +07:00
Ho Ngoc Hai
64e7b4e00d refactor: update EF Core backing field mapping and ignore DDD enumeration types 2026-03-04 12:36:19 +07:00
Ho Ngoc Hai
2d74f53f0d refactor: update DTO numeric types, refactor EF Core entity configurations to use HasField, and enable JsonDocument change tracking. 2026-03-04 11:44:43 +07:00
Ho Ngoc Hai
89bd8232a8 feat: Implement Blazor lifecycle improvements, enhance navigation with browser history, and update EF Core entity configurations for backing fields 2026-03-04 11:35:41 +07:00
Ho Ngoc Hai
ba11317293 refactor(web-client-tpos): unify JSON serialization for API client, streamline authentication flows, and update UI layouts and navigation. 2026-03-04 11:21:22 +07:00
Ho Ngoc Hai
ce61b4d3db feat(fnb-engine): add shopId and status filters to kitchen tickets
Add shopId and status query params to GET /api/v1/kitchen/tickets.
Joins through Session to resolve shopId since KitchenTicket only
has SessionId. Backward-compatible: without shopId falls back to
existing pending-by-station behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:37:55 +07:00
Ho Ngoc Hai
4cd172bee5 feat(booking-service): add shop-wide staff schedules endpoint
Add GET /api/v1/schedules?shopId= to return all staff schedules
for a shop. Existing per-staff endpoint unchanged. BFF needs this
to display all schedules on the admin dashboard.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:36:43 +07:00
Ho Ngoc Hai
9b44e88a6a feat(order-service): add dashboard and reporting endpoints
- GET /api/v1/orders/dashboard — POS dashboard stats (revenue, orders,
  items sold, popular items, payment breakdown, hourly revenue, recent orders)
- GET /api/v1/reports/revenue — Revenue report grouped by daily/weekly/monthly
- GET /api/v1/reports/top-products — Top selling products by quantity

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:36:09 +07:00
Ho Ngoc Hai
37042b48b7 feat(inventory-service): add shopId filter to transactions endpoint
BFF needs to query inventory transactions by shopId. The existing
endpoint only supported inventoryItemId. Now accepts either shopId
or inventoryItemId as query parameters.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:35:54 +07:00
Ho Ngoc Hai
4a1094b080 fix(web-client-tpos): restore JWT from localStorage before admin API calls
Root cause: AdminBase had no auth initialization. AuthStateService is
in-memory Singleton — token is null after page refresh. Admin pages
called PosDataService without token → BFF forwarded requests without
Authorization header → microservices returned 401.

Fix:
- AdminBase.cs: inject AuthService, call TryRestoreSessionAsync()
- 9 admin pages: add await base.OnInitializedAsync() calls
- BffHttpClient.cs: add debug logging for auth forwarding
2026-03-04 10:27:56 +07:00
Ho Ngoc Hai
710f87a94d chore(docker): replace BFF direct DB vars with microservice HTTP proxy URLs
- Remove BFF_DB_HOST/PORT/USER/PASS env vars (no more direct DB access)
- Add 9 {ServiceName}__BaseUrl env vars for HTTP proxy pattern
- BFF now communicates via internal Docker network to microservices
2026-03-04 10:13:42 +07:00
Ho Ngoc Hai
9be3450ab9 refactor(web-client-tpos): convert BFF from direct DB to HTTP proxy
- Replace Dapper/Npgsql direct DB access with HttpClient proxy to microservice APIs
- Create BffHttpClient.cs with AuthForwardingHandler (forwards JWT tokens)
- Register 9 named HttpClients: Merchant, Catalog, Order, Inventory, Membership, Wallet, Promotion, Booking, FnbEngine
- Delete BffDbConnectionFactory.cs and TenantContext.cs (no more direct DB)
- Remove Dapper and Npgsql package references from .csproj
- All 10 controllers are now thin HTTP proxy bridges
- Zero breaking changes: all api/bff/ routes preserved
2026-03-04 10:13:28 +07:00
Ho Ngoc Hai
0a5e1a9271 refactor(web-client-tpos): split monolithic BffDataController into 10 module controllers
- Extract shared infrastructure: BffDbConnectionFactory, TenantContext (per-request cache)
- Extract 19 DTOs to Models/BffDtos.cs
- Create 10 controllers: Shop, Catalog, Staff, Order, Inventory, Financial, Booking, Fnb, Reports, Membership
- Register DI services in Program.cs
- Delete monolithic BffDataController.cs (1831 lines)
- All API routes preserved under api/bff prefix (zero breaking changes)
2026-03-04 09:36:57 +07:00
Ho Ngoc Hai
b8b8bf1336 fix(web-client-tpos): fix all build errors — add CRUD methods, fix type bindings
- Added missing CRUD methods: DeleteRecipeItem, SaveRecipe, AddTable, SaveTable,
  EditTable, DeleteTableItem, AddAppointment, AddResource, SaveResource,
  DeleteResourceItem, DeleteScheduleItem, MarkTicketDone, LoadKitchenTickets
- Fixed CS1654: recipe ingredient foreach mutation → index-based for loop
- Fixed CS1503: schedule time input type=time → type=text (Blazor binding)
- Fixed CS1061: Guid.HasValue/Value → direct Guid in BFF kitchen/recipes
2026-03-04 08:18:07 +07:00
Ho Ngoc Hai
cf68aee67f fix(web-client-tpos): remove duplicate case recipes — fix CS0152 Docker build failure 2026-03-04 08:02:33 +07:00
Ho Ngoc Hai
6548b5babf fix(web-client-tpos): fix kitchen/recipes BFF routes — SPA fallback intercepted short routes
Changed BFF routes to use shops/{shopId}/ prefix pattern:
- kitchen/tickets → shops/{shopId}/kitchen-tickets
- recipes → shops/{shopId}/recipes
Updated PosDataService client URLs to match.
Added missing kitchen/recipes data loading cases in ShopPage.
2026-03-04 07:52:45 +07:00
Ho Ngoc Hai
d9fda3f54f fix(web-client-tpos): add missing kitchen/recipes data loading in ShopPage
ShopPage LoadSectionData switch was missing cases for kitchen and recipes sections. Added data fetch calls for GetKitchenTicketsAsync and GetRecipesAsync on section navigation.
2026-03-04 07:49:26 +07:00
Ho Ngoc Hai
d95e80f274 feat(web-client-tpos): tables, appointments, resources, schedules, kitchen, recipes CRUD
DB Migration:
- Created recipes + recipe_ingredients tables in catalog_service

BFF Endpoints (18 new):
- POST/PUT/DELETE tables — F&B table management (fnb_engine)
- POST/PUT/DELETE appointments — booking CRUD (booking_service)
- POST/PUT/DELETE resources — room/equipment CRUD (booking_service)
- POST/PUT/DELETE schedules — staff schedules (booking_service)
- GET/PUT kitchen/tickets — KDS ticket management (fnb_engine)
- GET/POST/PUT/DELETE recipes — recipe + ingredients CRUD (catalog_service)

PosDataService (12 new methods + DTOs)
ShopPage UI (325 lines): real UI for all 6 sections replacing placeholders
2026-03-04 05:12:48 +07:00
Ho Ngoc Hai
33047afa75 feat(web-client-tpos): Phase C-E — shop settings, top products report, enhanced placeholders
BFF Endpoints (3 new):
- GET/PUT shops/{id}/settings — shop features config, hours, days
- GET reports/top-products — bestselling products by quantity + revenue

PosDataService (3 new methods):
- GetShopSettings, UpdateShopSettings, GetTopProducts

ShopPage UI (149 lines):
- Settings tab: opening hours, business days, features config form
- Reports tab: top products table alongside revenue report
- Enhanced default placeholder for sections without DB tables
2026-03-03 21:36:52 +07:00
Ho Ngoc Hai
96301831f1 feat(web-client-tpos): Phase B — campaigns CRUD, customer CRUD, fixed promotions query
BFF Endpoints (6 new):
- POST/PUT/DELETE campaigns — CRUD with merchant ownership validation
- POST/PUT/DELETE members — customer CRUD with soft-delete
- Fixed GetPromotions: promotions → campaigns table

PosDataService (6 new methods):
- CreateCampaign, UpdateCampaign, DeleteCampaign
- CreateMember, UpdateMember, DeleteMember

ShopPage UI (191 lines):
- Promotions tab: campaign table with add/edit/delete + form
- Customers tab: add/edit/delete buttons on member rows
2026-03-03 21:30:27 +07:00
Ho Ngoc Hai
14d6c4012c feat(web-client-tpos): Phase A — categories CRUD, order management, shop update, reports
BFF Endpoints (6 new):
- POST/PUT/DELETE categories — full CRUD with shop ownership validation
- GET orders/{id} — order detail with items
- PUT orders/{id}/cancel — cancel non-completed orders (status=6)
- PUT shops/{id} — update name, phone, email, hours
- GET reports/revenue — daily/weekly/monthly revenue aggregation

PosDataService (8 new methods):
- CreateCategory, UpdateCategory, DeleteCategory
- GetOrderDetail, CancelOrder
- UpdateShop
- GetRevenueReport

ShopPage UI (222 lines):
- Menu tab: categories table with add/edit/delete
- Finance tab: expandable order rows with items + cancel button
- Overview tab: shop info edit form
- Reports tab: period selector (Ngày/Tuần/Tháng) + revenue table
2026-03-03 21:22:25 +07:00