diff --git a/.agent/prompts/agent-1a-admin-dashboard-stores.md b/.agent/prompts/agent-1a-admin-dashboard-stores.md deleted file mode 100644 index 33e81f81..00000000 --- a/.agent/prompts/agent-1a-admin-dashboard-stores.md +++ /dev/null @@ -1,67 +0,0 @@ -# Sub-Agent 1A: Admin Dashboard + Store Management - -## Objective -Convert 5 Pencil design files into Blazor Server pages for the Admin module. - -## Tech Stack -- **Framework**: Blazor Server (.NET 8) with MudBlazor -- **Styling**: Vanilla CSS using existing `admin.css` tokens (BEM: `.admin-{component}--{variant}`) -- **Icons**: Lucide via `` (add `lucide.createIcons()` in OnAfterRenderAsync) -- **i18n**: `IStringLocalizer` with locale files at `wwwroot/locales/{vi-VN,en-US}.json` -- **Base class**: Inherit from `AdminBase` at `Pages/Admin/AdminBase.cs` -- **Layout**: Use `@layout AdminLayout` (already created at `Layout/AdminLayout.razor`) - -## Design Files (Input) -Read and convert these `.pen` files from `pencil-design/src/pages/tPOS/admin/`: -1. `admin-dashboard.pen` → `Pages/Admin/Dashboard.razor` -2. `store-list.pen` → `Pages/Admin/Store/StoreList.razor` -3. `store-detail.pen` → `Pages/Admin/Store/StoreDetail.razor` -4. `store-create.pen` → `Pages/Admin/Store/StoreCreate.razor` -5. `store-settings.pen` → `Pages/Admin/Store/StoreSettings.razor` - -## Route Definitions -``` -@page "/admin" → Dashboard.razor -@page "/admin/stores" → StoreList.razor -@page "/admin/stores/{Id}" → StoreDetail.razor -@page "/admin/stores/create" → StoreCreate.razor -@page "/admin/stores/{Id}/settings" → StoreSettings.razor -``` - -## Pattern Reference -Follow the same pattern as `Pages/Auth/LoginCustomer.razor`: -- `@page` directive, `@inherits AdminBase`, `@layout AdminLayout` -- Vietnamese/English bilingual comments with `@* EN: ... VI: ... *@` -- All user-visible text uses `@L["Key"]` -- Add locale keys to both `vi-VN.json` and `en-US.json` - -## How to Read .pen Files -Each `.pen` file is JSON with structure: -```json -{ - "children": [{ "type": "frame", "children": [...] }], - "variables": { "bg-page": { "type": "color", "value": "#0A0A0B" } } -} -``` -- `type: "frame"` → `
` -- `type: "text"` with `content` → text node -- `type: "icon_font"` with `iconFontName` → `` -- `fill: "$variable-name"` → use CSS var `--admin-variable-name` -- `layout: "vertical"` → `flex-direction: column` -- `gap`, `padding`, `cornerRadius` → standard CSS properties - -## CSS Guidelines -- Use existing classes from `admin.css` wherever possible -- Add new classes to admin.css only if needed, following BEM naming -- Topbar page title/subtitle: use `admin-topbar__title` and `admin-topbar__subtitle` -- For the Dashboard page, include the topbar directly in the page content area - -## Output Files -Create these files: -1. `Pages/Admin/Dashboard.razor` (with KPI cards, store overview, alerts, activity feed) -2. `Pages/Admin/Store/StoreList.razor` (data table with search, filters) -3. `Pages/Admin/Store/StoreDetail.razor` (detail view with stats) -4. `Pages/Admin/Store/StoreCreate.razor` (form with validation) -5. `Pages/Admin/Store/StoreSettings.razor` (settings form) -6. Update `wwwroot/locales/vi-VN.json` — add Admin_Dashboard_*, Admin_Store_* keys -7. Update `wwwroot/locales/en-US.json` — matching English translations diff --git a/.agent/prompts/agent-1b-admin-staff-products.md b/.agent/prompts/agent-1b-admin-staff-products.md deleted file mode 100644 index 4bc763af..00000000 --- a/.agent/prompts/agent-1b-admin-staff-products.md +++ /dev/null @@ -1,52 +0,0 @@ -# Sub-Agent 1B: Admin Staff + Products - -## Objective -Convert 11 Pencil design files into Blazor Server pages for Staff and Products modules. - -## Tech Stack -Same as Agent 1A — Blazor Server, MudBlazor, admin.css tokens, Lucide icons, IStringLocalizer. -- Inherit from `AdminBase`, use `@layout AdminLayout` - -## Design Files (Input) -Read from `pencil-design/src/pages/tPOS/admin/`: - -### Staff (6 files) -1. `staff-directory.pen` → `Pages/Admin/Staff/StaffDirectory.razor` -2. `staff-create.pen` → `Pages/Admin/Staff/StaffCreate.razor` -3. `staff-schedule.pen` → `Pages/Admin/Staff/StaffSchedule.razor` -4. `attendance-dashboard.pen` → `Pages/Admin/Staff/AttendanceDashboard.razor` -5. `payroll-commission.pen` → `Pages/Admin/Staff/PayrollCommission.razor` -6. `role-permissions.pen` → `Pages/Admin/Staff/RolePermissions.razor` - -### Products (5 files) -7. `product-catalog.pen` → `Pages/Admin/Products/ProductCatalog.razor` -8. `product-create.pen` → `Pages/Admin/Products/ProductCreate.razor` -9. `menu-builder.pen` → `Pages/Admin/Products/MenuBuilder.razor` -10. `modifier-groups.pen` → `Pages/Admin/Products/ModifierGroups.razor` -11. `pricing-rules.pen` → `Pages/Admin/Products/PricingRules.razor` - -## Route Definitions -``` -@page "/admin/staff" → StaffDirectory -@page "/admin/staff/create" → StaffCreate -@page "/admin/staff/schedule" → StaffSchedule -@page "/admin/staff/attendance" → AttendanceDashboard -@page "/admin/staff/payroll" → PayrollCommission -@page "/admin/roles" → RolePermissions -@page "/admin/products" → ProductCatalog -@page "/admin/products/create" → ProductCreate -@page "/admin/menu" → MenuBuilder -@page "/admin/products/modifiers" → ModifierGroups -@page "/admin/products/pricing" → PricingRules -``` - -## Pattern Reference -Same as Agent 1A — see `Pages/Auth/LoginCustomer.razor` for pattern. - -## How to Read .pen Files -Same as Agent 1A — JSON with frames, text, icon_font, variables. - -## Output Files -- 11 `.razor` files in respective folders -- Update locale files with Admin_Staff_* and Admin_Products_* keys -- Any new CSS classes added to `admin.css` diff --git a/.agent/prompts/agent-2-phase2-combined.md b/.agent/prompts/agent-2-phase2-combined.md deleted file mode 100644 index 586d79f5..00000000 --- a/.agent/prompts/agent-2-phase2-combined.md +++ /dev/null @@ -1,120 +0,0 @@ -# Sub-Agent 2A: Admin Finance + Inventory - -## Objective -Convert 8 Pencil design files into Blazor Server pages for Finance and Inventory modules. - -## Tech Stack -Same as Agent 1A — Blazor Server, MudBlazor, admin.css tokens, Lucide icons, IStringLocalizer. -- Inherit from `AdminBase`, use `@layout AdminLayout` - -## Design Files (Input) -Read from `pencil-design/src/pages/tPOS/admin/`: - -### Inventory (4 files) -1. `inventory-dashboard.pen` → `Pages/Admin/Inventory/InventoryDashboard.razor` -2. `purchase-orders.pen` → `Pages/Admin/Inventory/PurchaseOrders.razor` -3. `stock-transfer.pen` → `Pages/Admin/Inventory/StockTransfer.razor` -4. `supplier-management.pen` → `Pages/Admin/Inventory/SupplierManagement.razor` - -### Finance (4 files) -5. `financial-overview.pen` → `Pages/Admin/Finance/FinancialOverview.razor` -6. `revenue-analytics.pen` → `Pages/Admin/Finance/RevenueAnalytics.razor` -7. `expense-management.pen` → `Pages/Admin/Finance/ExpenseManagement.razor` -8. `tax-configuration.pen` → `Pages/Admin/Finance/TaxConfiguration.razor` - -## Route Definitions -``` -@page "/admin/inventory" → InventoryDashboard -@page "/admin/inventory/orders" → PurchaseOrders -@page "/admin/inventory/transfers" → StockTransfer -@page "/admin/inventory/suppliers" → SupplierManagement -@page "/admin/finance" → FinancialOverview -@page "/admin/finance/revenue" → RevenueAnalytics -@page "/admin/finance/expenses" → ExpenseManagement -@page "/admin/finance/tax" → TaxConfiguration -``` - -## Pattern Reference & .pen Reading -Same as Agent 1A/1B. - -## Output Files -- 8 `.razor` files -- Update locale files with Admin_Inventory_* and Admin_Finance_* keys -- New CSS classes in `admin.css` if needed - ---- - -# Sub-Agent 2B: Admin Customer + System - -## Objective -Convert 7 Pencil design files into Blazor Server pages. - -## Design Files (Input) -Read from `pencil-design/src/pages/tPOS/admin/`: - -### Customer (3 files) -1. `customer-database.pen` → `Pages/Admin/Customers/CustomerDatabase.razor` -2. `customer-feedback.pen` → `Pages/Admin/Customers/CustomerFeedback.razor` -3. `loyalty-program.pen` → `Pages/Admin/Customers/LoyaltyProgram.razor` - -### System (4 files) -4. `device-management.pen` → `Pages/Admin/System/DeviceManagement.razor` -5. `integration-hub.pen` → `Pages/Admin/System/IntegrationHub.razor` -6. `notification-center.pen` → `Pages/Admin/System/NotificationCenter.razor` -7. `audit-log.pen` → `Pages/Admin/System/AuditLog.razor` - -## Route Definitions -``` -@page "/admin/customers" → CustomerDatabase -@page "/admin/customers/feedback" → CustomerFeedback -@page "/admin/loyalty" → LoyaltyProgram -@page "/admin/devices" → DeviceManagement -@page "/admin/integrations" → IntegrationHub -@page "/admin/notifications" → NotificationCenter -@page "/admin/audit" → AuditLog -``` - ---- - -# Sub-Agent 2C: POS Screens + Payment - -## Objective -Convert 33 Pencil design files into Blazor Server pages for POS module. - -## Tech Stack -- Inherit from `PosBase` at `Pages/Pos/PosBase.cs` -- Use `@layout PosLayout` (at `Layout/PosLayout.razor`) -- Styling: `pos.css` tokens with BEM `.pos-{component}--{variant}` -- All other conventions same as Admin agents - -## Design Files (Input) -Read from `pencil-design/src/pages/tPOS/pos/shared/`: - -### Screens (22 files) -`screens/login.pen`, `screens/quick-sale.pen`, `screens/settings.pen`, -`screens/shift-management.pen`, `screens/clock-in-out.pen`, -`screens/device-setup.pen`, `screens/offline-mode.pen`, -`screens/password-reset.pen`, `screens/pin-entry.pen`, -`screens/pending-orders.pen`, `screens/promo-active.pen`, -`screens/staff-list.pen`, `screens/staff-schedule.pen`, -`screens/stock-count.pen`, `screens/theme-customization.pen`, -`screens/training-mode.pen`, `screens/accessibility.pen`, -`screens/backup-restore.pen`, `screens/biometric-setup.pen`, -`screens/cash-drawer.pen`, `screens/commission-setup.pen`, -`screens/customer-group.pen` - -### Payment (11 files) -`payment/method-select.pen`, `payment/cash.pen`, `payment/card.pen`, -`payment/qr.pen`, `payment/bank-transfer.pen`, `payment/gift-card.pen`, -`payment/partial-payment.pen`, `payment/tip-entry.pen`, -`payment/payment-pending.pen`, `payment/receipt.pen`, `payment/success.pen` - -## Route Definitions -POS screens: `/pos/{screen-name}` (e.g., `/pos/quick-sale`, `/pos/settings`) -Payment: `/pos/payment/{method}` (e.g., `/pos/payment/cash`, `/pos/payment/card`) - -## Output -- 22 POS screen `.razor` files in `Pages/Pos/` -- 11 Payment `.razor` files in `Pages/Pos/Payment/` -- Shared POS components in `Components/Pos/` if reusable patterns emerge -- Locale keys: Pos_*, Pos_Payment_* diff --git a/.agent/prompts/agent-3-phase3-combined.md b/.agent/prompts/agent-3-phase3-combined.md deleted file mode 100644 index 7b8deb2e..00000000 --- a/.agent/prompts/agent-3-phase3-combined.md +++ /dev/null @@ -1,95 +0,0 @@ -# Sub-Agent 3A: POS Dialogs - -## Objective -Convert 47 POS dialog design files into MudDialog components. - -## Tech Stack -- **Component type**: MudBlazor `MudDialog` (not full pages) -- **Styling**: `pos.css` tokens -- **Icons**: Lucide via `` -- **i18n**: `IStringLocalizer` with locale files -- **Location**: `Components/Pos/Dialogs/{DialogName}.razor` - -## Design Files (Input) -Read ALL `.pen` files from `pencil-design/src/pages/tPOS/pos/shared/dialogs/`: -barcode-scan, change-calculator, confirmation, coupon-redeem, -customer-add, customer-edit, customer-history, customer-note, customer-search, -data-export, deposit-withdrawal, discount-apply, expense-entry, expiry-warning, -feedback-form, help-support, hold-recall, keyboard-shortcuts, -low-stock-alert, loyalty-reward, loyalty-scan, manager-override, -modifier-select, multi-discount, network-error, open-price, -order-cancel, order-edit, order-reprint, permission-denied, petty-cash, -price-check, printer-error, product-search, quantity-adjust, -role-switch, session-timeout, split-bill, stock-in, stock-out, -stock-transfer, sync-conflict, sync-status, two-factor, -vip-benefits, void-refund, weight-entry - -## MudDialog Pattern -```razor -@* EN: Dialog description / VI: Mô tả dialog *@ - - - -
- - @L["Dialog_Title"] -
-
- - @* Dialog content from .pen design *@ - - - @L["Dialog_Cancel"] - @L["Dialog_Submit"] - -
- -@code { - [CascadingParameter] IMudDialogInstance MudDialog { get; set; } - private void Cancel() => MudDialog.Cancel(); - private void Submit() => MudDialog.Close(DialogResult.Ok(true)); -} -``` - -## Output -- 47 dialog `.razor` files in `Components/Pos/Dialogs/` -- Locale keys: Pos_Dialog_{DialogName}_* - ---- - -# Sub-Agent 3B: POS Reports + Verticals - -## Objective -Convert 22 Pencil design files for POS reports and vertical-specific screens. - -## Tech Stack -Same POS conventions — inherit `PosBase`, use `@layout PosLayout`, `pos.css`. - -## Design Files (Input) - -### Reports (8 files) from `pos/shared/reports/`: -`sales-dashboard.pen`, `shift-report.pen`, `tax-report.pen`, -`cash-reconciliation.pen`, `inventory-alert.pen`, `payment-report.pen`, -`staff-performance.pen`, `top-sellers.pen` - -### Café (5+1 files) from `pos/cafe/`: -`desktop.pen`, `tablet.pen`, `mobile.pen`, -`barista-queue.pen`, `customer-display.pen` - -### Restaurant (3 files) from `pos/restaurant/`: -`desktop.pen`, `tablet.pen`, `mobile.pen` - -### Karaoke (3 files) from `pos/karaoke/`: -`desktop.pen`, `tablet.pen`, `mobile.pen` - -### Spa (3 files) from `pos/spa/`: -`desktop.pen`, `tablet.pen`, `mobile.pen` - -## Route Definitions -Reports: `/pos/reports/{report-type}` -Verticals: `/pos/{vertical}/{view}` (e.g., `/pos/cafe/desktop`) - -## Output -- 8 Report pages in `Pages/Pos/Reports/` -- Vertical pages in `Pages/Pos/Cafe/`, `Pages/Pos/Restaurant/`, etc. -- Locale keys: Pos_Report_*, Pos_Cafe_*, Pos_Restaurant_*, etc. diff --git a/.agent/prompts/agent-4-onboarding.md b/.agent/prompts/agent-4-onboarding.md deleted file mode 100644 index 4b1c0e76..00000000 --- a/.agent/prompts/agent-4-onboarding.md +++ /dev/null @@ -1,35 +0,0 @@ -# Sub-Agent 4: Admin Onboarding Wizard - -## Objective -Convert 6 Pencil onboarding files into a multi-step wizard flow. - -## Tech Stack -Same Admin conventions — inherit `AdminBase`, use `@layout AdminLayout`, `admin.css`. - -## Design Files (Input) -Read from `pencil-design/src/pages/tPOS/admin/`: -1. `onboarding-business.pen` → Step 1: Business info -2. `onboarding-store.pen` → Step 2: Store setup -3. `onboarding-products.pen` → Step 3: Product catalog -4. `onboarding-staff.pen` → Step 4: Staff setup -5. `onboarding-device.pen` → Step 5: Device pairing -6. `onboarding-ready.pen` → Step 6: Ready to go! - -## Route Definitions -``` -@page "/admin/onboarding" → OnboardingWizard.razor (all steps) -@page "/admin/onboarding/{Step}" → Same component, step parameter -``` - -## Implementation Notes -- Create a SINGLE `OnboardingWizard.razor` with step navigation -- Use MudStepper or custom stepper component -- Each step renders content based on `{Step}` parameter -- Include progress indicator, back/next buttons -- Final step: celebration + redirect to `/admin` - -## Output -- `Pages/Admin/Onboarding/OnboardingWizard.razor` -- `Components/Admin/OnboardingStep.razor` (reusable step wrapper) -- Locale keys: Admin_Onboarding_* -- Wire up the route from the admin layout's sidebar