From 9a875643b4feac8ff4e20096dfa17299b9a8e032 Mon Sep 17 00:00:00 2001 From: Ho Ngoc Hai Date: Wed, 3 Jun 2026 13:17:46 +0700 Subject: [PATCH] Harden TPOS MVP payment, stock, and portal parity --- .../console-2026-05-28T18-46-12-915Z.log | 26 + .../console-2026-05-28T18-53-47-172Z.log | 444 ++++++++ .../console-2026-05-28T19-10-41-586Z.log | 120 +++ .../console-2026-05-28T19-28-29-571Z.log | 363 +++++++ .../console-2026-05-28T20-27-42-245Z.log | 2 + .../console-2026-05-28T20-27-52-869Z.log | 62 ++ .../console-2026-05-28T20-30-12-298Z.log | 2 + .../console-2026-05-28T20-30-18-499Z.log | 13 + .../console-2026-05-28T20-31-10-905Z.log | 6 + .../console-2026-05-28T20-31-29-083Z.log | 18 + .../console-2026-05-28T20-32-31-535Z.log | 106 ++ .../console-2026-05-28T20-44-31-373Z.log | 114 +++ .../page-2026-05-28T18-45-39-661Z.yml | 65 ++ .../page-2026-05-28T18-45-53-110Z.yml | 82 ++ .../page-2026-05-28T18-46-13-169Z.yml | 54 + .../page-2026-05-28T18-53-47-407Z.yml | 80 ++ .../page-2026-05-28T19-10-46-266Z.yml | 109 ++ .../page-2026-05-28T19-10-59-296Z.png | Bin 0 -> 65310 bytes .../page-2026-05-28T19-11-05-786Z.png | Bin 0 -> 33001 bytes .../page-2026-05-28T19-11-16-452Z.png | Bin 0 -> 33001 bytes .../page-2026-05-28T19-11-58-744Z.yml | 103 ++ .../page-2026-05-28T19-12-24-613Z.png | Bin 0 -> 37397 bytes .../page-2026-05-28T19-12-45-599Z.yml | 70 ++ .../page-2026-05-28T19-12-52-093Z.png | Bin 0 -> 48242 bytes .../page-2026-05-28T19-13-01-574Z.yml | 82 ++ .../page-2026-05-28T19-13-07-682Z.png | Bin 0 -> 56137 bytes .../page-2026-05-28T19-14-06-464Z.yml | 109 ++ .../page-2026-05-28T19-14-21-926Z.yml | 82 ++ .../page-2026-05-28T19-14-27-483Z.png | Bin 0 -> 56892 bytes .../page-2026-05-28T19-14-49-053Z.yml | 109 ++ .../page-2026-05-28T19-28-34-740Z.yml | 198 ++++ .../page-2026-05-28T19-28-51-151Z.png | Bin 0 -> 108143 bytes .../page-2026-05-28T20-27-44-227Z.yml | 34 + .../page-2026-05-28T20-27-53-576Z.yml | 34 + .../page-2026-05-28T20-27-55-658Z.yml | 45 + .../page-2026-05-28T20-28-11-971Z.yml | 50 + .../page-2026-05-28T20-30-14-605Z.yml | 99 ++ .../page-2026-05-28T20-30-20-811Z.yml | 125 +++ .../page-2026-05-28T20-30-58-161Z.yml | 121 +++ .../page-2026-05-28T20-31-13-642Z.yml | 121 +++ .../page-2026-05-28T20-31-31-650Z.yml | 183 ++++ .../page-2026-05-28T20-32-31-730Z.yml | 44 + .../page-2026-05-28T20-34-49-893Z.png | Bin 0 -> 87777 bytes .../page-2026-05-28T20-44-31-612Z.yml | 45 + .../src/app/admin/[...path]/page.tsx | 224 ++++- .../apps/tpos-mvp-next/src/app/admin/page.tsx | 6 +- .../src/app/api/bff/[...path]/route.ts | 945 ++++++++++++++---- .../apps/tpos-mvp-next/src/app/globals.css | 639 +++++++++++- .../src/app/marketing/[...path]/page.tsx | 15 +- .../tpos-mvp-next/src/app/marketing/page.tsx | 5 +- .../[vertical]/[[...workflow]]/page.tsx | 13 +- .../pos/[shopId]/dialog/[...path]/page.tsx | 26 +- .../src/app/pos/[shopId]/dialog/page.tsx | 17 + .../[shopId]/operations/[...path]/page.tsx | 28 +- .../src/app/pos/[shopId]/operations/page.tsx | 17 + .../pos/[shopId]/payment/[...path]/page.tsx | 30 +- .../src/app/pos/[shopId]/payment/page.tsx | 17 + .../src/app/pos/pos-experience.tsx | 133 ++- .../tpos-mvp-next/src/app/register/page.tsx | 2 +- .../src/app/staff/[...path]/page.tsx | 60 +- .../src/app/superadmin/[...path]/page.tsx | 2 + .../tpos-mvp-next/src/components/TposAuth.tsx | 35 +- .../src/components/TposPortal.tsx | 60 +- .../src/components/TposPosExperience.tsx | 763 ++++++++++++-- .../src/components/TposPublicLanding.tsx | 104 +- .../components/admin/AdminReferenceViews.tsx | 548 +++++++++- .../src/components/tpos-config.ts | 69 +- .../tpos-mvp-next/src/server/auth/portal.ts | 36 + .../tpos-mvp-next/src/server/db/queries.ts | 284 +++++- .../tpos-mvp-next/src/server/db/schema.ts | 187 ++++ .../tpos-mvp-next/src/server/domain/types.ts | 6 + .../src/server/integrations/external.ts | 55 +- .../src/server/services/inventory.ts | 55 +- .../src/server/services/order.ts | 17 +- .../src/server/services/parity.ts | 163 ++- output/playwright/auth-customer.png | Bin 0 -> 201460 bytes output/playwright/home-parity.png | Bin 0 -> 115929 bytes output/playwright/pos-dashboard.png | Bin 0 -> 55377 bytes output/playwright/pos-history-detail.png | Bin 0 -> 45387 bytes 79 files changed, 7186 insertions(+), 695 deletions(-) create mode 100644 .playwright-cli/console-2026-05-28T18-46-12-915Z.log create mode 100644 .playwright-cli/console-2026-05-28T18-53-47-172Z.log create mode 100644 .playwright-cli/console-2026-05-28T19-10-41-586Z.log create mode 100644 .playwright-cli/console-2026-05-28T19-28-29-571Z.log create mode 100644 .playwright-cli/console-2026-05-28T20-27-42-245Z.log create mode 100644 .playwright-cli/console-2026-05-28T20-27-52-869Z.log create mode 100644 .playwright-cli/console-2026-05-28T20-30-12-298Z.log create mode 100644 .playwright-cli/console-2026-05-28T20-30-18-499Z.log create mode 100644 .playwright-cli/console-2026-05-28T20-31-10-905Z.log create mode 100644 .playwright-cli/console-2026-05-28T20-31-29-083Z.log create mode 100644 .playwright-cli/console-2026-05-28T20-32-31-535Z.log create mode 100644 .playwright-cli/console-2026-05-28T20-44-31-373Z.log create mode 100644 .playwright-cli/page-2026-05-28T18-45-39-661Z.yml create mode 100644 .playwright-cli/page-2026-05-28T18-45-53-110Z.yml create mode 100644 .playwright-cli/page-2026-05-28T18-46-13-169Z.yml create mode 100644 .playwright-cli/page-2026-05-28T18-53-47-407Z.yml create mode 100644 .playwright-cli/page-2026-05-28T19-10-46-266Z.yml create mode 100644 .playwright-cli/page-2026-05-28T19-10-59-296Z.png create mode 100644 .playwright-cli/page-2026-05-28T19-11-05-786Z.png create mode 100644 .playwright-cli/page-2026-05-28T19-11-16-452Z.png create mode 100644 .playwright-cli/page-2026-05-28T19-11-58-744Z.yml create mode 100644 .playwright-cli/page-2026-05-28T19-12-24-613Z.png create mode 100644 .playwright-cli/page-2026-05-28T19-12-45-599Z.yml create mode 100644 .playwright-cli/page-2026-05-28T19-12-52-093Z.png create mode 100644 .playwright-cli/page-2026-05-28T19-13-01-574Z.yml create mode 100644 .playwright-cli/page-2026-05-28T19-13-07-682Z.png create mode 100644 .playwright-cli/page-2026-05-28T19-14-06-464Z.yml create mode 100644 .playwright-cli/page-2026-05-28T19-14-21-926Z.yml create mode 100644 .playwright-cli/page-2026-05-28T19-14-27-483Z.png create mode 100644 .playwright-cli/page-2026-05-28T19-14-49-053Z.yml create mode 100644 .playwright-cli/page-2026-05-28T19-28-34-740Z.yml create mode 100644 .playwright-cli/page-2026-05-28T19-28-51-151Z.png create mode 100644 .playwright-cli/page-2026-05-28T20-27-44-227Z.yml create mode 100644 .playwright-cli/page-2026-05-28T20-27-53-576Z.yml create mode 100644 .playwright-cli/page-2026-05-28T20-27-55-658Z.yml create mode 100644 .playwright-cli/page-2026-05-28T20-28-11-971Z.yml create mode 100644 .playwright-cli/page-2026-05-28T20-30-14-605Z.yml create mode 100644 .playwright-cli/page-2026-05-28T20-30-20-811Z.yml create mode 100644 .playwright-cli/page-2026-05-28T20-30-58-161Z.yml create mode 100644 .playwright-cli/page-2026-05-28T20-31-13-642Z.yml create mode 100644 .playwright-cli/page-2026-05-28T20-31-31-650Z.yml create mode 100644 .playwright-cli/page-2026-05-28T20-32-31-730Z.yml create mode 100644 .playwright-cli/page-2026-05-28T20-34-49-893Z.png create mode 100644 .playwright-cli/page-2026-05-28T20-44-31-612Z.yml create mode 100644 microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/dialog/page.tsx create mode 100644 microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/operations/page.tsx create mode 100644 microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/payment/page.tsx create mode 100644 microservices/apps/tpos-mvp-next/src/server/auth/portal.ts create mode 100644 output/playwright/auth-customer.png create mode 100644 output/playwright/home-parity.png create mode 100644 output/playwright/pos-dashboard.png create mode 100644 output/playwright/pos-history-detail.png diff --git a/.playwright-cli/console-2026-05-28T18-46-12-915Z.log b/.playwright-cli/console-2026-05-28T18-46-12-915Z.log new file mode 100644 index 00000000..32aa8169 --- /dev/null +++ b/.playwright-cli/console-2026-05-28T18-46-12-915Z.log @@ -0,0 +1,26 @@ +[ 153ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 189ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 258154ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 258221ms] [LOG] [Fast Refresh] done in 30ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 278808ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 278917ms] [LOG] [Fast Refresh] done in 45ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 279028ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 279075ms] [LOG] [Fast Refresh] done in 146ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 292207ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 292253ms] [LOG] [Fast Refresh] done in 147ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 294385ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 294434ms] [LOG] [Fast Refresh] done in 28ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 302250ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 302383ms] [LOG] [Fast Refresh] done in 47ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 302496ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 302587ms] [LOG] [Fast Refresh] done in 193ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 316325ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 316364ms] [LOG] [Fast Refresh] done in 27ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 334602ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 334670ms] [LOG] [Fast Refresh] done in 6ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 341048ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 341095ms] [LOG] [Fast Refresh] done in 8ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 360207ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 360288ms] [LOG] [Fast Refresh] done in 26ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 360398ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 360463ms] [LOG] [Fast Refresh] done in 165ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 diff --git a/.playwright-cli/console-2026-05-28T18-53-47-172Z.log b/.playwright-cli/console-2026-05-28T18-53-47-172Z.log new file mode 100644 index 00000000..fab5e142 --- /dev/null +++ b/.playwright-cli/console-2026-05-28T18-53-47-172Z.log @@ -0,0 +1,444 @@ +[ 132ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 167ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 45113ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 45116ms] [LOG] [Fast Refresh] done in 104ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 413440ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 413549ms] [LOG] [Fast Refresh] done in 36ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 421253ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 421298ms] [LOG] [Fast Refresh] done in 9ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 564453ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 564520ms] [LOG] [Fast Refresh] done in 34ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 596067ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 596119ms] [LOG] [Fast Refresh] done in 15ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 658504ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 658698ms] [LOG] [Fast Refresh] done in 22ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 699556ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 699701ms] [LOG] [Fast Refresh] done in 179ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 704652ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 704703ms] [LOG] [Fast Refresh] done in 25ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 711928ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 711985ms] [LOG] [Fast Refresh] done in 26ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 717449ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 717502ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 720410ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 720460ms] [LOG] [Fast Refresh] done in 22ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 729211ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 729258ms] [LOG] [Fast Refresh] done in 29ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 741255ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 741303ms] [LOG] [Fast Refresh] done in 46ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 760947ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 760994ms] [LOG] [Fast Refresh] done in 63ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 811864ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 811902ms] [LOG] [Fast Refresh] done in 22ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 817279ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 817313ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 821355ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 821391ms] [LOG] [Fast Refresh] done in 36ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 840429ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 840492ms] [LOG] [Fast Refresh] done in 37ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 844732ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 844782ms] [LOG] [Fast Refresh] done in 29ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1083520ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1083558ms] [LOG] [Fast Refresh] done in 29ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1190805ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1190838ms] [LOG] [Fast Refresh] done in 28ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1208774ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1208807ms] [LOG] [Fast Refresh] done in 26ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1252572ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1252590ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1341552ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1341803ms] [LOG] [Fast Refresh] done in 287ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1352744ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1352812ms] [LOG] [Fast Refresh] done in 115ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1364239ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1364301ms] [LOG] [Fast Refresh] done in 88ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1368932ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1369016ms] [LOG] [Fast Refresh] done in 80ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1369166ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1369181ms] [LOG] [Fast Refresh] done in 116ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1379088ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1379164ms] [LOG] [Fast Refresh] done in 72ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1379315ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1379325ms] [LOG] [Fast Refresh] done in 111ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1386159ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1386233ms] [LOG] [Fast Refresh] done in 73ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1386409ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1386417ms] [LOG] [Fast Refresh] done in 109ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1395707ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1395849ms] [LOG] [Fast Refresh] done in 8ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1403503ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1403560ms] [LOG] [Fast Refresh] done in 11ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1410513ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1410573ms] [LOG] [Fast Refresh] done in 17ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1559333ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1559401ms] [LOG] [Fast Refresh] done in 10ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1572705ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1572763ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1582919ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1582977ms] [LOG] [Fast Refresh] done in 15ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1598190ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1598268ms] [LOG] [Fast Refresh] done in 19ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1598372ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1598446ms] [LOG] [Fast Refresh] done in 175ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1617181ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1617248ms] [LOG] [Fast Refresh] done in 68ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1635397ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1635496ms] [LOG] [Fast Refresh] done in 125ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1635788ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1636124ms] [LOG] [Fast Refresh] done in 438ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1636225ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1636240ms] [LOG] [Fast Refresh] done in 116ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1636341ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1636398ms] [LOG] [Fast Refresh] done in 158ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1639997ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1640061ms] [LOG] [Fast Refresh] done in 27ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1733994ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1734013ms] [LOG] [Fast Refresh] done in 50ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1741949ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1741967ms] [LOG] [Fast Refresh] done in 47ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1748519ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1748537ms] [LOG] [Fast Refresh] done in 37ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1763656ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1763700ms] [LOG] [Fast Refresh] done in 72ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1764024ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1764180ms] [LOG] [Fast Refresh] done in 257ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1764281ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1764422ms] [LOG] [Fast Refresh] done in 242ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1772594ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1772644ms] [LOG] [Fast Refresh] done in 30ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1778990ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1779038ms] [LOG] [Fast Refresh] done in 29ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1788310ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1788370ms] [LOG] [Fast Refresh] done in 51ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1798572ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1798629ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1809080ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1809136ms] [LOG] [Fast Refresh] done in 38ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1828232ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1828341ms] [LOG] [Fast Refresh] done in 82ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1828510ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1828864ms] [LOG] [Fast Refresh] done in 454ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1854652ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1854691ms] [LOG] [Fast Refresh] done in 53ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1866495ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1866539ms] [LOG] [Fast Refresh] done in 34ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1874137ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1874194ms] [LOG] [Fast Refresh] done in 40ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1880976ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1881032ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1890648ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1890714ms] [LOG] [Fast Refresh] done in 11ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1897931ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1897991ms] [LOG] [Fast Refresh] done in 17ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1903001ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1903059ms] [LOG] [Fast Refresh] done in 10ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1907439ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1907502ms] [LOG] [Fast Refresh] done in 7ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1919791ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1919866ms] [LOG] [Fast Refresh] done in 31ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1919985ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1920037ms] [LOG] [Fast Refresh] done in 153ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1923658ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1923676ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1943186ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1943229ms] [LOG] [Fast Refresh] done in 37ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1948242ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1948272ms] [LOG] [Fast Refresh] done in 40ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1955589ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1955623ms] [LOG] [Fast Refresh] done in 35ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1987308ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1987364ms] [LOG] [Fast Refresh] done in 35ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1996862ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1996906ms] [LOG] [Fast Refresh] done in 44ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2087628ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2087667ms] [LOG] [Fast Refresh] done in 140ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2435236ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2435282ms] [LOG] [Fast Refresh] done in 45ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2435472ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2435511ms] [LOG] [Fast Refresh] done in 141ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2509396ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2509450ms] [LOG] [Fast Refresh] done in 50ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2509565ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2509625ms] [LOG] [Fast Refresh] done in 162ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2519221ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2519260ms] [LOG] [Fast Refresh] done in 141ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2544874ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2544957ms] [LOG] [Fast Refresh] done in 15ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2555294ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2555303ms] [LOG] [Fast Refresh] done in 72ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2566345ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2566354ms] [LOG] [Fast Refresh] done in 78ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2586281ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2586293ms] [LOG] [Fast Refresh] done in 55ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2603014ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2603024ms] [LOG] [Fast Refresh] done in 62ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2631945ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2631953ms] [LOG] [Fast Refresh] done in 79ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2808133ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2808136ms] [LOG] [Fast Refresh] done in 31ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2919028ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2919034ms] [LOG] [Fast Refresh] done in 107ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2997397ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2997434ms] [LOG] [Fast Refresh] done in 65ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2997703ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2997707ms] [LOG] [Fast Refresh] done in 104ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2997960ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2997996ms] [LOG] [Fast Refresh] done in 137ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3007244ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3007245ms] [LOG] [Fast Refresh] done in 101ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3056548ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3056628ms] [LOG] [Fast Refresh] done in 21ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3065644ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3065817ms] [LOG] [Fast Refresh] done in 47ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3072471ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3072586ms] [LOG] [Fast Refresh] done in 140ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3072701ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3072732ms] [LOG] [Fast Refresh] done in 132ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3072835ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3072912ms] [LOG] [Fast Refresh] done in 179ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3099110ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3099169ms] [LOG] [Fast Refresh] done in 69ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3133982ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3134054ms] [LOG] [Fast Refresh] done in 13ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3134170ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3134222ms] [LOG] [Fast Refresh] done in 152ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3150214ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3150266ms] [LOG] [Fast Refresh] done in 24ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3408706ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3408838ms] [LOG] [Fast Refresh] done in 233ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3409234ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3409276ms] [LOG] [Fast Refresh] done in 143ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3409713ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3409798ms] [LOG] [Fast Refresh] done in 185ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3409958ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3410020ms] [LOG] [Fast Refresh] done in 164ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3657849ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3658582ms] [LOG] [Fast Refresh] done in 834ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3709348ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3709418ms] [LOG] [Fast Refresh] done in 43ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3779074ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3779234ms] [LOG] [Fast Refresh] done in 248ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3779866ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3779999ms] [LOG] [Fast Refresh] done in 234ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3780236ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3780285ms] [LOG] [Fast Refresh] done in 150ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3825667ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3825733ms] [LOG] [Fast Refresh] done in 15ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3836720ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3836784ms] [LOG] [Fast Refresh] done in 16ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3848547ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3848825ms] [LOG] [Fast Refresh] done in 27ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3851881ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3851937ms] [LOG] [Fast Refresh] done in 9ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3886136ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3886178ms] [LOG] [Fast Refresh] done in 44ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3923301ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3923353ms] [LOG] [Fast Refresh] done in 59ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3929412ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3929451ms] [LOG] [Fast Refresh] done in 42ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3961302ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3961350ms] [LOG] [Fast Refresh] done in 27ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3972419ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3972475ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4009333ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4009370ms] [LOG] [Fast Refresh] done in 39ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4026233ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4026277ms] [LOG] [Fast Refresh] done in 29ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4031198ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4031234ms] [LOG] [Fast Refresh] done in 28ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4040072ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4040108ms] [LOG] [Fast Refresh] done in 30ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4047328ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4047384ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4047614ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4047700ms] [LOG] [Fast Refresh] done in 186ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4054293ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4054370ms] [LOG] [Fast Refresh] done in 31ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4072484ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4072565ms] [LOG] [Fast Refresh] done in 114ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4072868ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4072900ms] [LOG] [Fast Refresh] done in 132ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4073884ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4073890ms] [LOG] [Fast Refresh] done in 107ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4074917ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4075364ms] [LOG] [Fast Refresh] done in 548ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4075464ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4075570ms] [LOG] [Fast Refresh] done in 207ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4078171ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4078239ms] [LOG] [Fast Refresh] done in 13ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4108336ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4108439ms] [LOG] [Fast Refresh] done in 115ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4108805ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4108974ms] [LOG] [Fast Refresh] done in 271ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4109447ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4109470ms] [LOG] [Fast Refresh] done in 123ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4110021ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4110072ms] [LOG] [Fast Refresh] done in 152ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4110174ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4110319ms] [LOG] [Fast Refresh] done in 246ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4117821ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4118052ms] [LOG] [Fast Refresh] done in 229ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4118436ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4118544ms] [LOG] [Fast Refresh] done in 208ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4119043ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4119061ms] [LOG] [Fast Refresh] done in 118ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4119423ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4119433ms] [LOG] [Fast Refresh] done in 109ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4120202ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4120220ms] [LOG] [Fast Refresh] done in 120ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4120418ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4120437ms] [LOG] [Fast Refresh] done in 120ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4120968ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4121013ms] [LOG] [Fast Refresh] done in 146ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4121227ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4121245ms] [LOG] [Fast Refresh] done in 118ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4121485ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4121497ms] [LOG] [Fast Refresh] done in 113ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4123753ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4123763ms] [LOG] [Fast Refresh] done in 111ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4135088ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4135162ms] [LOG] [Fast Refresh] done in 13ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4141046ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4141111ms] [LOG] [Fast Refresh] done in 54ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4520221ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4520223ms] [LOG] [Fast Refresh] done in 34ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4710842ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4710956ms] [LOG] [Fast Refresh] done in 171ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4725065ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4725078ms] [LOG] [Fast Refresh] done in 43ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4730458ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4730600ms] [LOG] [Fast Refresh] done in 209ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4739611ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4739651ms] [LOG] [Fast Refresh] done in 39ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4769088ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4769121ms] [LOG] [Fast Refresh] done in 28ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4786547ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4786566ms] [LOG] [Fast Refresh] done in 33ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4791475ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4791596ms] [LOG] [Fast Refresh] done in 10ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4796145ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4796217ms] [LOG] [Fast Refresh] done in 29ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4801886ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4801897ms] [LOG] [Fast Refresh] done in 49ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4806906ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4806973ms] [LOG] [Fast Refresh] done in 9ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4824937ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4824949ms] [LOG] [Fast Refresh] done in 45ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4833659ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4833668ms] [LOG] [Fast Refresh] done in 63ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4838544ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4838603ms] [LOG] [Fast Refresh] done in 10ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4888306ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4888366ms] [LOG] [Fast Refresh] done in 10ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4897294ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4897353ms] [LOG] [Fast Refresh] done in 24ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4918180ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4918264ms] [LOG] [Fast Refresh] done in 87ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4918431ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4918519ms] [LOG] [Fast Refresh] done in 189ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4918891ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4918943ms] [LOG] [Fast Refresh] done in 153ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4919211ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4919294ms] [LOG] [Fast Refresh] done in 184ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4919955ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4919979ms] [LOG] [Fast Refresh] done in 124ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4920268ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4920294ms] [LOG] [Fast Refresh] done in 126ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4920482ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4920652ms] [LOG] [Fast Refresh] done in 272ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4920912ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4920958ms] [LOG] [Fast Refresh] done in 148ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4921219ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4921269ms] [LOG] [Fast Refresh] done in 149ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4921452ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4921497ms] [LOG] [Fast Refresh] done in 145ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4921778ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4922280ms] [LOG] [Fast Refresh] done in 603ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4922747ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4922810ms] [LOG] [Fast Refresh] done in 163ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4922995ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4923051ms] [LOG] [Fast Refresh] done in 157ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4923369ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4923396ms] [LOG] [Fast Refresh] done in 128ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4923555ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4923639ms] [LOG] [Fast Refresh] done in 185ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4923992ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4924081ms] [LOG] [Fast Refresh] done in 190ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4924182ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4924289ms] [LOG] [Fast Refresh] done in 208ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4924595ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4924627ms] [LOG] [Fast Refresh] done in 133ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4924886ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4925013ms] [LOG] [Fast Refresh] done in 227ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4925878ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4926520ms] [LOG] [Fast Refresh] done in 742ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4926722ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4926744ms] [LOG] [Fast Refresh] done in 123ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4927153ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4927211ms] [LOG] [Fast Refresh] done in 159ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4927440ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4927473ms] [LOG] [Fast Refresh] done in 132ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4927577ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4927634ms] [LOG] [Fast Refresh] done in 157ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4927789ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4927819ms] [LOG] [Fast Refresh] done in 131ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4928108ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4928125ms] [LOG] [Fast Refresh] done in 117ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4928322ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4928432ms] [LOG] [Fast Refresh] done in 211ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4928721ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4928801ms] [LOG] [Fast Refresh] done in 180ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4928933ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4928942ms] [LOG] [Fast Refresh] done in 109ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4929136ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4929151ms] [LOG] [Fast Refresh] done in 117ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4929435ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4929645ms] [LOG] [Fast Refresh] done in 311ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4930336ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4931057ms] [LOG] [Fast Refresh] done in 821ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4932131ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4932189ms] [LOG] [Fast Refresh] done in 18ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4939777ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4939795ms] [LOG] [Fast Refresh] done in 46ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4947312ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4947329ms] [LOG] [Fast Refresh] done in 50ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4955260ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4955276ms] [LOG] [Fast Refresh] done in 46ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4962015ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4962051ms] [LOG] [Fast Refresh] done in 34ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4969257ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4969396ms] [LOG] [Fast Refresh] done in 10ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4992185ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4992341ms] [LOG] [Fast Refresh] done in 8ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5191032ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5191120ms] [LOG] [Fast Refresh] done in 136ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5191127ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5191177ms] [LOG] [Fast Refresh] done in 8ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5191387ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5191675ms] [LOG] [Fast Refresh] done in 388ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5195466ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5195477ms] [LOG] [Fast Refresh] done in 46ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5199884ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5199897ms] [LOG] [Fast Refresh] done in 47ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5212019ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5212031ms] [LOG] [Fast Refresh] done in 52ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5236330ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5236340ms] [LOG] [Fast Refresh] done in 61ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5246207ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5246215ms] [LOG] [Fast Refresh] done in 96ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5258720ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5258760ms] [LOG] [Fast Refresh] done in 34ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5327591ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5327599ms] [LOG] [Fast Refresh] done in 81ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5341880ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5341893ms] [LOG] [Fast Refresh] done in 68ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5352134ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5352139ms] [LOG] [Fast Refresh] done in 65ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5574549ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5574615ms] [LOG] [Fast Refresh] done in 64ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5583431ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5583439ms] [LOG] [Fast Refresh] done in 65ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5813784ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5813791ms] [LOG] [Fast Refresh] done in 62ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5818336ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5818350ms] [LOG] [Fast Refresh] done in 115ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 diff --git a/.playwright-cli/console-2026-05-28T19-10-41-586Z.log b/.playwright-cli/console-2026-05-28T19-10-41-586Z.log new file mode 100644 index 00000000..d15abab8 --- /dev/null +++ b/.playwright-cli/console-2026-05-28T19-10-41-586Z.log @@ -0,0 +1,120 @@ +[ 4595ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4630ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 69107ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 69144ms] [LOG] [Fast Refresh] done in 29ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 77093ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 77101ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 176391ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 176424ms] [LOG] [Fast Refresh] done in 28ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 194360ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 194393ms] [LOG] [Fast Refresh] done in 26ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 204816ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 204824ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 238159ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 238176ms] [LOG] [Fast Refresh] done in 33ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 247407ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 247413ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 327138ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 327389ms] [LOG] [Fast Refresh] done in 287ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 338330ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 338398ms] [LOG] [Fast Refresh] done in 114ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 349825ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 349887ms] [LOG] [Fast Refresh] done in 88ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 354518ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 354602ms] [LOG] [Fast Refresh] done in 80ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 354753ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 354767ms] [LOG] [Fast Refresh] done in 116ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 364674ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 364750ms] [LOG] [Fast Refresh] done in 72ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 364900ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 364911ms] [LOG] [Fast Refresh] done in 111ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 371745ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 371819ms] [LOG] [Fast Refresh] done in 73ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 371995ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 372003ms] [LOG] [Fast Refresh] done in 109ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 381293ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 381435ms] [LOG] [Fast Refresh] done in 9ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 389089ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 389146ms] [LOG] [Fast Refresh] done in 11ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 396099ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 396159ms] [LOG] [Fast Refresh] done in 17ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 544919ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 544987ms] [LOG] [Fast Refresh] done in 10ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 558291ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 558349ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 568505ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 568563ms] [LOG] [Fast Refresh] done in 15ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 583776ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 583854ms] [LOG] [Fast Refresh] done in 19ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 583958ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 584032ms] [LOG] [Fast Refresh] done in 175ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 602767ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 602834ms] [LOG] [Fast Refresh] done in 68ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 620983ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 621082ms] [LOG] [Fast Refresh] done in 125ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 621374ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 621710ms] [LOG] [Fast Refresh] done in 438ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 621811ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 621826ms] [LOG] [Fast Refresh] done in 115ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 621927ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 621984ms] [LOG] [Fast Refresh] done in 157ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 625583ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 625647ms] [LOG] [Fast Refresh] done in 27ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 719581ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 719599ms] [LOG] [Fast Refresh] done in 51ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 727536ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 727553ms] [LOG] [Fast Refresh] done in 48ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 734106ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 734123ms] [LOG] [Fast Refresh] done in 38ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 749242ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 749286ms] [LOG] [Fast Refresh] done in 72ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 749611ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 749766ms] [LOG] [Fast Refresh] done in 257ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 749867ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 750008ms] [LOG] [Fast Refresh] done in 242ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 758180ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 758230ms] [LOG] [Fast Refresh] done in 30ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 764576ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 764624ms] [LOG] [Fast Refresh] done in 28ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 773896ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 773956ms] [LOG] [Fast Refresh] done in 51ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 784158ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 784215ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 794666ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 794722ms] [LOG] [Fast Refresh] done in 38ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 813818ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 813927ms] [LOG] [Fast Refresh] done in 82ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 814096ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 814450ms] [LOG] [Fast Refresh] done in 454ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 840238ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 840277ms] [LOG] [Fast Refresh] done in 53ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 852081ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 852125ms] [LOG] [Fast Refresh] done in 34ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 859723ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 859780ms] [LOG] [Fast Refresh] done in 40ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 866562ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 866618ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 876234ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 876300ms] [LOG] [Fast Refresh] done in 11ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 883517ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 883577ms] [LOG] [Fast Refresh] done in 17ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 888587ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 888645ms] [LOG] [Fast Refresh] done in 10ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 893025ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 893088ms] [LOG] [Fast Refresh] done in 7ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 905378ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 905452ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 905571ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 905623ms] [LOG] [Fast Refresh] done in 153ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 909245ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 909262ms] [LOG] [Fast Refresh] done in 34ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 928772ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 928815ms] [LOG] [Fast Refresh] done in 37ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 933828ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 933858ms] [LOG] [Fast Refresh] done in 40ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 941175ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 941209ms] [LOG] [Fast Refresh] done in 35ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 972894ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 972950ms] [LOG] [Fast Refresh] done in 35ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 982448ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 982492ms] [LOG] [Fast Refresh] done in 44ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 diff --git a/.playwright-cli/console-2026-05-28T19-28-29-571Z.log b/.playwright-cli/console-2026-05-28T19-28-29-571Z.log new file mode 100644 index 00000000..9edf0e8f --- /dev/null +++ b/.playwright-cli/console-2026-05-28T19-28-29-571Z.log @@ -0,0 +1,363 @@ +[ 5114ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5126ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5244ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5268ms] [LOG] [Fast Refresh] done in 126ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 352837ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 352883ms] [LOG] [Fast Refresh] done in 47ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 353073ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 353113ms] [LOG] [Fast Refresh] done in 141ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 426997ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 427051ms] [LOG] [Fast Refresh] done in 51ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 427166ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 427226ms] [LOG] [Fast Refresh] done in 162ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 436823ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 436861ms] [LOG] [Fast Refresh] done in 141ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 462475ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 462558ms] [LOG] [Fast Refresh] done in 15ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 472899ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 472924ms] [LOG] [Fast Refresh] done in 75ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 483949ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 483969ms] [LOG] [Fast Refresh] done in 80ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 503886ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 503906ms] [LOG] [Fast Refresh] done in 59ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 520619ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 520638ms] [LOG] [Fast Refresh] done in 65ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 549547ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 549568ms] [LOG] [Fast Refresh] done in 81ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 725734ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 725737ms] [LOG] [Fast Refresh] done in 31ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 836628ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 836635ms] [LOG] [Fast Refresh] done in 107ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 914998ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 915035ms] [LOG] [Fast Refresh] done in 65ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 915303ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 915308ms] [LOG] [Fast Refresh] done in 105ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 915559ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 915597ms] [LOG] [Fast Refresh] done in 137ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 924845ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 924846ms] [LOG] [Fast Refresh] done in 101ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 974149ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 974229ms] [LOG] [Fast Refresh] done in 21ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 983245ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 983418ms] [LOG] [Fast Refresh] done in 49ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 990074ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 990187ms] [LOG] [Fast Refresh] done in 140ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 990302ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 990333ms] [LOG] [Fast Refresh] done in 132ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 990435ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 990513ms] [LOG] [Fast Refresh] done in 179ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1016711ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1016770ms] [LOG] [Fast Refresh] done in 69ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1051583ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1051655ms] [LOG] [Fast Refresh] done in 13ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1051772ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1051823ms] [LOG] [Fast Refresh] done in 152ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1067815ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1067867ms] [LOG] [Fast Refresh] done in 24ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1326307ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1326439ms] [LOG] [Fast Refresh] done in 233ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1326834ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1326877ms] [LOG] [Fast Refresh] done in 144ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1327314ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1327399ms] [LOG] [Fast Refresh] done in 185ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1327559ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1327621ms] [LOG] [Fast Refresh] done in 164ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1575450ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1576183ms] [LOG] [Fast Refresh] done in 834ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1626949ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1627020ms] [LOG] [Fast Refresh] done in 43ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1696675ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1696835ms] [LOG] [Fast Refresh] done in 248ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1697467ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1697600ms] [LOG] [Fast Refresh] done in 234ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1697838ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1697886ms] [LOG] [Fast Refresh] done in 150ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1743268ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1743335ms] [LOG] [Fast Refresh] done in 14ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1754321ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1754385ms] [LOG] [Fast Refresh] done in 16ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1766149ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1766426ms] [LOG] [Fast Refresh] done in 29ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1769482ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1769538ms] [LOG] [Fast Refresh] done in 9ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1803737ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1803779ms] [LOG] [Fast Refresh] done in 43ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1840902ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1840954ms] [LOG] [Fast Refresh] done in 59ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1847013ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1847052ms] [LOG] [Fast Refresh] done in 42ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1878903ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1878951ms] [LOG] [Fast Refresh] done in 27ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1890020ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1890076ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1926934ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1926971ms] [LOG] [Fast Refresh] done in 39ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1943834ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1943878ms] [LOG] [Fast Refresh] done in 29ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1948799ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1948835ms] [LOG] [Fast Refresh] done in 28ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1957673ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1957709ms] [LOG] [Fast Refresh] done in 30ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1964929ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1964985ms] [LOG] [Fast Refresh] done in 32ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1965215ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1965301ms] [LOG] [Fast Refresh] done in 186ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1971894ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1971971ms] [LOG] [Fast Refresh] done in 31ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1990085ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1990167ms] [LOG] [Fast Refresh] done in 116ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1990469ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1990501ms] [LOG] [Fast Refresh] done in 132ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1991483ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1991491ms] [LOG] [Fast Refresh] done in 108ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1992517ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1992964ms] [LOG] [Fast Refresh] done in 548ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1993065ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1993171ms] [LOG] [Fast Refresh] done in 207ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1995772ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1995839ms] [LOG] [Fast Refresh] done in 13ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2025937ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2026040ms] [LOG] [Fast Refresh] done in 115ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2026404ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2026575ms] [LOG] [Fast Refresh] done in 272ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2027048ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2027071ms] [LOG] [Fast Refresh] done in 123ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2027620ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2027673ms] [LOG] [Fast Refresh] done in 153ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2027774ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2027920ms] [LOG] [Fast Refresh] done in 246ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2035422ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2035653ms] [LOG] [Fast Refresh] done in 233ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2036037ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2036145ms] [LOG] [Fast Refresh] done in 208ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2036644ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2036662ms] [LOG] [Fast Refresh] done in 118ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2037024ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2037034ms] [LOG] [Fast Refresh] done in 110ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2037803ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2037821ms] [LOG] [Fast Refresh] done in 120ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2038019ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2038038ms] [LOG] [Fast Refresh] done in 120ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2038569ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2038614ms] [LOG] [Fast Refresh] done in 146ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2038828ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2038846ms] [LOG] [Fast Refresh] done in 118ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2039086ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2039098ms] [LOG] [Fast Refresh] done in 113ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2041354ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2041364ms] [LOG] [Fast Refresh] done in 111ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2052689ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2052762ms] [LOG] [Fast Refresh] done in 13ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2058647ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2058712ms] [LOG] [Fast Refresh] done in 54ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2437822ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2437824ms] [LOG] [Fast Refresh] done in 34ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2628443ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2628559ms] [LOG] [Fast Refresh] done in 174ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2642668ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2642679ms] [LOG] [Fast Refresh] done in 46ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2648059ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2648201ms] [LOG] [Fast Refresh] done in 209ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2657212ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2657252ms] [LOG] [Fast Refresh] done in 39ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2686689ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2686722ms] [LOG] [Fast Refresh] done in 28ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2704149ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2704167ms] [LOG] [Fast Refresh] done in 34ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2709076ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2709197ms] [LOG] [Fast Refresh] done in 11ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2713746ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2713818ms] [LOG] [Fast Refresh] done in 29ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2719490ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2719498ms] [LOG] [Fast Refresh] done in 52ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2724507ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2724574ms] [LOG] [Fast Refresh] done in 9ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2742540ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2742550ms] [LOG] [Fast Refresh] done in 47ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2751263ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2751269ms] [LOG] [Fast Refresh] done in 66ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2756145ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2756204ms] [LOG] [Fast Refresh] done in 10ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2805907ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2805967ms] [LOG] [Fast Refresh] done in 10ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2814895ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2814954ms] [LOG] [Fast Refresh] done in 24ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2835781ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2835865ms] [LOG] [Fast Refresh] done in 90ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2836033ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2836120ms] [LOG] [Fast Refresh] done in 190ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2836492ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2836544ms] [LOG] [Fast Refresh] done in 153ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2836812ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2836896ms] [LOG] [Fast Refresh] done in 184ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2837556ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2837580ms] [LOG] [Fast Refresh] done in 124ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2837868ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2837894ms] [LOG] [Fast Refresh] done in 126ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2838082ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2838253ms] [LOG] [Fast Refresh] done in 273ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2838512ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2838559ms] [LOG] [Fast Refresh] done in 148ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2838820ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2838870ms] [LOG] [Fast Refresh] done in 150ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2839052ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2839097ms] [LOG] [Fast Refresh] done in 145ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2839379ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2839890ms] [LOG] [Fast Refresh] done in 612ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2840348ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2840411ms] [LOG] [Fast Refresh] done in 163ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2840596ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2840651ms] [LOG] [Fast Refresh] done in 156ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2840970ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2840997ms] [LOG] [Fast Refresh] done in 128ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2841157ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2841240ms] [LOG] [Fast Refresh] done in 185ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2841593ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2841683ms] [LOG] [Fast Refresh] done in 190ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2841784ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2841890ms] [LOG] [Fast Refresh] done in 208ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2842197ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2842228ms] [LOG] [Fast Refresh] done in 133ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2842487ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2842614ms] [LOG] [Fast Refresh] done in 227ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2843479ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2844128ms] [LOG] [Fast Refresh] done in 747ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2844323ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2844345ms] [LOG] [Fast Refresh] done in 122ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2844754ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2844812ms] [LOG] [Fast Refresh] done in 158ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2845041ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2845074ms] [LOG] [Fast Refresh] done in 134ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2845177ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2845234ms] [LOG] [Fast Refresh] done in 156ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2845391ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2845420ms] [LOG] [Fast Refresh] done in 131ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2845709ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2845726ms] [LOG] [Fast Refresh] done in 117ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2845923ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2846032ms] [LOG] [Fast Refresh] done in 210ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2846322ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2846401ms] [LOG] [Fast Refresh] done in 180ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2846534ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2846543ms] [LOG] [Fast Refresh] done in 109ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2846737ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2846752ms] [LOG] [Fast Refresh] done in 117ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2847034ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2847245ms] [LOG] [Fast Refresh] done in 311ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2847736ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2847736ms] [LOG] [Fast Refresh] done in 102ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2847937ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2848658ms] [LOG] [Fast Refresh] done in 821ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2849732ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2849790ms] [LOG] [Fast Refresh] done in 18ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2857379ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2857396ms] [LOG] [Fast Refresh] done in 47ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2864916ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2864930ms] [LOG] [Fast Refresh] done in 52ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2872863ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2872877ms] [LOG] [Fast Refresh] done in 48ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2879616ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2879652ms] [LOG] [Fast Refresh] done in 34ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2886858ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2886997ms] [LOG] [Fast Refresh] done in 10ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2909786ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2909942ms] [LOG] [Fast Refresh] done in 8ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3108633ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3108721ms] [LOG] [Fast Refresh] done in 135ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3108728ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3108778ms] [LOG] [Fast Refresh] done in 8ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3108988ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3109276ms] [LOG] [Fast Refresh] done in 388ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3113069ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3113078ms] [LOG] [Fast Refresh] done in 48ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3117489ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3117498ms] [LOG] [Fast Refresh] done in 51ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3129622ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3129632ms] [LOG] [Fast Refresh] done in 54ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3153935ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3153943ms] [LOG] [Fast Refresh] done in 64ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3163814ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3163829ms] [LOG] [Fast Refresh] done in 103ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3176321ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3176361ms] [LOG] [Fast Refresh] done in 34ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3245196ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3245206ms] [LOG] [Fast Refresh] done in 85ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3259485ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3259495ms] [LOG] [Fast Refresh] done in 71ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3269738ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3269747ms] [LOG] [Fast Refresh] done in 69ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3492150ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3492216ms] [LOG] [Fast Refresh] done in 65ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3501037ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3501049ms] [LOG] [Fast Refresh] done in 70ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3731387ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3731395ms] [LOG] [Fast Refresh] done in 65ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3735937ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 3735951ms] [LOG] [Fast Refresh] done in 115ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4335292ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4335521ms] [LOG] [Fast Refresh] done in 34ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4378605ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4378616ms] [LOG] [Fast Refresh] done in 61ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4382596ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4382605ms] [LOG] [Fast Refresh] done in 73ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4395312ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4395323ms] [LOG] [Fast Refresh] done in 60ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4416440ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4416450ms] [LOG] [Fast Refresh] done in 65ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4437586ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4437594ms] [LOG] [Fast Refresh] done in 70ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4444806ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4444815ms] [LOG] [Fast Refresh] done in 78ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4450421ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4450430ms] [LOG] [Fast Refresh] done in 56ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4457819ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4457828ms] [LOG] [Fast Refresh] done in 63ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4466679ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4466687ms] [LOG] [Fast Refresh] done in 65ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4472142ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4472151ms] [LOG] [Fast Refresh] done in 54ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4484586ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4484715ms] [LOG] [Fast Refresh] done in 11ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4499632ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4499641ms] [LOG] [Fast Refresh] done in 76ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4506957ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4506962ms] [LOG] [Fast Refresh] done in 78ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4507062ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4507328ms] [LOG] [Fast Refresh] done in 366ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4511048ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4511053ms] [LOG] [Fast Refresh] done in 64ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4511163ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4511301ms] [LOG] [Fast Refresh] done in 240ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4511403ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4511442ms] [LOG] [Fast Refresh] done in 140ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4522599ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4522644ms] [LOG] [Fast Refresh] done in 25ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4522750ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4522950ms] [LOG] [Fast Refresh] done in 300ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4528822ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4528834ms] [LOG] [Fast Refresh] done in 112ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4538503ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4538531ms] [LOG] [Fast Refresh] done in 45ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4538632ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4538825ms] [LOG] [Fast Refresh] done in 292ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4549456ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4549473ms] [LOG] [Fast Refresh] done in 118ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4607219ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4607222ms] [LOG] [Fast Refresh] done in 104ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 5131549ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[22700020ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[27108661ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[27147203ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[34372259ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[36535862ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=9Sn5FM23e_Y0fnp6QZKuh' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[37485507ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=9Sn5FM23e_Y0fnp6QZKuh' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[37486513ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=9Sn5FM23e_Y0fnp6QZKuh' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[37487518ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=9Sn5FM23e_Y0fnp6QZKuh' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[37488525ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=9Sn5FM23e_Y0fnp6QZKuh' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[37766757ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=9Sn5FM23e_Y0fnp6QZKuh' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[37771768ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=9Sn5FM23e_Y0fnp6QZKuh' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[37776779ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=9Sn5FM23e_Y0fnp6QZKuh' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[37781787ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=9Sn5FM23e_Y0fnp6QZKuh' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[37786794ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=9Sn5FM23e_Y0fnp6QZKuh' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[37791801ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=9Sn5FM23e_Y0fnp6QZKuh' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[37796804ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=9Sn5FM23e_Y0fnp6QZKuh' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 diff --git a/.playwright-cli/console-2026-05-28T20-27-42-245Z.log b/.playwright-cli/console-2026-05-28T20-27-42-245Z.log new file mode 100644 index 00000000..bda387e1 --- /dev/null +++ b/.playwright-cli/console-2026-05-28T20-27-42-245Z.log @@ -0,0 +1,2 @@ +[ 1879ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1915ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 diff --git a/.playwright-cli/console-2026-05-28T20-27-52-869Z.log b/.playwright-cli/console-2026-05-28T20-27-52-869Z.log new file mode 100644 index 00000000..82dc95c6 --- /dev/null +++ b/.playwright-cli/console-2026-05-28T20-27-52-869Z.log @@ -0,0 +1,62 @@ +[ 615ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 648ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 48817ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 48825ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 52391ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 52399ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 52420ms] [ERROR] Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version. Tiền mặt @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:3318 +[ 52425ms] [ERROR] Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version. Tiền mặt @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:3318 +[ 55265ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 55273ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 58512ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 58520ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 61143ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 61149ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 63663ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 63671ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 66642ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 66647ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 69449ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 69456ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 72452ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 72457ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 86928ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 86935ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 89422ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 89430ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 89449ms] [ERROR] Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version. Tiền mặt @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:3318 +[ 89453ms] [ERROR] Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version. Tiền mặt @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:3318 +[ 91876ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 91882ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 94071ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 94077ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 96301ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 96307ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 96327ms] [ERROR] Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version. Tiền mặt @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:3318 +[ 96333ms] [ERROR] Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version. Tiền mặt @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:3318 +[ 98392ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 98399ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 100553ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 100558ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 102697ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 102704ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 104782ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 104788ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 106865ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 106871ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 109234ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 109243ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 111548ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 111553ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 114094ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 114100ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 116636ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 116641ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 119029ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 119034ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 121368ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 121373ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 123643ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 123648ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 126025ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 126033ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 diff --git a/.playwright-cli/console-2026-05-28T20-30-12-298Z.log b/.playwright-cli/console-2026-05-28T20-30-12-298Z.log new file mode 100644 index 00000000..5b36af93 --- /dev/null +++ b/.playwright-cli/console-2026-05-28T20-30-12-298Z.log @@ -0,0 +1,2 @@ +[ 2248ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2257ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 diff --git a/.playwright-cli/console-2026-05-28T20-30-18-499Z.log b/.playwright-cli/console-2026-05-28T20-30-18-499Z.log new file mode 100644 index 00000000..7c99c69c --- /dev/null +++ b/.playwright-cli/console-2026-05-28T20-30-18-499Z.log @@ -0,0 +1,13 @@ +[ 2250ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2257ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2281ms] [ERROR] Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version. Tiền mặt @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:3318 +[ 2286ms] [ERROR] Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version. Tiền mặt @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:3318 +[ 5616ms] [ERROR] Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version. Tiền mặt @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:3318 +[ 22465ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 22483ms] [LOG] [Fast Refresh] done in 70ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 27009ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 27023ms] [LOG] [Fast Refresh] done in 116ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 39598ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 39603ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 47050ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 47057ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 diff --git a/.playwright-cli/console-2026-05-28T20-31-10-905Z.log b/.playwright-cli/console-2026-05-28T20-31-10-905Z.log new file mode 100644 index 00000000..d2564257 --- /dev/null +++ b/.playwright-cli/console-2026-05-28T20-31-10-905Z.log @@ -0,0 +1,6 @@ +[ 2673ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2682ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 12905ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 12913ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 16882ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 16888ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 diff --git a/.playwright-cli/console-2026-05-28T20-31-29-083Z.log b/.playwright-cli/console-2026-05-28T20-31-29-083Z.log new file mode 100644 index 00000000..f0e227d3 --- /dev/null +++ b/.playwright-cli/console-2026-05-28T20-31-29-083Z.log @@ -0,0 +1,18 @@ +[ 2479ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 2484ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4981ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 4988ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 9997ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 10004ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 14483ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 14489ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 18215ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 18222ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 22162ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 22170ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 26381ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 26388ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 30025ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 30033ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 49280ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 49290ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 diff --git a/.playwright-cli/console-2026-05-28T20-32-31-535Z.log b/.playwright-cli/console-2026-05-28T20-32-31-535Z.log new file mode 100644 index 00000000..7e598227 --- /dev/null +++ b/.playwright-cli/console-2026-05-28T20-32-31-535Z.log @@ -0,0 +1,106 @@ +[ 103ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 139ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 28194ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 28198ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 41078ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 41087ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 52149ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 52157ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 63234ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 63240ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 73677ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 73683ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 84531ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 84539ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 96908ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 96914ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 493328ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 493557ms] [LOG] [Fast Refresh] done in 36ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 536648ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 536669ms] [LOG] [Fast Refresh] done in 68ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 540638ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 540655ms] ReferenceError: isPaidOrCompleted is not defined + at WorkflowScreen (http://localhost:3010/_next/static/chunks/apps_tpos-mvp-next_src_components_0v9yhs5._.js?id=%255Bproject%255D%252Fapps%252Ftpos-mvp-next%252Fsrc%252Fcomponents%252FTposPosExperience.tsx+%255Bapp-client%255D+%2528ecmascript%2529:2539:32) + at Object.react_stack_bottom_frame (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:15037:24) + at renderWithHooks (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:4620:24) + at updateFunctionComponent (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:6081:21) + at beginWork (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:6691:24) + at runWithFiberInDEV (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:965:74) + at performUnitOfWork (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:9555:97) + at workLoopSync (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:9449:40) + at renderRootSync (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:9433:13) + at performWorkOnRoot (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:9098:47) + at performSyncWorkOnRoot (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:10263:9) + at flushSyncWorkAcrossRoots_impl (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:10179:316) + at flushSyncWork$1 (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:9230:86) + at Object.scheduleRefresh (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-dom_08tl-yd._.js:299:13) + at http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_0ncn8g5._.js:391:33 + at Set.forEach () + at Object.performReactRefresh (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_0ncn8g5._.js:384:38) + at applyUpdate (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_0ncn8g5._.js:878:31) + at http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_0ncn8g5._.js:886:13 +[ 540660ms] [LOG] [Fast Refresh] done in 79ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 553358ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 553366ms] [WARNING] [Fast Refresh] performing full reload because your application had an unrecoverable error @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 553388ms] [LOG] [Fast Refresh] done in 71ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 558969ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 558980ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 574489ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 574512ms] [LOG] [Fast Refresh] done in 78ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 595630ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 595653ms] [LOG] [Fast Refresh] done in 78ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 602851ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 602873ms] [LOG] [Fast Refresh] done in 87ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 608465ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 608487ms] [LOG] [Fast Refresh] done in 64ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 615863ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 615882ms] [LOG] [Fast Refresh] done in 70ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 624722ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 624743ms] [LOG] [Fast Refresh] done in 72ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 630185ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 630204ms] [LOG] [Fast Refresh] done in 60ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 642622ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 642751ms] [LOG] [Fast Refresh] done in 12ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 657673ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 657696ms] [LOG] [Fast Refresh] done in 81ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 664993ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 664999ms] [LOG] [Fast Refresh] done in 80ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 665100ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 665364ms] [LOG] [Fast Refresh] done in 364ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 669084ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 669092ms] [LOG] [Fast Refresh] done in 67ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 669198ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 669337ms] [LOG] [Fast Refresh] done in 239ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 669440ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 669478ms] [LOG] [Fast Refresh] done in 140ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 680635ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 680680ms] [LOG] [Fast Refresh] done in 28ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 680786ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 680986ms] [LOG] [Fast Refresh] done in 300ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 686858ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 686870ms] [LOG] [Fast Refresh] done in 112ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 696539ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 696567ms] [LOG] [Fast Refresh] done in 47ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 696669ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 696861ms] [LOG] [Fast Refresh] done in 292ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 707492ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 707509ms] [LOG] [Fast Refresh] done in 117ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 765254ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 765258ms] [LOG] [Fast Refresh] done in 104ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 1289584ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[18858051ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[23266690ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[23305237ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[30530292ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[32693899ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=SbhdanoDyeBMt0EvejOdQ' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33643545ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=SbhdanoDyeBMt0EvejOdQ' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33644551ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=SbhdanoDyeBMt0EvejOdQ' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33645556ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=SbhdanoDyeBMt0EvejOdQ' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33646563ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=SbhdanoDyeBMt0EvejOdQ' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33924795ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=SbhdanoDyeBMt0EvejOdQ' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33929807ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=SbhdanoDyeBMt0EvejOdQ' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33934817ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=SbhdanoDyeBMt0EvejOdQ' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33939824ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=SbhdanoDyeBMt0EvejOdQ' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33944830ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=SbhdanoDyeBMt0EvejOdQ' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33949837ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=SbhdanoDyeBMt0EvejOdQ' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33954844ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=SbhdanoDyeBMt0EvejOdQ' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 diff --git a/.playwright-cli/console-2026-05-28T20-44-31-373Z.log b/.playwright-cli/console-2026-05-28T20-44-31-373Z.log new file mode 100644 index 00000000..6fa79916 --- /dev/null +++ b/.playwright-cli/console-2026-05-28T20-44-31-373Z.log @@ -0,0 +1,114 @@ +[ 145ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 179ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 28413ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 28418ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 37459ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 37467ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 41486ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 41493ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 45300ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 45314ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 49103ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 49114ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 52763ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 52771ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 67462ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 67471ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[ 80541ms] [ERROR] Failed to load resource: the server responded with a status of 400 (Bad Request) @ http://localhost:3010/api/bff/orders/2da66543-583f-45e4-b85e-cab8c3b50faa/cancel:0 +[ 569740ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[18138214ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[22546855ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[22585405ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[29810451ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[31974059ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=ydRxbhCggYpdYhC2kDB6r' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[32923707ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=ydRxbhCggYpdYhC2kDB6r' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[32924713ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=ydRxbhCggYpdYhC2kDB6r' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[32925717ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=ydRxbhCggYpdYhC2kDB6r' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[32926723ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=ydRxbhCggYpdYhC2kDB6r' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33204955ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=ydRxbhCggYpdYhC2kDB6r' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33209966ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=ydRxbhCggYpdYhC2kDB6r' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33214975ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=ydRxbhCggYpdYhC2kDB6r' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33219985ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=ydRxbhCggYpdYhC2kDB6r' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33224991ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=ydRxbhCggYpdYhC2kDB6r' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33229996ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=ydRxbhCggYpdYhC2kDB6r' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[33235000ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=ydRxbhCggYpdYhC2kDB6r' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[465544039ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3010/admin:0 +[465544085ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465544133ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465544221ms] error: could not create unique index "ux_staff_members_shop_employee_code" + at createCoreSchema (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?0:128:5) + at ensureDatabase (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?1:1059:5) + at query (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?2:1062:5) + at getSessionUser (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?3:3869:18) + at requirePortalRole (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?4:5043:18) + at AdminPage (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?5:5177:18) + at resolveErrorDev (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:1919:105) + at processFullStringRow (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2434:29) + at processFullBinaryRow (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2393:9) + at processBinaryChunk (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2502:221) + at progress (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2689:13) +[465544227ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://localhost:3010/favicon.ico:0 +[465561673ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3010/admin:0 +[465561694ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465561701ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465561758ms] error: could not create unique index "ux_staff_members_shop_employee_code" + at createCoreSchema (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?0:128:5) + at ensureDatabase (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?1:1059:5) + at query (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?2:1062:5) + at getSessionUser (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?3:3869:18) + at requirePortalRole (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?4:5043:18) + at AdminPage (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?5:5177:18) + at resolveErrorDev (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:1919:105) + at processFullStringRow (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2434:29) + at processFullBinaryRow (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2393:9) + at processBinaryChunk (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2502:221) + at progress (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2689:13) +[465606845ms] [LOG] [Fast Refresh] rebuilding @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465607036ms] [LOG] [Fast Refresh] done in 217ms @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465607154ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3010/admin:0 +[465607171ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465607178ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465607232ms] error: could not create unique index "ux_staff_members_shop_employee_code" + at createCoreSchema (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?0:128:5) + at ensureDatabase (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?1:1059:5) + at query (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?2:1062:5) + at getSessionUser (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?3:3869:18) + at requirePortalRole (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?4:5043:18) + at AdminPage (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?5:5177:18) + at resolveErrorDev (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:1919:105) + at processFullStringRow (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2434:29) + at processFullBinaryRow (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2393:9) + at processBinaryChunk (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2502:221) + at progress (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2689:13) +[465635786ms] [ERROR] Failed to load resource: the server responded with a status of 500 (Internal Server Error) @ http://localhost:3010/admin:0 +[465635801ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465635810ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465635868ms] error: could not create unique index "ux_staff_members_shop_employee_code" + at createCoreSchema (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?0:128:5) + at ensureDatabase (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?1:1059:5) + at query (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?2:1062:5) + at getSessionUser (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?3:3869:18) + at requirePortalRole (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?4:5043:18) + at AdminPage (about://React/Server/file:///Users/velikho/Desktop/WORKING/pos-system/microservices/apps/tpos-mvp-next/.next/dev/server/chunks/ssr/%5Broot-of-the-server%5D__0g_jbpa._.js?5:5177:18) + at resolveErrorDev (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:1919:105) + at processFullStringRow (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2434:29) + at processFullBinaryRow (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2393:9) + at processBinaryChunk (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2502:221) + at progress (http://localhost:3010/_next/static/chunks/0x~w_next_dist_compiled_react-server-dom-turbopack_0ctc-gz._.js:2689:13) +[465680084ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=VDJJvOVZf9uYmM7Bqp0gN' failed: @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[465681087ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=VDJJvOVZf9uYmM7Bqp0gN' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[465682089ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=VDJJvOVZf9uYmM7Bqp0gN' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[465683091ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=VDJJvOVZf9uYmM7Bqp0gN' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[465684092ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=VDJJvOVZf9uYmM7Bqp0gN' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[465685094ms] [ERROR] WebSocket connection to 'ws://localhost:3010/_next/webpack-hmr?id=VDJJvOVZf9uYmM7Bqp0gN' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_client_0vjm67r._.js:13322 +[465690102ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465690652ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465690659ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465698132ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465698140ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465711877ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465711885ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465782323ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465782329ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465790628ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 +[465790636ms] [LOG] [HMR] connected @ http://localhost:3010/_next/static/chunks/0x~w_next_dist_0c-ghxa._.js:2477 diff --git a/.playwright-cli/page-2026-05-28T18-45-39-661Z.yml b/.playwright-cli/page-2026-05-28T18-45-39-661Z.yml new file mode 100644 index 00000000..17ffd564 --- /dev/null +++ b/.playwright-cli/page-2026-05-28T18-45-39-661Z.yml @@ -0,0 +1,65 @@ +- generic [active] [ref=e1]: + - main [ref=e2]: + - generic [ref=e3]: + - generic [ref=e4]: + - link [ref=e5] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e6] + - generic [ref=e8]: aPOS POS + - generic [ref=e9]: QA Cafe 282591 + - generic [ref=e10]: + - generic [ref=e11]: Online + - generic [ref=e13]: + - img [ref=e14] + - text: 01:45 + - link [ref=e17] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e18] + - generic [ref=e22]: + - navigation [ref=e23]: + - button "Bán hàng" [ref=e24] [cursor=pointer]: + - img [ref=e25] + - generic [ref=e27]: Bán hàng + - button "Lịch sử" [ref=e28] [cursor=pointer]: + - img [ref=e29] + - generic [ref=e33]: Lịch sử + - button "Dashboard" [ref=e34] [cursor=pointer]: + - img [ref=e35] + - generic [ref=e37]: Dashboard + - button "Cài đặt" [ref=e38] [cursor=pointer]: + - img [ref=e39] + - generic [ref=e42]: Cài đặt + - generic [ref=e147]: + - generic [ref=e148]: + - generic [ref=e184]: + - generic [ref=e185]: Chi tiết hóa đơn + - strong [ref=e186]: "#2DA66543" + - button "Quay lại" [ref=e187] [cursor=pointer]: + - img [ref=e188] + - generic [ref=e190]: Quay lại + - generic [ref=e191]: + - generic [ref=e192]: + - generic [ref=e193]: HÓA ĐƠN + - strong [ref=e194]: "#2DA66543" + - generic [ref=e195]: + - generic [ref=e196]: Thời gian + - generic [ref=e197]: 01:28:33 29/05/2026 + - generic [ref=e198]: + - generic [ref=e199]: Trạng thái + - generic [ref=e200]: Đã thanh toán + - generic [ref=e201]: + - generic [ref=e202]: Thanh toán + - generic [ref=e203]: Tiền mặt + - generic [ref=e205]: + - generic [ref=e206]: Americano + - generic [ref=e207]: 1 x 45.000 ₫ + - generic [ref=e208]: 45.000 ₫ + - generic [ref=e209]: + - generic [ref=e210]: TỔNG CỘNG + - strong [ref=e211]: 45.000 ₫ + - button "In hóa đơn" [ref=e212] [cursor=pointer]: + - img [ref=e213] + - generic [ref=e217]: In hóa đơn + - button "Open Next.js Dev Tools" [ref=e142] [cursor=pointer]: + - img [ref=e143] + - alert [ref=e146] \ No newline at end of file diff --git a/.playwright-cli/page-2026-05-28T18-45-53-110Z.yml b/.playwright-cli/page-2026-05-28T18-45-53-110Z.yml new file mode 100644 index 00000000..2da9c21e --- /dev/null +++ b/.playwright-cli/page-2026-05-28T18-45-53-110Z.yml @@ -0,0 +1,82 @@ +- generic [ref=e1]: + - main [ref=e2]: + - generic [ref=e3]: + - generic [ref=e4]: + - link [ref=e5] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e6] + - generic [ref=e8]: aPOS POS + - generic [ref=e9]: QA Cafe 282591 + - generic [ref=e10]: + - generic [ref=e11]: Online + - generic [ref=e13]: + - img [ref=e14] + - text: 01:45 + - link [ref=e17] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e18] + - generic [ref=e22]: + - navigation [ref=e23]: + - button "Bán hàng" [ref=e24] [cursor=pointer]: + - img [ref=e25] + - generic [ref=e27]: Bán hàng + - button "Lịch sử" [ref=e28] [cursor=pointer]: + - img [ref=e29] + - generic [ref=e33]: Lịch sử + - button "Dashboard" [active] [ref=e34] [cursor=pointer]: + - img [ref=e35] + - generic [ref=e37]: Dashboard + - button "Cài đặt" [ref=e38] [cursor=pointer]: + - img [ref=e39] + - generic [ref=e42]: Cài đặt + - generic [ref=e218]: + - generic [ref=e219]: + - generic [ref=e220]: + - generic [ref=e221]: Dashboard bán hàng + - generic [ref=e222]: 29/05/2026 · Hôm nay + - generic "Khoảng thời gian dashboard" [ref=e223]: + - button "Hôm nay" [ref=e224] [cursor=pointer] + - button "7 ngày" [ref=e225] [cursor=pointer] + - button "30 ngày" [ref=e226] [cursor=pointer] + - generic [ref=e227]: + - generic [ref=e228]: + - generic [ref=e229]: Doanh thu + - strong [ref=e230]: 90.000 ₫ + - generic [ref=e231]: TB 45.000 ₫/đơn + - generic [ref=e232]: + - generic [ref=e233]: Đơn hàng + - strong [ref=e234]: "2" + - generic [ref=e235]: 29/05/2026 · Hôm nay + - generic [ref=e236]: + - generic [ref=e237]: Món bán ra + - strong [ref=e238]: "2" + - generic [ref=e239]: 1.0 món/đơn + - generic [ref=e240]: + - generic [ref=e241]: + - generic [ref=e242]: Món bán chạy + - generic [ref=e244]: + - generic [ref=e245]: Americano + - generic [ref=e246]: 2 đã bán + - generic [ref=e247]: 90.000 ₫ + - generic [ref=e249]: + - generic [ref=e250]: Hình thức thanh toán + - generic [ref=e253]: + - generic [ref=e254]: Tiền mặt + - strong [ref=e255]: 90.000 ₫ + - generic [ref=e258]: Doanh thu theo giờ + - generic [ref=e259]: + - generic [ref=e262]: 08h + - generic [ref=e265]: 09h + - generic [ref=e268]: 10h + - generic [ref=e271]: 11h + - generic [ref=e274]: 12h + - generic [ref=e277]: 13h + - generic [ref=e280]: 14h + - generic [ref=e283]: 15h + - generic [ref=e286]: 16h + - generic [ref=e289]: 17h + - generic [ref=e292]: 18h + - generic [ref=e295]: 19h + - button "Open Next.js Dev Tools" [ref=e142] [cursor=pointer]: + - img [ref=e143] + - alert [ref=e146] \ No newline at end of file diff --git a/.playwright-cli/page-2026-05-28T18-46-13-169Z.yml b/.playwright-cli/page-2026-05-28T18-46-13-169Z.yml new file mode 100644 index 00000000..e4f767b8 --- /dev/null +++ b/.playwright-cli/page-2026-05-28T18-46-13-169Z.yml @@ -0,0 +1,54 @@ +- generic [active] [ref=e1]: + - navigation [ref=e2]: + - link "aPOS" [ref=e3] [cursor=pointer]: + - /url: / + - generic [ref=e4]: + - link "Tính năng" [ref=e5] [cursor=pointer]: + - /url: /#features + - link "Bảng giá" [ref=e6] [cursor=pointer]: + - /url: /#pricing + - link "Đăng nhập" [ref=e7] [cursor=pointer]: + - /url: /auth/login + - link "Dùng thử miễn phí" [ref=e8] [cursor=pointer]: + - /url: /register + - main [ref=e9]: + - generic [ref=e10]: + - img [ref=e12] + - heading "aPOS Loyalty" [level=1] [ref=e14] + - paragraph [ref=e15]: Theo dõi điểm thưởng, voucher và lịch sử mua hàng từ QR menu đến POS. + - generic [ref=e16]: + - generic [ref=e17]: 50,000+ giao dịch/ngày + - generic [ref=e18]: 99.9% uptime + - generic [ref=e19]: + - generic [ref=e20]: + - generic [ref=e21]: + - img [ref=e22] + - text: CUSTOMER + - heading "Chào mừng bạn!" [level=2] [ref=e24] + - paragraph [ref=e25]: Đăng nhập để nhận ưu đãi và tích điểm thưởng + - generic [ref=e26]: + - img [ref=e27] + - generic [ref=e30]: Ưu đãi, tích điểm, lịch sử mua hàng + - generic [ref=e31]: + - generic [ref=e32]: Số điện thoại + - generic [ref=e33]: + - generic [ref=e34]: 🇻🇳 +84 + - textbox "Số điện thoại 🇻🇳 +84" [ref=e35]: + - /placeholder: 901 234 567 + - generic [ref=e36]: + - generic [ref=e37]: Hoặc đăng nhập bằng + - generic [ref=e38]: + - button "Zalo" [ref=e39] [cursor=pointer] + - button "Google" [ref=e40] [cursor=pointer] + - button "Facebook" [ref=e41] [cursor=pointer] + - button "Gửi mã OTP" [ref=e42] [cursor=pointer]: + - generic [ref=e43]: Gửi mã OTP + - img [ref=e44] + - generic [ref=e46]: + - link "Đăng ký ngay" [ref=e47] [cursor=pointer]: + - /url: /auth/register/customer + - link "Điều khoản" [ref=e48] [cursor=pointer]: + - /url: /about + - button "Open Next.js Dev Tools" [ref=e54] [cursor=pointer]: + - img [ref=e55] + - alert [ref=e58] \ No newline at end of file diff --git a/.playwright-cli/page-2026-05-28T18-53-47-407Z.yml b/.playwright-cli/page-2026-05-28T18-53-47-407Z.yml new file mode 100644 index 00000000..47956f44 --- /dev/null +++ b/.playwright-cli/page-2026-05-28T18-53-47-407Z.yml @@ -0,0 +1,80 @@ +- generic [active] [ref=e1]: + - main [ref=e2]: + - navigation [ref=e3]: + - generic [ref=e4]: + - link "aPOS" [ref=e5] [cursor=pointer]: + - /url: / + - generic [ref=e6]: + - link "Ngành hàng" [ref=e7] [cursor=pointer]: + - /url: /#features + - link "Giới thiệu" [ref=e8] [cursor=pointer]: + - /url: /about + - link "Dự án" [ref=e9] [cursor=pointer]: + - /url: /project + - link "Đăng nhập" [ref=e10] [cursor=pointer]: + - /url: /login + - link "Dùng thử miễn phí" [ref=e11] [cursor=pointer]: + - /url: /register + - generic [ref=e12]: + - generic [ref=e13]: + - img [ref=e14] + - generic [ref=e18]: TPOS + - generic [ref=e19]: Nền tảng POS đa ngành + - heading "Quản lý bán hàng cho từng mô hình vận hành" [level=1] [ref=e20] + - paragraph [ref=e21]: TPOS hỗ trợ Cafe, Nhà hàng, Karaoke, Spa và Bán lẻ với bán hàng tại quầy, quản lý ca, khách hàng thân thiết và báo cáo theo thời gian thực. + - generic [ref=e22]: + - link "Dùng thử miễn phí" [ref=e23] [cursor=pointer]: + - /url: /register + - img [ref=e24] + - text: Dùng thử miễn phí + - link "Đăng nhập" [ref=e26] [cursor=pointer]: + - /url: /auth/login + - img [ref=e27] + - text: Đăng nhập + - generic [ref=e30]: + - generic [ref=e31]: Dành cho điểm bán cần vận hành nhanh và rõ ràng + - generic [ref=e32]: + - generic [ref=e33]: POS tại quầy + - generic [ref=e34]: • + - generic [ref=e35]: Portal quản trị + - generic [ref=e36]: + - generic [ref=e37]: + - generic [ref=e38]: Chọn ngành hàng + - link "Vào portal" [ref=e39] [cursor=pointer]: + - /url: /auth/login + - text: Vào portal + - img [ref=e40] + - generic [ref=e42]: + - link "Cafe Order nhanh, pha chế, ca bán" [ref=e43] [cursor=pointer]: + - /url: /register + - img [ref=e44] + - generic [ref=e46]: Cafe + - paragraph [ref=e47]: Order nhanh, pha chế, ca bán + - link "Nhà hàng & F&B Bàn, bếp, thanh toán tách/gộp" [ref=e48] [cursor=pointer]: + - /url: /register + - img [ref=e49] + - generic [ref=e54]: Nhà hàng & F&B + - paragraph [ref=e55]: Bàn, bếp, thanh toán tách/gộp + - link "Karaoke Phòng, giờ hát, dịch vụ đi kèm" [ref=e56] [cursor=pointer]: + - /url: /register + - img [ref=e57] + - generic [ref=e60]: Karaoke + - paragraph [ref=e61]: Phòng, giờ hát, dịch vụ đi kèm + - link "TMV/Spa Lịch hẹn, liệu trình, khách hàng" [ref=e62] [cursor=pointer]: + - /url: /register + - img [ref=e63] + - generic [ref=e66]: TMV/Spa + - paragraph [ref=e67]: Lịch hẹn, liệu trình, khách hàng + - link "Bán lẻ Sản phẩm, tồn kho, khách thân thiết" [ref=e68] [cursor=pointer]: + - /url: /register + - img [ref=e69] + - generic [ref=e72]: Bán lẻ + - paragraph [ref=e73]: Sản phẩm, tồn kho, khách thân thiết + - generic [ref=e74]: + - generic [ref=e75]: + - img [ref=e76] + - generic [ref=e79]: Đã có tài khoản TPOS? + - link "Mở portal đăng nhập" [ref=e80] [cursor=pointer]: + - /url: /auth/login + - button "Open Next.js Dev Tools" [ref=e86] [cursor=pointer]: + - img [ref=e87] \ No newline at end of file diff --git a/.playwright-cli/page-2026-05-28T19-10-46-266Z.yml b/.playwright-cli/page-2026-05-28T19-10-46-266Z.yml new file mode 100644 index 00000000..5fd9fa1c --- /dev/null +++ b/.playwright-cli/page-2026-05-28T19-10-46-266Z.yml @@ -0,0 +1,109 @@ +- generic [active] [ref=e1]: + - main [ref=e2]: + - generic [ref=e3]: + - generic [ref=e4]: + - link [ref=e5] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e6] + - generic [ref=e8]: aPOS POS + - generic [ref=e9]: QA Cafe 282591 + - generic [ref=e10]: + - generic [ref=e11]: Online + - generic [ref=e13]: + - img [ref=e14] + - text: 02:10 + - link [ref=e17] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e18] + - generic [ref=e22]: + - navigation [ref=e23]: + - button "Bán hàng" [ref=e24] [cursor=pointer]: + - img [ref=e25] + - generic [ref=e27]: Bán hàng + - button "Lịch sử" [ref=e28] [cursor=pointer]: + - img [ref=e29] + - generic [ref=e33]: Lịch sử + - button "Dashboard" [ref=e34] [cursor=pointer]: + - img [ref=e35] + - generic [ref=e37]: Dashboard + - button "Cài đặt" [ref=e38] [cursor=pointer]: + - img [ref=e39] + - generic [ref=e42]: Cài đặt + - generic [ref=e43]: + - generic [ref=e44]: + - generic [ref=e45]: + - generic [ref=e46]: + - text: CAFE + - heading "Bán hàng" [level=1] [ref=e47] + - generic [ref=e48]: + - img [ref=e49] + - textbox [ref=e52]: + - /placeholder: SKU, barcode, tên món + - generic [ref=e53]: + - button "Tất cả" [ref=e54] [cursor=pointer] + - button "Coffee" [ref=e55] [cursor=pointer] + - button "Tea" [ref=e56] [cursor=pointer] + - button "Food" [ref=e57] [cursor=pointer] + - generic [ref=e58]: + - button "Americano 45.000 ₫ Tồn 38" [ref=e59] [cursor=pointer]: + - img [ref=e61] + - generic [ref=e63]: Americano + - generic [ref=e64]: 45.000 ₫ + - generic [ref=e65]: Tồn 38 + - button "Latte 59.000 ₫ Tồn 35" [ref=e66] [cursor=pointer]: + - img [ref=e68] + - generic [ref=e70]: Latte + - generic [ref=e71]: 59.000 ₫ + - generic [ref=e72]: Tồn 35 + - button "Peach Tea 52.000 ₫ Tồn 28" [ref=e73] [cursor=pointer]: + - img [ref=e75] + - generic [ref=e77]: Peach Tea + - generic [ref=e78]: 52.000 ₫ + - generic [ref=e79]: Tồn 28 + - button "Croissant 39.000 ₫ Tồn 16" [ref=e80] [cursor=pointer]: + - img [ref=e82] + - generic [ref=e84]: Croissant + - generic [ref=e85]: 39.000 ₫ + - generic [ref=e86]: Tồn 16 + - complementary [ref=e87]: + - generic [ref=e88]: + - generic [ref=e89]: Đơn hàng + - button [ref=e90] [cursor=pointer]: + - img [ref=e91] + - generic [ref=e95]: Chọn món từ thực đơn bên trái + - generic [ref=e96]: + - generic [ref=e97]: + - textbox "Mã voucher" [ref=e98] + - button "Áp dụng" [ref=e99] [cursor=pointer] + - generic [ref=e100]: + - button "Tiền mặt" [ref=e101] [cursor=pointer]: + - img [ref=e102] + - generic [ref=e105]: Tiền mặt + - button "Thẻ" [disabled] [ref=e106]: + - img [ref=e107] + - generic [ref=e109]: Thẻ + - button "QR" [disabled] [ref=e110]: + - img [ref=e111] + - generic [ref=e113]: QR + - button "Chuyển khoản" [disabled] [ref=e114]: + - img [ref=e115] + - generic [ref=e119]: Chuyển khoản + - generic [ref=e120]: + - textbox "Khách đưa" [ref=e121] + - generic [ref=e122]: + - button "20.000 ₫" [ref=e123] [cursor=pointer] + - button "50.000 ₫" [ref=e124] [cursor=pointer] + - generic [ref=e125]: + - generic [ref=e126]: Tạm tính + - generic [ref=e127]: 0 ₫ + - generic [ref=e128]: Giảm giá + - generic [ref=e129]: 0 ₫ + - generic [ref=e130]: Tiền thối + - generic [ref=e131]: 0 ₫ + - strong [ref=e132]: Tổng cộng + - strong [ref=e133]: 0 ₫ + - button "Thanh toán" [disabled] [ref=e134]: + - img [ref=e135] + - text: Thanh toán + - button "Open Next.js Dev Tools" [ref=e142] [cursor=pointer]: + - img [ref=e143] \ No newline at end of file diff --git a/.playwright-cli/page-2026-05-28T19-10-59-296Z.png b/.playwright-cli/page-2026-05-28T19-10-59-296Z.png new file mode 100644 index 0000000000000000000000000000000000000000..060ca5050c123cf23ada9adf9f0b47e4a929a0ce GIT binary patch literal 65310 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 Pg1B}?_j2Jy>pTAfsOhy* literal 0 HcmV?d00001 diff --git a/.playwright-cli/page-2026-05-28T19-11-05-786Z.png b/.playwright-cli/page-2026-05-28T19-11-05-786Z.png new file mode 100644 index 0000000000000000000000000000000000000000..dffff7f07cab2eeb09191b07f0b167e2d27128ad GIT binary patch literal 33001 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

OV0lTQ7g-2Pi?=3EpqJmIBa+fK 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

6ySUUGgm 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

OV0lTQ7g-2Pi?=3EpqJmIBa+fK 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

6ySUUGgm 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

N4})wwoa&b&W}xP@KwF7|pEy}*Nt*-t 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 literal 0 HcmV?d00001 diff --git a/.playwright-cli/page-2026-05-28T19-12-45-599Z.yml b/.playwright-cli/page-2026-05-28T19-12-45-599Z.yml new file mode 100644 index 00000000..b02c6da7 --- /dev/null +++ b/.playwright-cli/page-2026-05-28T19-12-45-599Z.yml @@ -0,0 +1,70 @@ +- generic [ref=e1]: + - main [ref=e2]: + - generic [ref=e3]: + - generic [ref=e4]: + - link [ref=e5] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e6] + - generic [ref=e8]: aPOS POS + - generic [ref=e140]: QA Cafe 282591 + - generic [ref=e9]: + - generic [ref=e141]: Online + - generic [ref=e143]: + - img [ref=e144] + - text: 02:12 + - link [ref=e10] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e11] + - generic [ref=e15]: + - navigation [ref=e16]: + - button "Bán hàng" [ref=e17] [cursor=pointer]: + - img [ref=e18] + - generic [ref=e20]: Bán hàng + - button "Lịch sử" [active] [ref=e21] [cursor=pointer]: + - img [ref=e22] + - generic [ref=e26]: Lịch sử + - button "Dashboard" [ref=e27] [cursor=pointer]: + - img [ref=e28] + - generic [ref=e30]: Dashboard + - button "Cài đặt" [ref=e31] [cursor=pointer]: + - img [ref=e32] + - generic [ref=e35]: Cài đặt + - generic [ref=e147]: + - generic [ref=e148]: + - generic [ref=e149]: + - img [ref=e150] + - textbox [ref=e153]: + - /placeholder: Tìm mã đơn, tên khách... + - generic "Bộ lọc lịch sử" [ref=e154]: + - button "Hôm nay" [ref=e155] [cursor=pointer] + - button "7 ngày" [ref=e156] [cursor=pointer] + - button "30 ngày" [ref=e157] [cursor=pointer] + - button "Tất cả" [ref=e158] [cursor=pointer] + - generic [ref=e159]: + - generic [ref=e160]: 2 đơn + - generic [ref=e161]: 2 đã thu + - strong [ref=e162]: 90.000 ₫ + - generic [ref=e163]: + - button "2DA66543 Đã thanh toán 1 món 45.000 ₫ 01:28 29-05 Tiền mặt" [ref=e164] [cursor=pointer]: + - generic [ref=e165]: + - generic [ref=e166]: 2DA66543 + - generic [ref=e167]: Đã thanh toán + - generic [ref=e168]: + - generic [ref=e169]: 1 món + - strong [ref=e170]: 45.000 ₫ + - generic [ref=e171]: + - generic [ref=e172]: 01:28 29-05 + - generic [ref=e173]: Tiền mặt + - button "BAABBC27 Đã thanh toán 1 món · A1 45.000 ₫ 01:28 29-05 Tiền mặt" [ref=e174] [cursor=pointer]: + - generic [ref=e175]: + - generic [ref=e176]: BAABBC27 + - generic [ref=e177]: Đã thanh toán + - generic [ref=e178]: + - generic [ref=e179]: 1 món · A1 + - strong [ref=e180]: 45.000 ₫ + - generic [ref=e181]: + - generic [ref=e182]: 01:28 29-05 + - generic [ref=e183]: Tiền mặt + - button "Open Next.js Dev Tools" [ref=e135] [cursor=pointer]: + - img [ref=e136] + - alert [ref=e139] \ No newline at end of file diff --git a/.playwright-cli/page-2026-05-28T19-12-52-093Z.png b/.playwright-cli/page-2026-05-28T19-12-52-093Z.png new file mode 100644 index 0000000000000000000000000000000000000000..ab7633de7e4a3fd39e4e0c17ebeeb71f1ba2605c GIT binary patch literal 48242 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 literal 0 HcmV?d00001 diff --git a/.playwright-cli/page-2026-05-28T19-13-01-574Z.yml b/.playwright-cli/page-2026-05-28T19-13-01-574Z.yml new file mode 100644 index 00000000..3ead20c4 --- /dev/null +++ b/.playwright-cli/page-2026-05-28T19-13-01-574Z.yml @@ -0,0 +1,82 @@ +- generic [ref=e1]: + - main [ref=e2]: + - generic [ref=e3]: + - generic [ref=e4]: + - link [ref=e5] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e6] + - generic [ref=e8]: aPOS POS + - generic [ref=e140]: QA Cafe 282591 + - generic [ref=e9]: + - generic [ref=e141]: Online + - generic [ref=e143]: + - img [ref=e144] + - text: 02:13 + - link [ref=e10] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e11] + - generic [ref=e15]: + - navigation [ref=e16]: + - button "Bán hàng" [ref=e17] [cursor=pointer]: + - img [ref=e18] + - generic [ref=e20]: Bán hàng + - button "Lịch sử" [ref=e21] [cursor=pointer]: + - img [ref=e22] + - generic [ref=e26]: Lịch sử + - button "Dashboard" [active] [ref=e27] [cursor=pointer]: + - img [ref=e28] + - generic [ref=e30]: Dashboard + - button "Cài đặt" [ref=e31] [cursor=pointer]: + - img [ref=e32] + - generic [ref=e35]: Cài đặt + - generic [ref=e184]: + - generic [ref=e185]: + - generic [ref=e186]: + - generic [ref=e187]: Dashboard bán hàng + - generic [ref=e188]: 29/05/2026 · Hôm nay + - generic "Khoảng thời gian dashboard" [ref=e189]: + - button "Hôm nay" [ref=e190] [cursor=pointer] + - button "7 ngày" [ref=e191] [cursor=pointer] + - button "30 ngày" [ref=e192] [cursor=pointer] + - generic [ref=e193]: + - generic [ref=e194]: + - generic [ref=e195]: Doanh thu + - strong [ref=e196]: 90.000 ₫ + - generic [ref=e197]: TB 45.000 ₫/đơn + - generic [ref=e198]: + - generic [ref=e199]: Đơn hàng + - strong [ref=e200]: "2" + - generic [ref=e201]: 29/05/2026 · Hôm nay + - generic [ref=e202]: + - generic [ref=e203]: Món bán ra + - strong [ref=e204]: "2" + - generic [ref=e205]: 1.0 món/đơn + - generic [ref=e206]: + - generic [ref=e207]: + - generic [ref=e208]: Món bán chạy + - generic [ref=e210]: + - generic [ref=e211]: Americano + - generic [ref=e212]: 2 đã bán + - generic [ref=e213]: 90.000 ₫ + - generic [ref=e215]: + - generic [ref=e216]: Hình thức thanh toán + - generic [ref=e219]: + - generic [ref=e220]: Tiền mặt + - strong [ref=e221]: 90.000 ₫ + - generic [ref=e224]: Doanh thu theo giờ + - generic [ref=e225]: + - generic [ref=e228]: 08h + - generic [ref=e231]: 09h + - generic [ref=e234]: 10h + - generic [ref=e237]: 11h + - generic [ref=e240]: 12h + - generic [ref=e243]: 13h + - generic [ref=e246]: 14h + - generic [ref=e249]: 15h + - generic [ref=e252]: 16h + - generic [ref=e255]: 17h + - generic [ref=e258]: 18h + - generic [ref=e261]: 19h + - button "Open Next.js Dev Tools" [ref=e135] [cursor=pointer]: + - img [ref=e136] + - alert [ref=e139] \ No newline at end of file diff --git a/.playwright-cli/page-2026-05-28T19-13-07-682Z.png b/.playwright-cli/page-2026-05-28T19-13-07-682Z.png new file mode 100644 index 0000000000000000000000000000000000000000..fc7846ba31b3902756925f2c2675f53305c767d8 GIT binary patch literal 56137 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

>s#OI5y^=ax#^mgUpKUnZNBII6H75 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 C>{-nK literal 0 HcmV?d00001 diff --git a/.playwright-cli/page-2026-05-28T19-14-06-464Z.yml b/.playwright-cli/page-2026-05-28T19-14-06-464Z.yml new file mode 100644 index 00000000..322c9f7f --- /dev/null +++ b/.playwright-cli/page-2026-05-28T19-14-06-464Z.yml @@ -0,0 +1,109 @@ +- generic [active] [ref=e1]: + - main [ref=e2]: + - generic [ref=e3]: + - generic [ref=e4]: + - link [ref=e5] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e6] + - generic [ref=e8]: aPOS POS + - generic [ref=e9]: QA Cafe 282591 + - generic [ref=e10]: + - generic [ref=e11]: Online + - generic [ref=e13]: + - img [ref=e14] + - text: 02:14 + - link [ref=e17] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e18] + - generic [ref=e22]: + - navigation [ref=e23]: + - button "Bán hàng" [ref=e24] [cursor=pointer]: + - img [ref=e25] + - generic [ref=e27]: Bán hàng + - button "Lịch sử" [ref=e28] [cursor=pointer]: + - img [ref=e29] + - generic [ref=e33]: Lịch sử + - button "Dashboard" [ref=e34] [cursor=pointer]: + - img [ref=e35] + - generic [ref=e37]: Dashboard + - button "Cài đặt" [ref=e38] [cursor=pointer]: + - img [ref=e39] + - generic [ref=e42]: Cài đặt + - generic [ref=e43]: + - generic [ref=e44]: + - generic [ref=e45]: + - generic [ref=e46]: + - text: CAFE + - heading "Bán hàng" [level=1] [ref=e47] + - generic [ref=e48]: + - img [ref=e49] + - textbox [ref=e52]: + - /placeholder: SKU, barcode, tên món + - generic [ref=e53]: + - button "Tất cả" [ref=e54] [cursor=pointer] + - button "Coffee" [ref=e55] [cursor=pointer] + - button "Tea" [ref=e56] [cursor=pointer] + - button "Food" [ref=e57] [cursor=pointer] + - generic [ref=e58]: + - button "Americano 45.000 ₫ Tồn 38" [ref=e59] [cursor=pointer]: + - img [ref=e61] + - generic [ref=e63]: Americano + - generic [ref=e64]: 45.000 ₫ + - generic [ref=e65]: Tồn 38 + - button "Latte 59.000 ₫ Tồn 35" [ref=e66] [cursor=pointer]: + - img [ref=e68] + - generic [ref=e70]: Latte + - generic [ref=e71]: 59.000 ₫ + - generic [ref=e72]: Tồn 35 + - button "Peach Tea 52.000 ₫ Tồn 28" [ref=e73] [cursor=pointer]: + - img [ref=e75] + - generic [ref=e77]: Peach Tea + - generic [ref=e78]: 52.000 ₫ + - generic [ref=e79]: Tồn 28 + - button "Croissant 39.000 ₫ Tồn 16" [ref=e80] [cursor=pointer]: + - img [ref=e82] + - generic [ref=e84]: Croissant + - generic [ref=e85]: 39.000 ₫ + - generic [ref=e86]: Tồn 16 + - complementary [ref=e87]: + - generic [ref=e88]: + - generic [ref=e89]: Đơn hàng + - button [ref=e90] [cursor=pointer]: + - img [ref=e91] + - generic [ref=e95]: Chọn món từ thực đơn bên trái + - generic [ref=e96]: + - generic [ref=e97]: + - textbox "Mã voucher" [ref=e98] + - button "Áp dụng" [ref=e99] [cursor=pointer] + - generic [ref=e100]: + - button "Tiền mặt" [ref=e101] [cursor=pointer]: + - img [ref=e102] + - generic [ref=e105]: Tiền mặt + - button "Thẻ" [disabled] [ref=e106]: + - img [ref=e107] + - generic [ref=e109]: Thẻ + - button "QR" [disabled] [ref=e110]: + - img [ref=e111] + - generic [ref=e113]: QR + - button "Chuyển khoản" [disabled] [ref=e114]: + - img [ref=e115] + - generic [ref=e119]: Chuyển khoản + - generic [ref=e120]: + - textbox "Khách đưa" [ref=e121] + - generic [ref=e122]: + - button "20.000 ₫" [ref=e123] [cursor=pointer] + - button "50.000 ₫" [ref=e124] [cursor=pointer] + - generic [ref=e125]: + - generic [ref=e126]: Tạm tính + - generic [ref=e127]: 0 ₫ + - generic [ref=e128]: Giảm giá + - generic [ref=e129]: 0 ₫ + - generic [ref=e130]: Tiền thối + - generic [ref=e131]: 0 ₫ + - strong [ref=e132]: Tổng cộng + - strong [ref=e133]: 0 ₫ + - button "Thanh toán" [disabled] [ref=e134]: + - img [ref=e135] + - text: Thanh toán + - button "Open Next.js Dev Tools" [ref=e142] [cursor=pointer]: + - img [ref=e143] \ No newline at end of file diff --git a/.playwright-cli/page-2026-05-28T19-14-21-926Z.yml b/.playwright-cli/page-2026-05-28T19-14-21-926Z.yml new file mode 100644 index 00000000..0baa73c9 --- /dev/null +++ b/.playwright-cli/page-2026-05-28T19-14-21-926Z.yml @@ -0,0 +1,82 @@ +- generic [ref=e1]: + - main [ref=e2]: + - generic [ref=e3]: + - generic [ref=e4]: + - link [ref=e5] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e6] + - generic [ref=e8]: aPOS POS + - generic [ref=e9]: QA Cafe 282591 + - generic [ref=e10]: + - generic [ref=e11]: Online + - generic [ref=e13]: + - img [ref=e14] + - text: 02:14 + - link [ref=e17] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e18] + - generic [ref=e22]: + - navigation [ref=e23]: + - button "Bán hàng" [ref=e24] [cursor=pointer]: + - img [ref=e25] + - generic [ref=e27]: Bán hàng + - button "Lịch sử" [ref=e28] [cursor=pointer]: + - img [ref=e29] + - generic [ref=e33]: Lịch sử + - button "Dashboard" [active] [ref=e34] [cursor=pointer]: + - img [ref=e35] + - generic [ref=e37]: Dashboard + - button "Cài đặt" [ref=e38] [cursor=pointer]: + - img [ref=e39] + - generic [ref=e42]: Cài đặt + - generic [ref=e147]: + - generic [ref=e148]: + - generic [ref=e149]: + - generic [ref=e150]: Dashboard bán hàng + - generic [ref=e151]: 29/05/2026 · Hôm nay + - generic "Khoảng thời gian dashboard" [ref=e152]: + - button "Hôm nay" [ref=e153] [cursor=pointer] + - button "7 ngày" [ref=e154] [cursor=pointer] + - button "30 ngày" [ref=e155] [cursor=pointer] + - generic [ref=e156]: + - generic [ref=e157]: + - generic [ref=e158]: Doanh thu + - strong [ref=e159]: 90.000 ₫ + - generic [ref=e160]: TB 45.000 ₫/đơn + - generic [ref=e161]: + - generic [ref=e162]: Đơn hàng + - strong [ref=e163]: "2" + - generic [ref=e164]: 29/05/2026 · Hôm nay + - generic [ref=e165]: + - generic [ref=e166]: Món bán ra + - strong [ref=e167]: "2" + - generic [ref=e168]: 1.0 món/đơn + - generic [ref=e169]: + - generic [ref=e170]: + - generic [ref=e171]: Món bán chạy + - generic [ref=e173]: + - generic [ref=e174]: Americano + - generic [ref=e175]: 2 đã bán + - generic [ref=e176]: 90.000 ₫ + - generic [ref=e178]: + - generic [ref=e179]: Hình thức thanh toán + - generic [ref=e182]: + - generic [ref=e183]: Tiền mặt + - strong [ref=e184]: 90.000 ₫ + - generic [ref=e187]: Doanh thu theo giờ + - generic [ref=e188]: + - generic [ref=e191]: 08h + - generic [ref=e194]: 09h + - generic [ref=e197]: 10h + - generic [ref=e200]: 11h + - generic [ref=e203]: 12h + - generic [ref=e206]: 13h + - generic [ref=e209]: 14h + - generic [ref=e212]: 15h + - generic [ref=e215]: 16h + - generic [ref=e218]: 17h + - generic [ref=e221]: 18h + - generic [ref=e224]: 19h + - button "Open Next.js Dev Tools" [ref=e142] [cursor=pointer]: + - img [ref=e143] + - alert [ref=e146] \ No newline at end of file diff --git a/.playwright-cli/page-2026-05-28T19-14-27-483Z.png b/.playwright-cli/page-2026-05-28T19-14-27-483Z.png new file mode 100644 index 0000000000000000000000000000000000000000..c3d214cde7563cd5c473a94492e9b537efbf1244 GIT binary patch literal 56892 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î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 Oc=1$5BJ1({kN*vNDbT|J literal 0 HcmV?d00001 diff --git a/.playwright-cli/page-2026-05-28T19-14-49-053Z.yml b/.playwright-cli/page-2026-05-28T19-14-49-053Z.yml new file mode 100644 index 00000000..f8da87b3 --- /dev/null +++ b/.playwright-cli/page-2026-05-28T19-14-49-053Z.yml @@ -0,0 +1,109 @@ +- generic [active] [ref=e1]: + - main [ref=e2]: + - generic [ref=e3]: + - generic [ref=e4]: + - link [ref=e5] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e6] + - generic [ref=e8]: aPOS POS + - generic [ref=e9]: QA Cafe 282591 + - generic [ref=e10]: + - generic [ref=e11]: Online + - generic [ref=e13]: + - img [ref=e14] + - text: 02:14 + - link [ref=e17] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/overview + - img [ref=e18] + - generic [ref=e22]: + - navigation [ref=e23]: + - button "Bán hàng" [ref=e24] [cursor=pointer]: + - img [ref=e25] + - generic [ref=e27]: Bán hàng + - button "Lịch sử" [ref=e28] [cursor=pointer]: + - img [ref=e29] + - generic [ref=e33]: Lịch sử + - button "Báo cáo" [ref=e34] [cursor=pointer]: + - img [ref=e35] + - generic [ref=e37]: Báo cáo + - button "Cài đặt" [ref=e38] [cursor=pointer]: + - img [ref=e39] + - generic [ref=e42]: Cài đặt + - generic [ref=e43]: + - generic [ref=e44]: + - generic [ref=e45]: + - generic [ref=e46]: + - text: CAFE + - heading "Bán hàng" [level=1] [ref=e47] + - generic [ref=e48]: + - img [ref=e49] + - textbox [ref=e52]: + - /placeholder: SKU, barcode, tên món + - generic [ref=e53]: + - button "Tất cả" [ref=e54] [cursor=pointer] + - button "Coffee" [ref=e55] [cursor=pointer] + - button "Tea" [ref=e56] [cursor=pointer] + - button "Food" [ref=e57] [cursor=pointer] + - generic [ref=e58]: + - button "Americano 45.000 ₫ Tồn 38" [ref=e59] [cursor=pointer]: + - img [ref=e61] + - generic [ref=e63]: Americano + - generic [ref=e64]: 45.000 ₫ + - generic [ref=e65]: Tồn 38 + - button "Latte 59.000 ₫ Tồn 35" [ref=e66] [cursor=pointer]: + - img [ref=e68] + - generic [ref=e70]: Latte + - generic [ref=e71]: 59.000 ₫ + - generic [ref=e72]: Tồn 35 + - button "Peach Tea 52.000 ₫ Tồn 28" [ref=e73] [cursor=pointer]: + - img [ref=e75] + - generic [ref=e77]: Peach Tea + - generic [ref=e78]: 52.000 ₫ + - generic [ref=e79]: Tồn 28 + - button "Croissant 39.000 ₫ Tồn 16" [ref=e80] [cursor=pointer]: + - img [ref=e82] + - generic [ref=e84]: Croissant + - generic [ref=e85]: 39.000 ₫ + - generic [ref=e86]: Tồn 16 + - complementary [ref=e87]: + - generic [ref=e88]: + - generic [ref=e89]: Đơn hàng + - button [ref=e90] [cursor=pointer]: + - img [ref=e91] + - generic [ref=e95]: Chọn món từ thực đơn bên trái + - generic [ref=e96]: + - generic [ref=e97]: + - textbox "Mã voucher" [ref=e98] + - button "Áp dụng" [ref=e99] [cursor=pointer] + - generic [ref=e100]: + - button "Tiền mặt" [ref=e101] [cursor=pointer]: + - img [ref=e102] + - generic [ref=e105]: Tiền mặt + - button "Thẻ" [disabled] [ref=e106]: + - img [ref=e107] + - generic [ref=e109]: Thẻ + - button "QR" [disabled] [ref=e110]: + - img [ref=e111] + - generic [ref=e113]: QR + - button "Chuyển khoản" [disabled] [ref=e114]: + - img [ref=e115] + - generic [ref=e119]: Chuyển khoản + - generic [ref=e120]: + - textbox "Khách đưa" [ref=e121] + - generic [ref=e122]: + - button "20.000 ₫" [ref=e123] [cursor=pointer] + - button "50.000 ₫" [ref=e124] [cursor=pointer] + - generic [ref=e125]: + - generic [ref=e126]: Tạm tính + - generic [ref=e127]: 0 ₫ + - generic [ref=e128]: Giảm giá + - generic [ref=e129]: 0 ₫ + - generic [ref=e130]: Tiền thối + - generic [ref=e131]: 0 ₫ + - strong [ref=e132]: Tổng cộng + - strong [ref=e133]: 0 ₫ + - button "Thanh toán" [disabled] [ref=e134]: + - img [ref=e135] + - text: Thanh toán + - button "Open Next.js Dev Tools" [ref=e142] [cursor=pointer]: + - img [ref=e143] \ No newline at end of file diff --git a/.playwright-cli/page-2026-05-28T19-28-34-740Z.yml b/.playwright-cli/page-2026-05-28T19-28-34-740Z.yml new file mode 100644 index 00000000..ec0ab50f --- /dev/null +++ b/.playwright-cli/page-2026-05-28T19-28-34-740Z.yml @@ -0,0 +1,198 @@ +- generic [active] [ref=e1]: + - main [ref=e2]: + - generic [ref=e3]: + - generic [ref=e4]: + - link [ref=e5] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/cafe + - img [ref=e6] + - generic [ref=e8]: aPOS POS + - generic [ref=e9]: Chọn phương thức + - generic [ref=e11]: Online + - generic [ref=e12]: + - complementary [ref=e13]: + - link "Barista queue" [ref=e14] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/cafe/barista-queue + - img [ref=e15] + - generic [ref=e17]: Barista queue + - link "Stamp card" [ref=e18] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/cafe/loyalty-stamp + - img [ref=e19] + - generic [ref=e23]: Stamp card + - link "Daily report" [ref=e24] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/cafe/daily-report + - img [ref=e25] + - generic [ref=e27]: Daily report + - link "Customer display" [ref=e28] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/cafe/queue-display + - img [ref=e29] + - generic [ref=e31]: Customer display + - link "Menu management" [ref=e32] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/cafe/menu-management + - img [ref=e33] + - generic [ref=e36]: Menu management + - link "Order customize" [ref=e37] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/cafe/order-customize + - img [ref=e38] + - generic [ref=e41]: Order customize + - link "Milk foam options" [ref=e42] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/cafe/milk-foam-options + - img [ref=e43] + - generic [ref=e45]: Milk foam options + - link "Cafe journey" [ref=e46] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/cafe/cafe-journey + - img [ref=e47] + - generic [ref=e50]: Cafe journey + - link "Chọn phương thức" [ref=e51] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/payment/method-select?vertical=cafe + - img [ref=e52] + - generic [ref=e54]: Chọn phương thức + - link "Thanh toán tiền mặt" [ref=e55] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/payment/cash?vertical=cafe + - img [ref=e56] + - generic [ref=e58]: Thanh toán tiền mặt + - link "Thanh toán thẻ" [ref=e59] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/payment/card?vertical=cafe + - img [ref=e60] + - generic [ref=e62]: Thanh toán thẻ + - link "Thanh toán QR" [ref=e63] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/payment/qr?vertical=cafe + - img [ref=e64] + - generic [ref=e66]: Thanh toán QR + - link "Chuyển khoản" [ref=e67] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/payment/bank-transfer?vertical=cafe + - img [ref=e68] + - generic [ref=e71]: Chuyển khoản + - link "Gift card" [ref=e72] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/payment/gift-card?vertical=cafe + - img [ref=e73] + - generic [ref=e77]: Gift card + - link "Thanh toán một phần" [ref=e78] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/payment/partial?vertical=cafe + - img [ref=e79] + - generic [ref=e81]: Thanh toán một phần + - link "Chờ thanh toán" [ref=e82] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/payment/pending?vertical=cafe + - img [ref=e83] + - generic [ref=e86]: Chờ thanh toán + - link "Thanh toán thành công" [ref=e87] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/payment/success?vertical=cafe + - img [ref=e88] + - generic [ref=e91]: Thanh toán thành công + - link "Sửa đơn" [ref=e92] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/dialog/order-edit?vertical=cafe + - img [ref=e93] + - generic [ref=e96]: Sửa đơn + - link "Giảm giá" [ref=e97] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/dialog/discount?vertical=cafe + - img [ref=e98] + - generic [ref=e101]: Giảm giá + - link "Chọn khách hàng" [ref=e102] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/dialog/customer?vertical=cafe + - img [ref=e103] + - generic [ref=e105]: Chọn khách hàng + - link "Chuyển bàn/phòng" [ref=e106] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/dialog/table-transfer?vertical=cafe + - img [ref=e107] + - generic [ref=e109]: Chuyển bàn/phòng + - link "Kiểm kho" [ref=e110] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/dialog/stock-out?vertical=cafe + - img [ref=e111] + - generic [ref=e114]: Kiểm kho + - link "Tra SKU/giá" [ref=e115] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/dialog/price-check?vertical=cafe + - img [ref=e116] + - generic [ref=e120]: Tra SKU/giá + - link "Cash drawer" [ref=e121] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/operations/cash-drawer?vertical=cafe + - img [ref=e122] + - generic [ref=e124]: Cash drawer + - link "Shift management" [ref=e125] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/operations/shift?vertical=cafe + - img [ref=e126] + - generic [ref=e130]: Shift management + - link "Pending orders" [ref=e131] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/operations/pending-orders?vertical=cafe + - img [ref=e132] + - generic [ref=e135]: Pending orders + - link "Quick sale" [ref=e136] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/operations/quick-sale?vertical=cafe + - img [ref=e137] + - generic [ref=e139]: Quick sale + - link "Split bill" [ref=e140] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/dialog/split-bill?vertical=cafe + - img [ref=e141] + - generic [ref=e143]: Split bill + - link "Void/refund" [ref=e144] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/dialog/void-refund?vertical=cafe + - img [ref=e145] + - generic [ref=e148]: Void/refund + - link "Tablet POS" [ref=e149] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/cafe/tablet + - img [ref=e150] + - generic [ref=e152]: Tablet POS + - link "Mobile POS" [ref=e153] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/cafe/mobile + - img [ref=e154] + - generic [ref=e156]: Mobile POS + - generic [ref=e157]: + - generic [ref=e158]: + - img [ref=e159] + - generic [ref=e161]: + - generic [ref=e162]: CAFE WORKFLOW + - heading "Chọn phương thức" [level=1] [ref=e163] + - paragraph [ref=e164]: Chọn tiền mặt, thẻ, QR, chuyển khoản hoặc gift card. + - generic [ref=e165]: "Context ID: 2da66543-583f-45e4-b85e-cab8c3b50faa" + - generic [ref=e166]: + - article [ref=e167]: + - generic [ref=e168]: Catalog service + - strong [ref=e169]: "4" + - generic [ref=e170]: Sản phẩm + - article [ref=e171]: + - generic [ref=e172]: FnB service + - strong [ref=e173]: "4" + - generic [ref=e174]: Bàn/phòng + - article [ref=e175]: + - generic [ref=e176]: Order service + - strong [ref=e177]: "2" + - generic [ref=e178]: Đơn hàng + - article [ref=e179]: + - generic [ref=e180]: Payment ledger + - strong [ref=e181]: 90.000 ₫ + - generic [ref=e182]: Doanh thu + - generic [ref=e183]: + - generic [ref=e184]: + - text: PAYMENT CONTEXT + - heading "Đơn 2DA66543" [level=2] [ref=e185] + - paragraph [ref=e186]: 1 món · Paid · 45.000 ₫ + - link "Xem đơn hàng" [ref=e187] [cursor=pointer]: + - /url: /admin/shop/8d99d966-883e-4806-b247-ee940e6a779c/reports + - generic [ref=e188]: + - generic [ref=e189]: + - text: CHỌN PHƯƠNG THỨC + - heading "Thanh toán đơn 2DA66543" [level=2] [ref=e190] + - paragraph [ref=e191]: Tổng cần thu 45.000 ₫ + - generic [ref=e192]: + - link "Tiền mặt" [ref=e193] [cursor=pointer]: + - /url: /pos/8d99d966-883e-4806-b247-ee940e6a779c/payment/cash?vertical=cafe&orderId=2da66543-583f-45e4-b85e-cab8c3b50faa + - img [ref=e194] + - generic [ref=e197]: Tiền mặt + - button "Thẻ" [disabled] [ref=e198]: + - img [ref=e199] + - generic [ref=e201]: Thẻ + - button "QR" [disabled] [ref=e202]: + - img [ref=e203] + - generic [ref=e205]: QR + - button "Chuyển khoản" [disabled] [ref=e206]: + - img [ref=e207] + - generic [ref=e211]: Chuyển khoản + - generic [ref=e212]: + - article [ref=e213]: + - strong [ref=e214]: 2DA66543 + - generic [ref=e215]: 1 món · Paid + - generic [ref=e216]: 45.000 ₫ + - article [ref=e217]: + - strong [ref=e218]: Bàn/phòng A1 + - generic [ref=e219]: 1 món · Paid + - generic [ref=e220]: 45.000 ₫ + - button "Open Next.js Dev Tools" [ref=e226] [cursor=pointer]: + - img [ref=e227] \ No newline at end of file diff --git a/.playwright-cli/page-2026-05-28T19-28-51-151Z.png b/.playwright-cli/page-2026-05-28T19-28-51-151Z.png new file mode 100644 index 0000000000000000000000000000000000000000..7ed43a3eab1c190e1520944384ab986748342842 GIT binary patch literal 108143 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 literal 0 HcmV?d00001 diff --git a/.playwright-cli/page-2026-05-28T20-44-31-612Z.yml b/.playwright-cli/page-2026-05-28T20-44-31-612Z.yml new file mode 100644 index 00000000..c3cd89dc --- /dev/null +++ b/.playwright-cli/page-2026-05-28T20-44-31-612Z.yml @@ -0,0 +1,45 @@ +- generic [active] [ref=e1]: + - navigation [ref=e2]: + - link "aPOS" [ref=e3] [cursor=pointer]: + - /url: / + - generic [ref=e4]: + - link "Tính năng" [ref=e5] [cursor=pointer]: + - /url: /#features + - link "Bảng giá" [ref=e6] [cursor=pointer]: + - /url: /project#pricing + - link "Đăng nhập" [ref=e7] [cursor=pointer]: + - /url: /auth/login + - link "Dùng thử miễn phí" [ref=e8] [cursor=pointer]: + - /url: /register + - main [ref=e9]: + - generic [ref=e10]: + - generic [ref=e11]: + - generic [ref=e12]: + - img [ref=e13] + - text: QUẢN TRỊ + - heading "Đăng nhập Admin" [level=2] [ref=e16] + - paragraph [ref=e17]: Truy cập hệ thống quản trị aPOS + - generic [ref=e18]: + - img [ref=e19] + - generic [ref=e22]: Khu vực bảo mật cao + - generic [ref=e23]: + - generic [ref=e24]: Email quản trị viên + - generic [ref=e25]: + - img [ref=e26] + - textbox "Email quản trị viên" [ref=e29] + - generic [ref=e30]: + - generic [ref=e31]: Mật khẩu + - generic [ref=e32]: + - img [ref=e33] + - textbox "Mật khẩu" [ref=e36] + - button "Đăng nhập bảo mật" [ref=e37] [cursor=pointer]: + - generic [ref=e38]: Đăng nhập bảo mật + - img [ref=e39] + - generic [ref=e41]: + - link "Chi nhánh" [ref=e42] [cursor=pointer]: + - /url: /auth/login/branch + - link "Nhân viên" [ref=e43] [cursor=pointer]: + - /url: /auth/login/staff + - button "Open Next.js Dev Tools" [ref=e49] [cursor=pointer]: + - img [ref=e50] + - alert [ref=e53] \ No newline at end of file diff --git a/microservices/apps/tpos-mvp-next/src/app/admin/[...path]/page.tsx b/microservices/apps/tpos-mvp-next/src/app/admin/[...path]/page.tsx index 5246ccd7..4d3f128b 100644 --- a/microservices/apps/tpos-mvp-next/src/app/admin/[...path]/page.tsx +++ b/microservices/apps/tpos-mvp-next/src/app/admin/[...path]/page.tsx @@ -1,11 +1,14 @@ import { notFound, redirect } from "next/navigation"; import { + AdminSectionView, AdminNotFoundView, + ShopFinanceView, + ShopHistoryView, ShopOverviewView, StoreCreateWizard, StoreListView } from "@/components/admin/AdminReferenceViews"; -import { TposPortal, buildPortalPayload } from "@/components/TposPortal"; +import { filterPortalShops, requirePortalRole } from "@/server/auth/portal"; import { getDashboardStats } from "@/server/db/queries"; import { getShopService, getShopStatsService, listShopsService } from "@/server/services/shop"; import { listCatalogCategoriesByShop, listCatalogProductsByShop } from "@/server/services/catalog"; @@ -32,6 +35,8 @@ import { listStaff, listTherapists, listUsers, + listWallets, + listWalletTransactions, reportRevenue, reportTopProducts } from "@/server/services/parity"; @@ -42,6 +47,7 @@ export const dynamic = "force-dynamic"; export default async function AdminCatchAllPage({ params }: { params: Promise<{ path?: string[] }> }) { const path = (await params).path ?? []; + const user = await requirePortalRole(["admin"], `/admin/${path.join("/")}`, path[0] === "shop" || path[0] === "store" ? path[1] : null); if (path[0] === "store" && path[1]) { if (path.length !== 3 || path[2] !== "stock") notFound(); redirect(`/admin/shop/${path[1]}/${path[2] === "stock" ? "inventory" : path.slice(2).join("/") || "overview"}`); @@ -54,7 +60,9 @@ export default async function AdminCatchAllPage({ params }: { params: Promise<{ if (path[0] === "stores" && !path[1]) { const [shops, shopStats] = await Promise.all([listShopsService(), getShopStatsService()]); - return ; + const visibleShops = filterPortalShops(user, shops); + const visibleIds = new Set(visibleShops.map((item) => item.id)); + return visibleIds.has(item.shopId))} />; } const isShopRoute = path[0] === "shop"; @@ -64,7 +72,8 @@ export default async function AdminCatchAllPage({ params }: { params: Promise<{ return ; } const scopedShop = isShopRoute || path.length === 0 ? shop : null; - const stats = await getDashboardStats(scopedShop?.id); + const allowedShopIds = allowedShopIdsForUser(user); + const stats = await getAdminScopedStats(scopedShop?.id, allowedShopIds); const section = isShopRoute ? path.slice(2).join("/") || "overview" : path.join("/") || "dashboard"; if (!isKnownAdminSection(section, isShopRoute ? shop : null)) notFound(); @@ -75,36 +84,59 @@ export default async function AdminCatchAllPage({ params }: { params: Promise<{ if (isShopRoute && section === "overview" && shop) { const [overviewStats, orders, products, tables, staff, appointments] = await Promise.all([ getDashboardStats(shop.id), - listOrdersService({ shopId: shop.id, page: 1, pageSize: 24, filter: "all" }), + listOrdersService({ shopId: shop.id, page: 1, pageSize: 500, filter: "all" }), listCatalogProductsByShop(shop.id), listTablesByShop(shop.id), listStaff(shop.id), listAppointments(shop.id) ]); - return ; + return [0]["payload"]["appointments"] }} />; } - const items = await loadItems(section, isShopRoute ? shop : null); + if (isShopRoute && (section === "history" || section === "orders") && shop) { + const orders = await listOrdersService({ shopId: shop.id, page: 1, pageSize: 500, filter: "all" }); + return ; + } - return ( - - ); + if (isShopRoute && section === "finance" && shop) { + const [orders, wallets, walletTransactions, revenueRows, topProducts] = await Promise.all([ + listOrdersService({ shopId: shop.id, page: 1, pageSize: 500, filter: "all" }), + listWallets(user.id), + listWalletTransactions(user.id, 25), + scopedRevenueRows(shop.id, allowedShopIds), + scopedTopProductRows(shop.id, allowedShopIds) + ]); + return [0]["payload"]["wallets"], + walletTransactions: walletTransactions as unknown as Parameters[0]["payload"]["walletTransactions"], + revenueRows: revenueRows as unknown as Parameters[0]["payload"]["revenueRows"], + topProducts: topProducts as unknown as Parameters[0]["payload"]["topProducts"] + }} />; + } + + const items = await loadItems(section, isShopRoute ? shop : null, allowedShopIds); + + return ; } -async function loadItems(section: string, shop?: Shop | null) { +async function loadItems(section: string, shop?: Shop | null, allowedShopIds?: string[] | null) { const shopId = shop?.id; + if (section === "dashboard") { + const [shops, stats] = await Promise.all([listShopsService(), getShopStatsService()]); + const visible = shops.filter((item) => allowedShopIds == null || allowedShopIds.includes(item.id)); + const visibleIds = new Set(visible.map((item) => item.id)); + return [ + ...visible.map((item) => ({ title: item.name, meta: item.category, value: item.status, href: `/admin/shop/${item.id}/overview` })), + ...stats.filter((item) => visibleIds.has(item.shopId)).map((item) => ({ title: `Doanh thu ${item.shopId.slice(0, 8)}`, meta: `${item.todayOrderCount} đơn hôm nay`, value: formatMoney(item.monthRevenue) })) + ]; + } if (section === "stores") { const shops = await listShopsService(); - return shops.map((item) => ({ title: item.name, meta: item.category, value: item.status, href: `/admin/shop/${item.id}/overview` })); + return shops + .filter((item) => allowedShopIds == null || allowedShopIds.includes(item.id)) + .map((item) => ({ title: item.name, meta: item.category, value: item.status, href: `/admin/shop/${item.id}/overview` })); } if (section === "system/audit") { const logs = await auditLogs(24); @@ -115,6 +147,14 @@ async function loadItems(section: string, shop?: Shop | null) { })); } if (section === "users") { + if (shopId || allowedShopIds !== null) { + const staff = await scopedStaffRows(shopId, allowedShopIds); + return staff.map((item) => ({ + title: `${item.first_name ?? "Nhân viên"} ${item.last_name ?? ""}`.trim(), + meta: String(item.email ?? item.phone ?? item.employee_code ?? "Staff"), + value: String(item.role ?? item.status ?? "active") + })); + } const users = await listUsers(); return users.map((user) => ({ title: String(user.displayName), @@ -126,6 +166,21 @@ async function loadItems(section: string, shop?: Shop | null) { const roles = await listRoles(); return roles.map((role) => ({ title: role.name, meta: role.portal, value: role.code })); } + if (section === "settings" && shop) { + const hours = shop.openTime && shop.closeTime ? `${shop.openTime} - ${shop.closeTime}` : "Chưa cấu hình"; + const activeDays = shop.activeDays?.length ? shop.activeDays.join(", ") : "Chưa cấu hình"; + const address = [shop.address, shop.district, shop.city].filter(Boolean).join(", ") || "Chưa cấu hình"; + return [ + { title: shop.name, meta: shop.email ?? shop.phone ?? "Chưa có liên hệ", value: shop.status }, + { title: "Ngành vận hành", meta: shop.category, value: normalizeVertical(shop.vertical), href: `/pos/${shop.id}/${normalizeVertical(shop.vertical)}` }, + { title: "Địa chỉ", meta: address, value: "Location" }, + { title: "Giờ mở cửa", meta: `${hours} · ${activeDays}`, value: "Store hours" }, + { title: "Tính năng ngành", meta: "QR ordering, POS terminal, kitchen/barista, inventory", value: "Enabled" }, + { title: "Mẫu hóa đơn", meta: "Logo, footer, thuế/phí, phiếu bếp", value: "Template", href: `/admin/shop/${shop.id}/receipt-templates` }, + { title: "AI assistant", meta: "Provider, system prompt, local tool calls", value: "Config", href: `/admin/shop/${shop.id}/ai-chat` }, + { title: "Menu khách hàng", meta: "QR ordering", value: "Public", href: `/menu/${shop.id}` } + ]; + } if (section === "settings") { return [ { title: "Cài đặt hệ thống", meta: "Thông tin tài khoản, gói dịch vụ và thông báo", value: "Admin" }, @@ -146,17 +201,6 @@ async function loadItems(section: string, shop?: Shop | null) { { title: "Social", meta: "Facebook, Zalo, WhatsApp, X", value: "Env required" } ]; } - if (section === "settings" && shop) { - return [ - { title: shop.name, meta: shop.email ?? shop.phone ?? "Chưa có liên hệ", value: shop.status }, - { title: "Ngành vận hành", meta: shop.category, value: normalizeVertical(shop.vertical), href: `/pos/${shop.id}/${normalizeVertical(shop.vertical)}` }, - { title: "Giờ mở cửa", meta: "08:00 - 22:00 · tất cả ngày bán", value: "Store hours" }, - { title: "Tính năng ngành", meta: "QR ordering, POS terminal, kitchen/barista, inventory", value: "Enabled" }, - { title: "Mẫu hóa đơn", meta: "Logo, footer, thuế/phí, phiếu bếp", value: "Template", href: `/admin/shop/${shop.id}/receipt-templates` }, - { title: "AI assistant", meta: "Provider, system prompt, local tool calls", value: "Config", href: `/admin/shop/${shop.id}/ai-chat` }, - { title: "Menu khách hàng", meta: "QR ordering", value: "Public", href: `/menu/${shop.id}` } - ]; - } if (section === "qr-codes" && shopId) { const tables = await listTablesByShop(shopId); return tables.map((table) => ({ @@ -185,6 +229,15 @@ async function loadItems(section: string, shop?: Shop | null) { const tables = await listTablesByShop(shopId); return tables.map((table) => ({ title: `${section === "rooms" ? "Phòng" : "Bàn"} ${table.tableNumber}`, meta: `${table.zone ?? "Khu chính"} · ${table.capacity} chỗ`, value: table.status, href: `/admin/shop/${shopId}/${section}` })); } + if ((section === "history" || section === "orders") && shopId) { + const orders = await listOrdersService({ shopId, page: 1, pageSize: 100, filter: "all" }); + return orders.items.map((order) => ({ + title: `#${order.id.slice(0, 8).toUpperCase()}`, + meta: `${order.itemCount} món · ${new Date(order.createdAt).toLocaleString("vi-VN")}`, + value: formatMoney(order.totalAmount), + href: `/pos/${shopId}/${normalizeVertical(shop?.vertical)}?tab=history` + })); + } if (section === "zones" && shopId) { const tables = await listTablesByShop(shopId); const zones = new Map(); @@ -230,9 +283,8 @@ async function loadItems(section: string, shop?: Shop | null) { return members.map((member) => ({ title: String(member.display_name ?? "Khách hàng"), meta: String(member.phone ?? member.level_name ?? ""), value: `Level ${member.current_level}` })); } if (section === "promotions" || section === "happy-hour") { - const campaigns = await listCampaigns(); + const campaigns = await listCampaigns(shopId); return campaigns - .filter((item) => !shopId || String(item.shop_id ?? "") === shopId) .map((item) => ({ title: String(item.name), meta: String(item.description ?? "Campaign"), value: String(item.status) })); } if (section === "appointments" || section === "spa/appointments") { @@ -248,19 +300,35 @@ async function loadItems(section: string, shop?: Shop | null) { return resources.map((item) => ({ title: String(item.name), meta: String(item.resource_type ?? "resource"), value: `${item.capacity ?? 1}` })); } if (section === "finance" && shopId) { - const [revenue, products] = await Promise.all([reportRevenue(shopId), reportTopProducts(shopId)]); + const [revenue, products] = await Promise.all([scopedRevenueRows(shopId, allowedShopIds), scopedTopProductRows(shopId, allowedShopIds)]); return [ ...revenue.slice(0, 6).map((row) => ({ title: String(row.day), meta: `${row.order_count} đơn`, value: formatMoney(Number(row.revenue ?? 0)) })), ...products.slice(0, 6).map((row) => ({ title: String(row.product_name), meta: `${row.quantity_sold ?? 0} bán`, value: formatMoney(Number(row.revenue ?? 0)) })) ]; } - if (section === "reports" || section === "reports/eod") { - const [revenue, products] = await Promise.all([reportRevenue(shopId), reportTopProducts(shopId)]); + if (section === "reports" || section === "reports/eod" || section === "reports/revenue") { + const [revenue, products] = await Promise.all([scopedRevenueRows(shopId, allowedShopIds), scopedTopProductRows(shopId, allowedShopIds)]); return [ ...revenue.slice(0, 8).map((row) => ({ title: String(row.day), meta: `${row.order_count} đơn`, value: formatMoney(Number(row.revenue ?? 0)) })), ...products.slice(0, 6).map((row) => ({ title: String(row.product_name), meta: `${row.quantity_sold ?? 0} bán`, value: formatMoney(Number(row.revenue ?? 0)) })) ]; } + if (section === "reports/staff") { + const staff = await scopedStaffRows(shopId, allowedShopIds); + return staff.map((item) => ({ title: `${item.first_name ?? "Nhân viên"} ${item.last_name ?? ""}`, meta: String(item.employee_code ?? item.role ?? "Staff"), value: String(item.status ?? "active") })); + } + if (section.startsWith("onboarding/")) { + return onboardingItems(section); + } + if (section === "spa/therapists") { + const shops = await listShopsService(); + const scopedShops = shops.filter((item) => (allowedShopIds == null || allowedShopIds.includes(item.id)) && normalizeVertical(item.vertical) === "spa"); + const rows = (await Promise.all(scopedShops.map(async (item) => { + const therapists = await listTherapists(item.id); + return therapists.map((therapist) => ({ title: String(therapist.name), meta: `${item.name} · ${String(therapist.specialty ?? "Therapist")}`, value: String(therapist.status ?? "active") })); + }))).flat(); + return rows.length ? rows : [{ title: "Chưa có therapist", meta: "Thêm nhân sự spa trong từng cửa hàng", value: "Empty" }]; + } if (section === "returns") { return [ { title: "Đổi hàng", meta: "Kiểm bill gốc, tồn kho và bù trừ", value: "Ready" }, @@ -280,7 +348,7 @@ async function loadItems(section: string, shop?: Shop | null) { ]; } if (section === "drive" && shopId) { - const [files, folders] = await Promise.all([listFiles(shopId), listFolders()]); + const [files, folders] = await Promise.all([listFiles(shopId), listFolders(shopId)]); return [ ...folders.map((folder) => ({ title: String(folder.name), meta: "Thư mục", value: "Folder" })), ...files.map((file) => ({ title: String(file.file_name), meta: String(file.content_type ?? "file"), value: `${Math.round(Number(file.byte_size ?? 0) / 1024)} KB` })) @@ -322,6 +390,8 @@ function adminTitle(section: string) { kitchen: "Bếp", recipes: "Công thức", shifts: "Ca bán", + history: "Lịch sử đơn", + orders: "Lịch sử đơn", finance: "Tài chính", staff: "Nhân sự", attendance: "Điểm danh", @@ -355,6 +425,45 @@ function normalizeVertical(value?: string | null) { return value === "restaurant" || value === "karaoke" || value === "spa" || value === "beauty" || value === "retail" ? value : "cafe"; } +function allowedShopIdsForUser(user: Awaited>) { + return user.roles.some((role) => role.code === "superadmin") ? null : user.roles.map((role) => role.shop_id).filter(Boolean) as string[]; +} + +async function getAdminScopedStats(shopId?: string | null, allowedShopIds?: string[] | null) { + if (shopId || allowedShopIds == null) return getDashboardStats(shopId); + if (allowedShopIds.length === 0) { + return { + shopCount: 0, + activeShopCount: 0, + productCount: 0, + orderCount: 0, + todayRevenue: 0, + monthRevenue: 0, + lowStockCount: 0, + tableCount: 0, + recentOrders: [], + lowStock: [] + }; + } + + const [shops, shopStats] = await Promise.all([listShopsService(), getShopStatsService()]); + const allowed = new Set(allowedShopIds); + const visibleShops = shops.filter((item) => allowed.has(item.id)); + const visibleStats = shopStats.filter((item) => allowed.has(item.shopId)); + return { + shopCount: visibleShops.length, + activeShopCount: visibleShops.filter((item) => item.statusId === 2 || item.status.toLowerCase() === "active").length, + productCount: visibleStats.reduce((sum, item) => sum + item.productCount, 0), + orderCount: visibleStats.reduce((sum, item) => sum + item.orderCount, 0), + todayRevenue: visibleStats.reduce((sum, item) => sum + item.revenue, 0), + monthRevenue: visibleStats.reduce((sum, item) => sum + item.monthRevenue, 0), + lowStockCount: 0, + tableCount: 0, + recentOrders: [], + lowStock: [] + }; +} + function isKnownAdminSection(section: string, shop?: Shop | null) { if (shop) { const vertical = normalizeVertical(shop.vertical) as VerticalKind; @@ -363,6 +472,8 @@ function isKnownAdminSection(section: string, shop?: Shop | null) { "products", "combos", "doctors", + "history", + "orders", "qr-codes" ]); return sidebarSections.has(section as never) || dataSections.has(section); @@ -386,6 +497,45 @@ function isKnownAdminSection(section: string, shop?: Shop | null) { return globalSections.has(section); } +async function scopedRevenueRows(shopId?: string | null, allowedShopIds?: string[] | null) { + if (shopId) return reportRevenue(shopId); + if (allowedShopIds == null) return reportRevenue(null); + if (allowedShopIds.length === 0) return []; + return (await Promise.all(allowedShopIds.map((id) => reportRevenue(id)))).flat(); +} + +async function scopedTopProductRows(shopId?: string | null, allowedShopIds?: string[] | null) { + if (shopId) return reportTopProducts(shopId); + if (allowedShopIds == null) return reportTopProducts(null); + if (allowedShopIds.length === 0) return []; + return (await Promise.all(allowedShopIds.map((id) => reportTopProducts(id)))).flat(); +} + +async function scopedStaffRows(shopId?: string | null, allowedShopIds?: string[] | null) { + if (shopId) return listStaff(shopId); + if (allowedShopIds == null) return listStaff(null); + if (allowedShopIds.length === 0) return []; + return (await Promise.all(allowedShopIds.map((id) => listStaff(id)))).flat(); +} + +function onboardingItems(section: string) { + const steps = [ + ["onboarding/business", "Thông tin doanh nghiệp", "Tên pháp lý, MST, ngành kinh doanh"], + ["onboarding/store", "Cửa hàng đầu tiên", "Địa chỉ, giờ mở cửa và cấu hình ngành"], + ["onboarding/products", "Menu & sản phẩm", "Danh mục, giá bán và tồn đầu kỳ"], + ["onboarding/staff", "Nhân sự", "Tài khoản staff, ca làm và phân quyền"], + ["onboarding/device", "Thiết bị", "POS terminal, máy in, KDS và QR ordering"], + ["onboarding/ready", "Sẵn sàng vận hành", "Mở POS, test đơn hàng và bàn giao"] + ]; + const currentIndex = Math.max(0, steps.findIndex(([slug]) => slug === section)); + return steps.map(([slug, title, meta], index) => ({ + title, + meta, + value: index < currentIndex ? "Done" : index === currentIndex ? "Current" : "Next", + href: `/admin/${slug}` + })); +} + function formatMoney(value: number) { return new Intl.NumberFormat("vi-VN", { style: "currency", currency: "VND", maximumFractionDigits: 0 }).format(value); } diff --git a/microservices/apps/tpos-mvp-next/src/app/admin/page.tsx b/microservices/apps/tpos-mvp-next/src/app/admin/page.tsx index 5444dae6..5af5fd17 100644 --- a/microservices/apps/tpos-mvp-next/src/app/admin/page.tsx +++ b/microservices/apps/tpos-mvp-next/src/app/admin/page.tsx @@ -1,11 +1,15 @@ import { AdminDashboardView } from "@/components/admin/AdminReferenceViews"; +import { filterPortalShops, requirePortalRole } from "@/server/auth/portal"; import { getShopStatsService, listShopsService } from "@/server/services/shop"; export const dynamic = "force-dynamic"; export default async function AdminPage() { + const user = await requirePortalRole(["admin"], "/admin"); const [shops, shopStats] = await Promise.all([listShopsService(), getShopStatsService()]); - return ; + const visibleShops = filterPortalShops(user, shops); + const visibleIds = new Set(visibleShops.map((shop) => shop.id)); + return visibleIds.has(stat.shopId))} serviceHealth={defaultServiceHealth()} />; } function defaultServiceHealth() { diff --git a/microservices/apps/tpos-mvp-next/src/app/api/bff/[...path]/route.ts b/microservices/apps/tpos-mvp-next/src/app/api/bff/[...path]/route.ts index 678d503a..9eef3b02 100644 --- a/microservices/apps/tpos-mvp-next/src/app/api/bff/[...path]/route.ts +++ b/microservices/apps/tpos-mvp-next/src/app/api/bff/[...path]/route.ts @@ -15,6 +15,7 @@ import { } from "@/server/services/catalog"; import { createTableService, + getTable, getTableFromToken, listTablesByShop, removeTableService, @@ -54,6 +55,7 @@ import { } from "@/server/services/shop"; import { addExperience, + assignUserShopRole, auditLogs, baristaStats, checkIn, @@ -69,17 +71,24 @@ import { createStaff, deleteFileRecord, deleteFolder, - deleteMember, - deleteStaff, - getCampaign, - getFileRecord, - getAiConfig, - getAttendance, + deleteMember, + deleteStaff, + getAppointment, + getBaristaQueueItem, + getCampaign, + getFileRecord, + getFolder, + getAiConfig, + getAttendance, + getKitchenTicket, + getLeaveRequest, getMember, - getMemberProgress, - getMembershipLevel, + getMemberProgress, + getMembershipLevel, + getReservation, getSessionUser, getStaff, + getVoucher, getStaffProfile, listAppointments, listBaristaQueue, @@ -110,7 +119,6 @@ import { publicMenu, publicShop, registerUser, - requestPasswordReset, resetPassword, revokeVoucher, platformStats, @@ -138,8 +146,10 @@ import { import { buildS3ObjectKey, callConfiguredAi, + deleteS3Object, providerCredentialStatus, publishSocial, + s3DeleteConfigStatus, uploadS3Object } from "@/server/integrations/external"; import { fail, ok } from "@/server/shared/api"; @@ -212,10 +222,23 @@ function canAccessShop(user: Awaited>, shopId?: s if (!shopId) return true; return Boolean(user?.roles?.some((role) => role.code === "superadmin" || - ((role.code === "admin" || role.code === "staff") && role.shop_id === shopId) + ((role.code === "admin" || role.code === "staff" || role.code === "marketing") && role.shop_id === shopId) )); } +function canAccessShopAs(user: Awaited>, shopId: string | null | undefined, roles: string[]) { + if (!shopId) return false; + return Boolean(user?.roles?.some((role) => role.code === "superadmin" || (roles.includes(String(role.code)) && role.shop_id === shopId))); +} + +function allowedShopIds(user: Awaited>) { + if (hasAnyRole(user, ["superadmin"])) return null; + return new Set((user?.roles ?? []) + .filter((role) => role.code === "admin" || role.code === "staff" || role.code === "marketing") + .map((role) => stringValue(role.shop_id)) + .filter((value): value is string => Boolean(value))); +} + async function requireRoles(roles: string[]) { const user = await currentUser(); if (!user) return { status: 401, message: "Authentication required" }; @@ -230,6 +253,44 @@ async function requireShopAccess(shopId?: string | null) { return canAccessShop(user, shopId) ? null : { status: 403, message: "Shop access required" }; } +async function requireShopAdminAccess(shopId?: string | null) { + if (!shopId) return { status: 400, message: "shopId is required" }; + const roleDenied = await requireRoles(["admin"]); + if (roleDenied) return roleDenied; + return requireShopAccess(shopId); +} + +async function requireShopRoleAccess(shopId: string | null | undefined, roles: string[]) { + if (!shopId) return { status: 400, message: "shopId is required" }; + const user = await currentUser(); + if (!user) return { status: 401, message: "Authentication required" }; + return canAccessShopAs(user, shopId, roles) ? null : { status: 403, message: "Shop role required" }; +} + +function recordShopId(record: unknown) { + if (!record || typeof record !== "object") return null; + const scoped = record as { shopId?: unknown; shop_id?: unknown }; + return stringValue(scoped.shopId) ?? stringValue(scoped.shop_id); +} + +async function requireRecordShopAccess(record: unknown, requestedShopId?: string | null) { + const shopId = recordShopId(record); + if (!shopId) return { status: 403, message: "Shop scope is required" }; + if (requestedShopId && requestedShopId !== shopId) return { status: 404, message: "Resource not found in shop" }; + return requireShopAccess(shopId); +} + +async function requireRecordShopRoleAccess(record: unknown, roles: string[], requestedShopId?: string | null) { + const shopId = recordShopId(record); + if (!shopId) return { status: 403, message: "Shop scope is required" }; + if (requestedShopId && requestedShopId !== shopId) return { status: 404, message: "Resource not found in shop" }; + return requireShopRoleAccess(shopId, roles); +} + +function requestShopId(body: Record, url: URL) { + return stringValue(body.shopId) ?? stringValue(body.shop_id) ?? stringValue(url.searchParams.get("shopId")); +} + async function authorizeQueryScope(path: string[], url: URL) { const user = await currentUser(); if (!user) return { status: 401, message: "Authentication required" }; @@ -237,7 +298,7 @@ async function authorizeQueryScope(path: string[], url: URL) { if (path[0] === "shops" && path[1]) return requireShopAccess(path[1]); const queryShopId = stringValue(url.searchParams.get("shopId")); if (queryShopId) return requireShopAccess(queryShopId); - if (["products", "categories", "inventory", "orders", "staff", "members", "campaigns", "promotions", "files", "folders", "ai"].includes(path[0] ?? "") && hasAnyRole(user, ["customer"])) { + if (["products", "categories", "inventory", "orders", "pos", "staff", "members", "campaigns", "promotions", "vouchers", "reports", "kitchen", "files", "folders", "ai"].includes(path[0] ?? "") && hasAnyRole(user, ["customer"])) { return { status: 403, message: "Forbidden" }; } return null; @@ -250,14 +311,51 @@ async function authorizeBodyScope(path: string[], body: Record) if (denied) return denied; } if (path[0] === "shops" && path.length === 1) return requireRoles(["admin"]); - if (["staff", "leave-requests", "campaigns", "promotions", "vouchers", "files", "folders", "ai"].includes(path[0] ?? "")) { - return requireRoles(["admin", "staff"]); - } + if (path[0] === "marketing") return requireRoles(["admin", "marketing"]); + if (path[0] === "staff" && path[1] === "me") return requireRoles(["staff", "admin"]); + if (["staff", "files", "folders"].includes(path[0] ?? "")) return requireRoles(["admin"]); + if (path[0] === "leave-requests") return path[2] === "approve" || path[2] === "reject" ? requireRoles(["admin"]) : requireRoles(["admin", "staff"]); + if (["campaigns", "promotions", "vouchers"].includes(path[0] ?? "")) return requireRoles(["admin", "marketing"]); + if (path[0] === "ai") return requireRoles(["admin", "staff"]); return null; } function periodParam(value: string | null) { - return value === "week" || value === "month" || value === "30d" ? value : "today"; + return value === "week" || value === "7d" || value === "month" || value === "30d" ? value : "today"; +} + +function orderFilterParam(value: string | null) { + if (value === "all" || value === "today" || value === "week" || value === "7d" || value === "month" || value === "30d") { + return value; + } + return "today"; +} + +function unsupportedPaymentAdapter(method: unknown) { + const normalized = stringValue(method)?.toLowerCase().replace(/-/g, "_"); + if (!normalized) return false; + return !["cash", "customer_order", "kitchen_order", "room_fnb"].includes(normalized); +} + +function requiredShopId(value: unknown) { + const shopId = stringValue(value); + return shopId ? { shopId } : { error: fail("shopId is required", { status: 400 }) }; +} + +async function queryShopIdOrSuperadmin(url: URL) { + const shopId = stringValue(url.searchParams.get("shopId")); + if (shopId) return { shopId }; + const user = await currentUser(); + if (hasAnyRole(user, ["superadmin"])) return { shopId: null }; + return { error: fail("shopId is required", { status: 400 }) }; +} + +async function requireRequestShopRoleScope(body: Record, url: URL, roles: string[]) { + const shopId = requestShopId(body, url); + if (!shopId) return { error: fail("shopId is required", { status: 400 }) }; + const denied = await requireShopRoleAccess(shopId, roles); + if (denied) return { error: fail(denied.message, { status: denied.status }) }; + return { shopId }; } export async function GET(request: Request, context: RouteContext) { @@ -276,13 +374,18 @@ export async function GET(request: Request, context: RouteContext) { if (path[0] === "account") { if (path[1] === "me" || path[1] === "profile") return ok(await currentUser()); if (path[1] === "subscription" && path[2] === "plans") return ok(await listPlans()); - if (path[1] === "subscription") return ok({ plan: "growth", status: "active", usage: await platformStats() }); - return ok({ user: await currentUser(), linkedAccounts: [], twoFactorEnabled: false }); + if (path[1] === "subscription") return fail("Account subscription requires persisted billing state", { status: 501 }); + return ok({ user: await currentUser() }); } if (path[0] === "shops") { - if (path[1] === "stats") return ok(await getShopStatsService()); - if (path.length === 1) return ok(await listShopsService()); + if (path[1] === "stats") return ok(await getShopStatsService()); + if (path.length === 1) { + const shops = await listShopsService(); + const user = await currentUser(); + const shopIds = allowedShopIds(user); + return ok(shopIds ? shops.filter((shop) => shopIds.has(shop.id)) : shops); + } const shopId = path[1]; if (!shopId) return fail("Shop id is required", { status: 400 }); @@ -292,6 +395,14 @@ export async function GET(request: Request, context: RouteContext) { return shop ? ok(shop) : fail("Shop not found", { status: 404 }); } + if (path[2] === "products" && path[3] === "lookup") { + const term = stringValue(url.searchParams.get("barcode")) ?? stringValue(url.searchParams.get("sku")) ?? stringValue(url.searchParams.get("q")); + if (!term) return fail("barcode, sku or q is required", { status: 400 }); + const normalized = term.toLowerCase(); + const products = await listCatalogProductsByShop(shopId); + const product = products.find((item) => item.barcode?.toLowerCase() === normalized || item.sku?.toLowerCase() === normalized || item.name.toLowerCase() === normalized); + return product ? ok(product) : fail("Product not found", { status: 404 }); + } if (path[2] === "products") return ok(await listCatalogProductsByShop(shopId)); if (path[2] === "categories") return ok(await listCatalogCategoriesByShop(shopId)); if (path[2] === "inventory") return ok(await listInventoryItems(shopId)); @@ -302,7 +413,7 @@ export async function GET(request: Request, context: RouteContext) { shopId, page: numberValue(url.searchParams.get("page"), 1), pageSize: numberValue(url.searchParams.get("pageSize"), 40), - filter: stringValue(url.searchParams.get("filter")) === "all" ? "all" : "today" + filter: orderFilterParam(url.searchParams.get("filter")) }) ); } @@ -321,67 +432,111 @@ export async function GET(request: Request, context: RouteContext) { if (path[2] === "attendance") return ok(await getAttendance(null, shopId)); } - if (path[0] === "products") { - if (path.length === 1) { - return ok(await listCatalogProducts({ - shopId: stringValue(url.searchParams.get("shopId")), - includeInactive: boolValue(url.searchParams.get("includeInactive")) - })); - } + if (path[0] === "products") { + if (path.length === 1) { + const scoped = await queryShopIdOrSuperadmin(url); + if ("error" in scoped) return scoped.error; + return ok(await listCatalogProducts({ + shopId: scoped.shopId, + includeInactive: boolValue(url.searchParams.get("includeInactive")) + })); + } const product = await getCatalogProduct(path[1] ?? ""); + if (product) { + const productDenied = await requireRecordShopAccess(product, stringValue(url.searchParams.get("shopId"))); + if (productDenied) return fail(productDenied.message, { status: productDenied.status }); + } return product ? ok(product) : fail("Product not found", { status: 404 }); } if (path[0] === "categories") { if (path[1]) { const category = await getCatalogCategory(path[1]); + if (category) { + const categoryDenied = await requireRecordShopAccess(category, stringValue(url.searchParams.get("shopId"))); + if (categoryDenied) return fail(categoryDenied.message, { status: categoryDenied.status }); + } return category ? ok(category) : fail("Category not found", { status: 404 }); - } - return ok(await listCatalogCategories({ - shopId: stringValue(url.searchParams.get("shopId")), - includeInactive: boolValue(url.searchParams.get("includeInactive")) - })); - } + } + const scoped = await queryShopIdOrSuperadmin(url); + if ("error" in scoped) return scoped.error; + return ok(await listCatalogCategories({ + shopId: scoped.shopId, + includeInactive: boolValue(url.searchParams.get("includeInactive")) + })); + } if (path[0] === "inventory") { if (path[1] === "items" && path[2]) { const item = await getInventoryService(path[2]); + if (item) { + const itemDenied = await requireRecordShopAccess(item, stringValue(url.searchParams.get("shopId"))); + if (itemDenied) return fail(itemDenied.message, { status: itemDenied.status }); + } return item ? ok(item) : fail("Inventory item not found", { status: 404 }); } - if (path[1] === "transactions") return ok((await listInventoryWithTransactions(stringValue(url.searchParams.get("shopId")))).transactions); - if (path[1] === "low-stock") return ok((await listInventoryItems(stringValue(url.searchParams.get("shopId")) ?? "")).filter((item) => item.quantity <= item.reorderLevel)); - return ok(await listInventoryItems(stringValue(url.searchParams.get("shopId")) ?? "")); - } + const scoped = await queryShopIdOrSuperadmin(url); + if ("error" in scoped) return scoped.error; + if (path[1] === "transactions") return ok((await listInventoryWithTransactions(scoped.shopId)).transactions); + if (path[1] === "low-stock") return ok((await listInventoryItems(scoped.shopId ?? "")).filter((item) => item.quantity <= item.reorderLevel)); + return ok(await listInventoryItems(scoped.shopId ?? "")); + } if (path[0] === "tables" && path[1] === "by-token" && path[2]) { const table = await getTableFromToken(path[2]); return table ? ok(table) : fail("Table not found", { status: 404 }); } + if (path[0] === "tables" && path.length === 1) { + const shopId = stringValue(url.searchParams.get("shopId")); + if (!shopId) return fail("shopId is required", { status: 400 }); + return ok(await listTablesByShop(shopId)); + } + if (path[0] === "tables" && path[1]) { + const table = await getTable(path[1]); + if (table) { + const tableDenied = await requireRecordShopAccess(table, stringValue(url.searchParams.get("shopId"))); + if (tableDenied) return fail(tableDenied.message, { status: tableDenied.status }); + } + return table ? ok(table) : fail("Table not found", { status: 404 }); + } if (path[0] === "orders") { - if (path[1] === "active-by-table") return ok(await listActiveOrdersByTableService(stringValue(url.searchParams.get("shopId")))); + const scoped = await queryShopIdOrSuperadmin(url); + if ("error" in scoped) return scoped.error; + if (path[1] === "active-by-table") return ok(await listActiveOrdersByTableService(scoped.shopId)); if (path.length === 1) { return ok( await listOrdersService({ - shopId: stringValue(url.searchParams.get("shopId")), + shopId: scoped.shopId, page: numberValue(url.searchParams.get("page"), 1), pageSize: numberValue(url.searchParams.get("pageSize"), 40), - filter: stringValue(url.searchParams.get("filter")) === "today" ? "today" : "all" + filter: orderFilterParam(url.searchParams.get("filter")) }) ); } - const order = await getOrderService(path[1] ?? "", stringValue(url.searchParams.get("shopId"))); + if (path[2] === "returns") return fail("Order return history requires persisted return/exchange records", { status: 501 }); + const order = await getOrderService(path[1] ?? "", scoped.shopId); return order ? ok(order) : fail("Order not found", { status: 404 }); } if (path[0] === "pos" && path[1] === "dashboard") { - return ok(await getPosDashboardService(stringValue(url.searchParams.get("shopId")), periodParam(url.searchParams.get("period")))); + const scoped = await queryShopIdOrSuperadmin(url); + if ("error" in scoped) return scoped.error; + return ok(await getPosDashboardService(scoped.shopId, periodParam(url.searchParams.get("period")))); } if (path[0] === "staff") { - if (path.length === 1) return ok(await listStaff(stringValue(url.searchParams.get("shopId")))); + if (path.length === 1) { + const scoped = await queryShopIdOrSuperadmin(url); + if ("error" in scoped) return scoped.error; + return ok(await listStaff(scoped.shopId)); + } if (path[1] === "roles") return ok(await listRoles(stringValue(url.searchParams.get("portal")))); - if (path[1] === "schedules") return ok(await listSchedules(stringValue(url.searchParams.get("shopId")))); + if (path[1] === "schedules") { + const scoped = await queryShopIdOrSuperadmin(url); + if ("error" in scoped) return scoped.error; + return ok(await listSchedules(scoped.shopId)); + } if (path[1] === "me") { const user = await currentUser(); const staff = await currentStaffProfile(); @@ -393,18 +548,32 @@ export async function GET(request: Request, context: RouteContext) { return ok(staff); } const staff = await getStaff(path[1] ?? ""); + if (staff) { + const staffDenied = await requireRecordShopAccess(staff, stringValue(url.searchParams.get("shopId"))); + if (staffDenied) return fail(staffDenied.message, { status: staffDenied.status }); + } return staff ? ok(staff) : fail("Staff not found", { status: 404 }); } if (path[0] === "kitchen" && path[1] === "tickets") { - return ok(await listKitchenTickets(stringValue(url.searchParams.get("shopId")), stringValue(url.searchParams.get("status")))); + const scoped = await queryShopIdOrSuperadmin(url); + if ("error" in scoped) return scoped.error; + return ok(await listKitchenTickets(scoped.shopId, stringValue(url.searchParams.get("status")))); } if (path[0] === "members") { - if (path.length === 1) return ok(await listMembers(stringValue(url.searchParams.get("search")), stringValue(url.searchParams.get("shopId")))); - if (path[2] === "progress") return ok(await getMemberProgress(path[1] ?? "")); - if (path[2] === "experience") return ok(await listMemberExperience(path[1] ?? "")); + if (path.length === 1) { + const scoped = await queryShopIdOrSuperadmin(url); + if ("error" in scoped) return scoped.error; + return ok(await listMembers(stringValue(url.searchParams.get("search")), scoped.shopId)); + } const member = await getMember(path[1] ?? ""); + if (member) { + const memberDenied = await requireRecordShopAccess(member, stringValue(url.searchParams.get("shopId"))); + if (memberDenied) return fail(memberDenied.message, { status: memberDenied.status }); + } + if (path[2] === "progress") return member ? ok(await getMemberProgress(path[1] ?? "")) : fail("Member not found", { status: 404 }); + if (path[2] === "experience") return member ? ok(await listMemberExperience(path[1] ?? "")) : fail("Member not found", { status: 404 }); return member ? ok(member) : fail("Member not found", { status: 404 }); } @@ -420,34 +589,65 @@ export async function GET(request: Request, context: RouteContext) { if (path[0] === "promotions" || path[0] === "campaigns") { if (path[1]) { const campaign = await getCampaign(path[1]); + if (campaign) { + const campaignDenied = await requireRecordShopAccess(campaign, stringValue(url.searchParams.get("shopId"))); + if (campaignDenied) return fail(campaignDenied.message, { status: campaignDenied.status }); + } return campaign ? ok(campaign) : fail("Campaign not found", { status: 404 }); } - return ok(await listCampaigns()); + const scoped = await queryShopIdOrSuperadmin(url); + if ("error" in scoped) return scoped.error; + return ok(await listCampaigns(scoped.shopId)); + } + if (path[0] === "vouchers" && (!path[1] || path[1] === "list")) { + const scoped = await queryShopIdOrSuperadmin(url); + if ("error" in scoped) return scoped.error; + return ok(await listVouchers(scoped.shopId)); } - if (path[0] === "vouchers" && !path[1]) return ok(await listVouchers(stringValue(url.searchParams.get("shopId")))); if (path[0] === "vouchers" && path[1] === "validate" && path[2]) return ok(await validateVoucher(path[2], stringValue(url.searchParams.get("shopId")))); if (path[0] === "reports") { - const shopId = stringValue(url.searchParams.get("shopId")); - if (path[1] === "top-products") return ok(await reportTopProducts(shopId)); - if (path[1] === "revenue" || path[1] === "revenue-analytics") return ok(await reportRevenue(shopId)); - if (path[1] === "eod") return ok({ closed: false, revenue: await reportRevenue(shopId), generatedAt: new Date().toISOString() }); - if (path[1] === "staff-performance") return ok(await listStaff(shopId)); + const scoped = await queryShopIdOrSuperadmin(url); + if ("error" in scoped) return scoped.error; + if (path[1] === "top-products") return ok(await reportTopProducts(scoped.shopId)); + if (path[1] === "revenue" || path[1] === "revenue-analytics") return ok(await reportRevenue(scoped.shopId)); + if (path[1] === "eod") return fail("EOD report requires persisted close-day ledger support", { status: 501 }); + if (path[1] === "staff-performance") return ok(await listStaff(scoped.shopId)); } if (path[0] === "files") { + const scoped = requiredShopId(url.searchParams.get("shopId")); + if ("error" in scoped) return scoped.error; if (path[1]) { - const file = await getFileRecord(path[1]); + const file = await getFileRecord(path[1], scoped.shopId) as ({ public_url?: string | null; access_url?: string | null } & Record) | null; + if (!file) return fail("File not found", { status: 404 }); + if (path[2] === "download-url") { + const publicUrl = stringValue(file.public_url) ?? stringValue(file.access_url); + return publicUrl ? ok({ url: publicUrl }) : fail("Private S3 signed download URLs are not implemented yet", { status: 501 }); + } + if (path[2] === "download") { + const publicUrl = stringValue(file.public_url) ?? stringValue(file.access_url); + return publicUrl ? Response.redirect(publicUrl, 302) : fail("Private S3 signed downloads are not implemented yet", { status: 501 }); + } return file ? ok(file) : fail("File not found", { status: 404 }); } - return ok(await listFiles(stringValue(url.searchParams.get("shopId")))); + return ok(await listFiles(scoped.shopId)); + } + if (path[0] === "folders") { + const scoped = requiredShopId(url.searchParams.get("shopId")); + if ("error" in scoped) return scoped.error; + if (path[1]) { + const folder = await getFolder(path[1], scoped.shopId); + return folder ? ok(folder) : fail("Folder not found", { status: 404 }); + } + return ok(await listFolders(scoped.shopId, stringValue(url.searchParams.get("parentId")))); } - if (path[0] === "folders") return ok(await listFolders(stringValue(url.searchParams.get("parentId")))); if (path[0] === "ai") { if (path[1] === "config") { - const shopId = stringValue(url.searchParams.get("shopId")); - return ok(shopId ? await getAiConfig(shopId) : null); + const scoped = requiredShopId(url.searchParams.get("shopId")); + if ("error" in scoped) return scoped.error; + return ok(await getAiConfig(scoped.shopId)); } if (path[1] === "providers") return ok(providerCredentialStatus()); } @@ -476,7 +676,7 @@ export async function GET(request: Request, context: RouteContext) { } } - if (path[0] === "devices") return ok([]); + if (path[0] === "devices") return fail("Device management requires persisted device registry support", { status: 501 }); if (path[0] === "integrations") return ok(providerCredentialStatus()); if (path[0] === "public" && path[1] === "shops" && path[2]) { if (path[3] === "menu") return ok(await publicMenu(path[2])); @@ -498,16 +698,20 @@ export async function POST(request: Request, context: RouteContext) { if (path[0] === "files" && path[1] === "upload") { const url = urlFromRequest(request); const form = await request.formData(); - const uploadScopeDenied = await requireShopAccess(stringValue(form.get("shopId")) ?? stringValue(url.searchParams.get("shopId"))); + const scoped = requiredShopId(stringValue(form.get("shopId")) ?? stringValue(url.searchParams.get("shopId"))); + if ("error" in scoped) return scoped.error; + const uploadScopeDenied = await requireShopRoleAccess(scoped.shopId, ["admin"]); if (uploadScopeDenied) return fail(uploadScopeDenied.message, { status: uploadScopeDenied.status }); const file = form.get("file"); if (!(file instanceof File)) return fail("file is required", { status: 400 }); + const folderId = stringValue(form.get("folderId")) ?? stringValue(url.searchParams.get("folderId")); + if (folderId && !(await getFolder(folderId, scoped.shopId))) return fail("Folder not found", { status: 404 }); const key = buildS3ObjectKey(file.name); const accessLevel = stringValue(form.get("accessLevel")) ?? stringValue(url.searchParams.get("accessLevel")) ?? "public"; const publicUrl = await uploadS3Object(key, file, accessLevel); return ok(await createFileRecord({ - shopId: stringValue(form.get("shopId")) ?? stringValue(url.searchParams.get("shopId")), - folderId: stringValue(form.get("folderId")) ?? stringValue(url.searchParams.get("folderId")), + shopId: scoped.shopId, + folderId, fileName: file.name, contentType: file.type, byteSize: file.size, @@ -517,12 +721,13 @@ export async function POST(request: Request, context: RouteContext) { })); } - const body = await readJson(request); - const scopeDenied = await authorizeBodyScope(path, body); + const body = await readJson(request); + const url = urlFromRequest(request); + const scopeDenied = await authorizeBodyScope(path, body); if (scopeDenied) return fail(scopeDenied.message, { status: scopeDenied.status }); if (path[0] === "auth" && path[1] === "login") { - const result = await loginUser(String(body.email ?? ""), String(body.password ?? "")); + const result = await loginUser(String(body.email ?? ""), String(body.password ?? ""), stringValue(body.role)); const jar = await cookies(); jar.set(sessionCookieName(), result.token, { httpOnly: true, @@ -542,14 +747,15 @@ export async function POST(request: Request, context: RouteContext) { } if (path[0] === "auth" && path[1] === "register") return ok(await registerUser(body), { status: 201 }); - if (path[0] === "auth" && (path[1] === "forgot-password" || path[1] === "forgot-password-new" || path[1] === "password-reset-request")) return ok(await requestPasswordReset(body)); + if (path[0] === "auth" && (path[1] === "forgot-password" || path[1] === "forgot-password-new" || path[1] === "password-reset-request")) { + return fail("Password reset delivery is not configured for MVP yet", { status: 501 }); + } if (path[0] === "auth" && (path[1] === "reset-password" || path[1] === "password-reset")) return ok(await resetPassword(body)); if (path[0] === "auth" && (path[1] === "verify-email" || path[1] === "email-verify")) return ok(await verifyEmail(body)); if (path[0] === "shops" && path.length === 1) { const activeDays = Array.isArray(body.activeDays) ? body.activeDays.map(String) : null; - return ok( - await createShopService({ + const shop = await createShopService({ name: String(body.name ?? ""), vertical: String(body.vertical ?? "retail"), slug: stringValue(body.slug), @@ -562,58 +768,97 @@ export async function POST(request: Request, context: RouteContext) { openTime: stringValue(body.openTime), closeTime: stringValue(body.closeTime), activeDays - }), - { status: 201 } - ); + }); + const user = await currentUser(); + if (user?.id && !hasAnyRole(user, ["superadmin"])) { + await assignUserShopRole(user.id, shop.id, "admin"); + } + return ok(shop, { status: 201 }); + } + if (path[0] === "shops" && path[1] && ["publish", "deactivate", "close"].includes(path[2] ?? "")) { + const shopDenied = await requireShopAdminAccess(path[1]); + if (shopDenied) return fail(shopDenied.message, { status: shopDenied.status }); + const statusId = path[2] === "publish" ? 2 : path[2] === "deactivate" ? 3 : 4; + return ok(await updateShopService(path[1], { statusId })); } - if (path[0] === "shops" && path[2] === "publish") return ok(await updateShopService(path[1] ?? "", { statusId: 2 })); - if (path[0] === "shops" && path[2] === "deactivate") return ok(await updateShopService(path[1] ?? "", { statusId: 3 })); - if (path[0] === "shops" && path[2] === "close") return ok(await updateShopService(path[1] ?? "", { statusId: 4 })); - if (path[0] === "products") return ok(await createCatalogProduct({ - shopId: String(body.shopId ?? ""), - name: String(body.name ?? ""), - price: numberValue(body.price), - vertical: stringValue(body.vertical), - categoryId: stringValue(body.categoryId), - description: stringValue(body.description), - sku: stringValue(body.sku), - barcode: stringValue(body.barcode), - initialQuantity: numberValue(body.initialQuantity) - }), { status: 201 }); + if (path[0] === "products" && path.length === 1) { + const scoped = await requireRequestShopRoleScope(body, url, ["admin"]); + if ("error" in scoped) return scoped.error; + const categoryId = stringValue(body.categoryId); + if (categoryId) { + const category = await getCatalogCategory(categoryId); + if (!category) return fail("Category not found", { status: 404 }); + const categoryDenied = await requireRecordShopRoleAccess(category, ["admin"], scoped.shopId); + if (categoryDenied) return fail(categoryDenied.message, { status: categoryDenied.status }); + } + return ok(await createCatalogProduct({ + shopId: scoped.shopId, + name: String(body.name ?? ""), + price: numberValue(body.price), + vertical: stringValue(body.vertical), + categoryId, + description: stringValue(body.description), + sku: stringValue(body.sku), + barcode: stringValue(body.barcode), + initialQuantity: numberValue(body.initialQuantity) + }), { status: 201 }); + } - if (path[0] === "categories") return ok(await createCatalogCategory({ - shopId: String(body.shopId ?? ""), - name: String(body.name ?? ""), - description: stringValue(body.description), - displayOrder: numberValue(body.displayOrder) - }), { status: 201 }); + if (path[0] === "categories" && path.length === 1) { + const scoped = await requireRequestShopRoleScope(body, url, ["admin"]); + if ("error" in scoped) return scoped.error; + return ok(await createCatalogCategory({ + shopId: scoped.shopId, + name: String(body.name ?? ""), + description: stringValue(body.description), + displayOrder: numberValue(body.displayOrder) + }), { status: 201 }); + } - if (path[0] === "inventory" && path[1] === "items") return ok(await createInventoryItemService({ - shopId: String(body.shopId ?? ""), - name: String(body.name ?? ""), - itemTypeId: numberValue(body.itemTypeId, 1), - unit: String(body.unit ?? "pcs"), - costPerUnit: numberValue(body.costPerUnit), - quantity: numberValue(body.quantity), - reorderLevel: numberValue(body.reorderLevel, 10), - supplierName: stringValue(body.supplierName) - }), { status: 201 }); - if (path[0] === "inventory" && path[1] === "stock-in") return ok(await stockIn(body as never)); - if (path[0] === "inventory" && path[1] === "stock-out") return ok(await stockOut(body as never)); - if (path[0] === "inventory" && path[1] === "adjust") return ok(await inventoryAdjust(body as never)); - if (path[0] === "inventory" && path[1] === "wastage") return ok(await stockOut({ ...body, notes: stringValue(body.reason) ?? "Wastage" } as never)); - if (path[0] === "inventory" && path[1] === "stocktake") { - const items = Array.isArray(body.items) ? body.items : []; - const adjustedItems = []; - const discrepancies = []; + if (path[0] === "inventory" && path[1] === "items" && path.length === 2) { + const scoped = await requireRequestShopRoleScope(body, url, ["admin"]); + if ("error" in scoped) return scoped.error; + return ok(await createInventoryItemService({ + shopId: scoped.shopId, + name: String(body.name ?? ""), + itemTypeId: numberValue(body.itemTypeId, 1), + unit: String(body.unit ?? "pcs"), + costPerUnit: numberValue(body.costPerUnit), + quantity: numberValue(body.quantity), + reorderLevel: numberValue(body.reorderLevel, 10), + supplierName: stringValue(body.supplierName) + }), { status: 201 }); + } + if (path[0] === "inventory" && ["stock-in", "stock-out", "adjust", "wastage"].includes(path[1] ?? "")) { + const inventoryId = stringValue(body.inventoryId); + if (!inventoryId) return fail("inventoryId is required", { status: 400 }); + const existing = await getInventoryService(inventoryId); + if (!existing) return fail("Inventory item not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], requestShopId(body, url)); + if (denied) return fail(denied.message, { status: denied.status }); + if ((path[1] === "stock-out" || path[1] === "wastage") && numberValue(body.quantity) > Number(existing.quantity ?? 0)) { + return fail("Insufficient inventory quantity", { status: 409 }); + } + if (path[1] === "stock-in") return ok(await stockIn(body as never)); + if (path[1] === "stock-out") return ok(await stockOut(body as never)); + if (path[1] === "adjust") return ok(await inventoryAdjust(body as never)); + return ok(await stockOut({ ...body, notes: stringValue(body.reason) ?? "Wastage" } as never)); + } + if (path[0] === "inventory" && path[1] === "stocktake") { + const items = Array.isArray(body.items) ? body.items : []; + const stocktakeShopId = requestShopId(body, url); + const adjustedItems = []; + const discrepancies = []; for (const rawItem of items) { const item = rawItem as Record; const inventoryId = stringValue(item.inventoryId) ?? stringValue(item.id); - if (!inventoryId) continue; - const current = await getInventoryService(inventoryId); - if (!current) throw new Error(`Inventory item not found: ${inventoryId}`); - const countedQuantity = numberValue(item.countedQuantity ?? item.quantity, Number(current.quantity ?? 0)); + if (!inventoryId) continue; + const current = await getInventoryService(inventoryId); + if (!current) throw new Error(`Inventory item not found: ${inventoryId}`); + const denied = await requireRecordShopRoleAccess(current, ["admin"], stringValue(item.shopId) ?? stringValue(item.shop_id) ?? stocktakeShopId); + if (denied) return fail(denied.message, { status: denied.status }); + const countedQuantity = numberValue(item.countedQuantity ?? item.quantity, Number(current.quantity ?? 0)); if (Number(current.quantity ?? 0) !== countedQuantity) { discrepancies.push({ inventoryId, @@ -632,26 +877,60 @@ export async function POST(request: Request, context: RouteContext) { return ok({ totalItemsCounted: items.length, discrepancies, adjustedItems }); } - if (path[0] === "tables" && path[2] === "generate-qr") return ok(await regenerateTableQrService(path[1] ?? "")); - if (path[0] === "tables") return ok(await createTableService({ - shopId: String(body.shopId ?? ""), - tableNumber: String(body.tableNumber ?? ""), - capacity: numberValue(body.capacity, 2), - zone: stringValue(body.zone), - hourlyRate: numberValue(body.hourlyRate) - }), { status: 201 }); - - if ((path[0] === "orders" && path.length === 1) || (path[0] === "pos" && path[1] === "orders")) { - return ok(await createPosOrder(body as Parameters[0]), { status: 201 }); + if (path[0] === "tables" && path[2] === "generate-qr") { + const existing = await getTable(path[1] ?? ""); + if (!existing) return fail("Table not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin", "staff"], requestShopId(body, url)); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await regenerateTableQrService(path[1] ?? "")); } - if (path[0] === "orders" && path[2] === "pay") return ok(await payOrderService(path[1] ?? "", { - shopId: stringValue(body.shopId), - paymentMethod: stringValue(body.paymentMethod), - amountTendered: body.amountTendered == null ? null : numberValue(body.amountTendered) - })); - if (path[0] === "orders" && path[2] === "cancel") return ok(await cancelOrderService(path[1] ?? "", stringValue(body.shopId), stringValue(body.reason))); + if (path[0] === "tables" && path.length === 1) { + const scoped = await requireRequestShopRoleScope(body, url, ["admin"]); + if ("error" in scoped) return scoped.error; + return ok(await createTableService({ + shopId: scoped.shopId, + tableNumber: String(body.tableNumber ?? ""), + capacity: numberValue(body.capacity, 2), + zone: stringValue(body.zone), + hourlyRate: numberValue(body.hourlyRate) + }), { status: 201 }); + } - if (path[0] === "staff" && path.length === 1) return ok(await createStaff(body), { status: 201 }); + if ((path[0] === "orders" && path.length === 1) || (path[0] === "pos" && path[1] === "orders")) { + const scoped = await requireRequestShopRoleScope(body, url, ["admin", "staff"]); + if ("error" in scoped) return scoped.error; + if (unsupportedPaymentAdapter(body.paymentMethod)) { + return fail("Payment adapter is not configured for this method", { status: 501 }); + } + return ok(await createPosOrder({ ...body, shopId: scoped.shopId } as Parameters[0]), { status: 201 }); + } + if (path[0] === "orders" && path[2] === "pay") { + const shopId = requestShopId(body, url); + if (!shopId) return fail("shopId is required", { status: 400 }); + const denied = await requireShopRoleAccess(shopId, ["admin", "staff"]); + if (denied) return fail(denied.message, { status: denied.status }); + if (unsupportedPaymentAdapter(body.paymentMethod)) { + return fail("Payment adapter is not configured for this method", { status: 501 }); + } + return ok(await payOrderService(path[1] ?? "", { + shopId, + paymentMethod: stringValue(body.paymentMethod), + amountTendered: body.amountTendered == null ? null : numberValue(body.amountTendered) + })); + } + if (path[0] === "orders" && path[2] === "cancel") { + const shopId = requestShopId(body, url); + if (!shopId) return fail("shopId is required", { status: 400 }); + const denied = await requireShopRoleAccess(shopId, ["admin", "staff"]); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await cancelOrderService(path[1] ?? "", shopId, stringValue(body.reason))); + } + + if (path[0] === "staff" && path.length === 1) { + const scoped = await requireRequestShopRoleScope(body, url, ["admin"]); + if ("error" in scoped) return scoped.error; + return ok(await createStaff({ ...body, shopId: scoped.shopId }), { status: 201 }); + } if (path[0] === "staff" && path[1] === "me") { const staff = await currentStaffProfile(); if (!staff?.id) return fail("Staff profile not found", { status: 404 }); @@ -659,46 +938,124 @@ export async function POST(request: Request, context: RouteContext) { if (path[2] === "attendance" && path[3] === "check-out") return ok(await checkOut(staff.id)); if (path[2] === "leave-requests") return ok(await createLeaveRequest({ ...body, staffId: staff.id, shopId: stringValue(staff.shop_id) }), { status: 201 }); } - if (path[0] === "leave-requests" && path[2] === "approve") return ok(await updateLeaveStatus(path[1] ?? "", "approved")); - if (path[0] === "leave-requests" && path[2] === "reject") return ok(await updateLeaveStatus(path[1] ?? "", "rejected")); - if (path[0] === "staff" && path[1] === "invite-with-account") return ok(await createStaff(body), { status: 201 }); - if (path[0] === "staff" && path[1] === "reset-password") { - const email = stringValue(body.email); - if (!email) return fail("email is required for staff password reset", { status: 400 }); - return ok(await requestPasswordReset({ email })); - } + if (path[0] === "leave-requests" && (path[2] === "approve" || path[2] === "reject")) { + const leave = await getLeaveRequest(path[1] ?? ""); + if (!leave) return fail("Leave request not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(leave, ["admin"], requestShopId(body, url)); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await updateLeaveStatus(path[1] ?? "", path[2] === "approve" ? "approved" : "rejected")); + } + if (path[0] === "staff" && path[1] === "invite-with-account") { + const scoped = await requireRequestShopRoleScope(body, url, ["admin"]); + if ("error" in scoped) return scoped.error; + return ok(await createStaff({ ...body, shopId: scoped.shopId }), { status: 201 }); + } + if (path[0] === "staff" && path[1] === "reset-password") { + const email = stringValue(body.email); + if (!email) return fail("email is required for staff password reset", { status: 400 }); + return fail("Staff password reset delivery is not configured for MVP yet", { status: 501 }); + } - if (path[0] === "members" && path.length === 1) return ok(await createMember(body), { status: 201 }); - if (path[0] === "members" && path[2] === "experience") return ok(await addExperience(path[1] ?? "", numberValue(body.points), String(body.sourceId ?? "manual"), stringValue(body.referenceId))); - if (path[0] === "campaigns" && path[2] === "activate") return ok(await setCampaignStatus(path[1] ?? "", "active")); - if (path[0] === "campaigns" && path[2] === "pause") return ok(await setCampaignStatus(path[1] ?? "", "paused")); - if (path[0] === "campaigns") return ok(await createCampaign(body), { status: 201 }); - if (path[0] === "vouchers" && path[1] === "redeem") return ok(await redeemVoucher(body)); - if (path[0] === "vouchers" && path[2] === "revoke") return ok(await revokeVoucher(path[1] ?? "")); + if (path[0] === "members" && path.length === 1) { + const scoped = await requireRequestShopRoleScope(body, url, ["admin", "marketing"]); + if ("error" in scoped) return scoped.error; + return ok(await createMember({ ...body, shopId: scoped.shopId }), { status: 201 }); + } + if (path[0] === "members" && path[2] === "experience") { + const member = await getMember(path[1] ?? ""); + if (!member) return fail("Member not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(member, ["admin", "marketing"], requestShopId(body, url)); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await addExperience(path[1] ?? "", numberValue(body.points), String(body.sourceId ?? "manual"), stringValue(body.referenceId))); + } + if (path[0] === "campaigns" && (path[2] === "activate" || path[2] === "pause")) { + const campaign = await getCampaign(path[1] ?? ""); + if (!campaign) return fail("Campaign not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(campaign, ["admin", "marketing"], requestShopId(body, url)); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await setCampaignStatus(path[1] ?? "", path[2] === "activate" ? "active" : "paused")); + } + if (path[0] === "campaigns" && path.length === 1) { + const scoped = await requireRequestShopRoleScope(body, url, ["admin", "marketing"]); + if ("error" in scoped) return scoped.error; + return ok(await createCampaign({ ...body, shopId: scoped.shopId }), { status: 201 }); + } + if (path[0] === "vouchers" && path[1] === "redeem") return ok(await redeemVoucher(body)); + if (path[0] === "vouchers" && path[2] === "revoke") { + const voucher = await getVoucher(path[1] ?? ""); + if (!voucher) return fail("Voucher not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(voucher, ["admin", "marketing"], requestShopId(body, url)); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await revokeVoucher(path[1] ?? "", recordShopId(voucher))); + } - if (path[0] === "appointments") return ok(await createAppointment(body), { status: 201 }); - if (path[0] === "reservations") return ok(await createReservation(body), { status: 201 }); - if (path[0] === "kitchen" && path[1] === "tickets") return ok(await createKitchenTicket(body), { status: 201 }); - if (path[0] === "cafe" && path[1] === "barista-queue" && path[2]) { - const status = path[3] === "ready" ? "Ready" : path[3] === "delivered" ? "Delivered" : "InProgress"; - return ok(await updateBaristaQueue(path[2], status, stringValue(body.baristaName))); - } - if (path[0] === "folders") return ok(await createFolder(body), { status: 201 }); + if (path[0] === "appointments" && path.length === 1) { + const scoped = await requireRequestShopRoleScope(body, url, ["admin", "staff"]); + if ("error" in scoped) return scoped.error; + return ok(await createAppointment({ ...body, shopId: scoped.shopId }), { status: 201 }); + } + if (path[0] === "reservations" && path.length === 1) { + const scoped = await requireRequestShopRoleScope(body, url, ["admin", "staff"]); + if ("error" in scoped) return scoped.error; + const tableId = stringValue(body.tableId); + if (tableId) { + const table = await getTable(tableId); + if (!table) return fail("Table not found", { status: 404 }); + const tableDenied = await requireRecordShopRoleAccess(table, ["admin", "staff"], scoped.shopId); + if (tableDenied) return fail(tableDenied.message, { status: tableDenied.status }); + } + return ok(await createReservation({ ...body, shopId: scoped.shopId }), { status: 201 }); + } + if (path[0] === "kitchen" && path[1] === "tickets" && path.length === 2) { + const scoped = await requireRequestShopRoleScope(body, url, ["admin", "staff"]); + if ("error" in scoped) return scoped.error; + const orderId = stringValue(body.orderId); + if (orderId && !(await getOrderService(orderId, scoped.shopId))) return fail("Order not found", { status: 404 }); + const tableId = stringValue(body.tableId); + if (tableId) { + const table = await getTable(tableId); + if (!table) return fail("Table not found", { status: 404 }); + const tableDenied = await requireRecordShopRoleAccess(table, ["admin", "staff"], scoped.shopId); + if (tableDenied) return fail(tableDenied.message, { status: tableDenied.status }); + } + return ok(await createKitchenTicket({ ...body, shopId: scoped.shopId }), { status: 201 }); + } + if (path[0] === "cafe" && path[1] === "barista-queue" && path[2]) { + const queueItem = await getBaristaQueueItem(path[2]); + if (!queueItem) return fail("Barista queue item not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(queueItem, ["admin", "staff"], requestShopId(body, url)); + if (denied) return fail(denied.message, { status: denied.status }); + const status = path[3] === "ready" ? "Ready" : path[3] === "delivered" ? "Delivered" : "InProgress"; + return ok(await updateBaristaQueue(path[2], status, stringValue(body.baristaName))); + } + if (path[0] === "folders" && path.length === 1) { + const scoped = await requireRequestShopRoleScope(body, url, ["admin"]); + if ("error" in scoped) return scoped.error; + return ok(await createFolder({ ...body, shopId: scoped.shopId }), { status: 201 }); + } - if (path[0] === "ai" && path[1] === "chat") { - const provider = stringValue(body.provider) ?? process.env.AI_DEFAULT_PROVIDER ?? "openai"; - const message = Array.isArray(body.messages) - ? String((body.messages[body.messages.length - 1] as { content?: unknown } | undefined)?.content ?? "") - : String(body.message ?? ""); - const response = await callConfiguredAi(provider, message); - await saveAiMessage({ shopId: stringValue(body.shopId), role: "user", content: message }); - await saveAiMessage({ shopId: stringValue(body.shopId), role: "assistant", content: JSON.stringify(response) }); - return ok({ content: response, toolsUsed: [] }); - } + if (path[0] === "ai" && path[1] === "chat") { + const scoped = await requireRequestShopRoleScope(body, url, ["admin", "staff"]); + if ("error" in scoped) return scoped.error; + const provider = stringValue(body.provider) ?? process.env.AI_DEFAULT_PROVIDER ?? "openai"; + const message = Array.isArray(body.messages) + ? String((body.messages[body.messages.length - 1] as { content?: unknown } | undefined)?.content ?? "") + : String(body.message ?? ""); + const response = await callConfiguredAi(provider, message); + await saveAiMessage({ shopId: scoped.shopId, role: "user", content: message }); + await saveAiMessage({ shopId: scoped.shopId, role: "assistant", content: JSON.stringify(response) }); + return ok({ content: response, toolsUsed: [] }); + } - if (path[0] === "marketing" && path[1] === "publish" && path[2]) { - return ok(await publishSocial(path[2], body)); - } + if (path[0] === "marketing" && path[1] === "publish" && path[2]) { + const roleDenied = await requireRoles(["admin", "marketing"]); + if (roleDenied) return fail(roleDenied.message, { status: roleDenied.status }); + const shopId = requestShopId(body, url); + if (!shopId) return fail("shopId is required", { status: 400 }); + const denied = await requireShopRoleAccess(shopId, ["admin", "marketing"]); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await publishSocial(path[2], body)); + } if (path[0] === "reports" && path[1] === "close-day") { return fail("Close-day requires persisted EOD ledger support before it can be marked closed", { status: 501 }); @@ -715,29 +1072,139 @@ export async function PUT(request: Request, context: RouteContext) { const path = (await context.params).path ?? []; const accessDenied = await authorizeBff(path, request.method); if (accessDenied) return fail(accessDenied.message, { status: accessDenied.status }); + const url = urlFromRequest(request); const body = await readJson(request); const scopeDenied = await authorizeBodyScope(path, body); if (scopeDenied) return fail(scopeDenied.message, { status: scopeDenied.status }); - if (path[0] === "account" && (path[1] === "profile" || path[1] === "me")) return ok({ ...(await currentUser()), ...body }); - if (path[0] === "shops" && path[2] === "settings") return ok(await updateShopSettingsService(path[1] ?? "", body)); - if (path[0] === "shops" && path.length === 2) return ok(await updateShopService(path[1] ?? "", body)); - if (path[0] === "products") return ok(await updateCatalogProduct(path[1] ?? "", body)); - if (path[0] === "categories") return ok(await updateCatalogCategory(path[1] ?? "", body)); - if (path[0] === "tables" && path[2] === "status") return ok(await updateTableStatusService(path[1] ?? "", numberValue(body.statusId, 1))); - if (path[0] === "tables") return ok(await updateTableService(path[1] ?? "", body)); - if (path[0] === "inventory" && path[1] === "items" && path[2]) return ok(await updateInventoryItemService(path[2], body)); - if (path[0] === "inventory" && path[2] === "adjust") return ok(await inventoryAdjust({ inventoryId: path[1] ?? "", quantity: numberValue(body.quantity), notes: stringValue(body.notes) })); - if (path[0] === "inventory") return ok(await updateInventoryItemService(path[1] ?? "", body)); - if (path[0] === "orders" && path[2] === "cancel") return ok(await cancelOrderService(path[1] ?? "", stringValue(body.shopId), stringValue(body.reason))); - if (path[0] === "staff" && path[1] && path[1] !== "me") return ok(await updateStaff(path[1], body)); - if (path[0] === "members" && path[1]) return ok(await updateMember(path[1], body)); - if ((path[0] === "campaigns" || path[0] === "promotions") && path[1]) return ok(await updateCampaign(path[1], body)); - if (path[0] === "files" && path[1]) return ok(await updateFileRecord(path[1], body)); - if (path[0] === "appointments") return ok(await updateAppointmentStatus(path[1] ?? "", String(body.action ?? body.status ?? "confirmed"))); - if (path[0] === "reservations") return ok(await updateReservationStatus(path[1] ?? "", String(body.status ?? "confirmed"))); - if (path[0] === "kitchen" && path[1] === "tickets") return ok(await updateKitchenTicket(path[2] ?? "", String(body.status ?? "InProgress"))); - if (path[0] === "ai" && path[1] === "config") return ok(await saveAiConfig(body)); + if (path[0] === "account" && (path[1] === "profile" || path[1] === "me")) { + return fail("Account profile update requires persisted user profile support", { status: 501 }); + } + if (path[0] === "shops" && path[2] === "settings") { + const denied = await requireShopAdminAccess(path[1]); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await updateShopSettingsService(path[1] ?? "", body)); + } + if (path[0] === "shops" && path.length === 2) { + const denied = await requireShopAdminAccess(path[1]); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await updateShopService(path[1] ?? "", body)); + } + if (path[0] === "products") { + const existing = await getCatalogProduct(path[1] ?? ""); + if (!existing) return fail("Product not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], stringValue(body.shopId) ?? stringValue(body.shop_id) ?? stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + const categoryId = stringValue(body.categoryId); + if (categoryId) { + const category = await getCatalogCategory(categoryId); + if (!category) return fail("Category not found", { status: 404 }); + const categoryDenied = await requireRecordShopRoleAccess(category, ["admin"], recordShopId(existing)); + if (categoryDenied) return fail(categoryDenied.message, { status: categoryDenied.status }); + } + return ok(await updateCatalogProduct(path[1] ?? "", body)); + } + if (path[0] === "categories") { + const existing = await getCatalogCategory(path[1] ?? ""); + if (!existing) return fail("Category not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], stringValue(body.shopId) ?? stringValue(body.shop_id) ?? stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await updateCatalogCategory(path[1] ?? "", body)); + } + if (path[0] === "tables") { + const existing = await getTable(path[1] ?? ""); + if (!existing) return fail("Table not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], stringValue(body.shopId) ?? stringValue(body.shop_id) ?? stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + if (path[2] === "status") return ok(await updateTableStatusService(path[1] ?? "", numberValue(body.statusId, 1))); + return ok(await updateTableService(path[1] ?? "", body)); + } + if (path[0] === "inventory" && path[1] === "items" && path[2]) { + const existing = await getInventoryService(path[2]); + if (!existing) return fail("Inventory item not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], stringValue(body.shopId) ?? stringValue(body.shop_id) ?? stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await updateInventoryItemService(path[2], body)); + } + if (path[0] === "inventory" && path[2] === "adjust") { + const existing = await getInventoryService(path[1] ?? ""); + if (!existing) return fail("Inventory item not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], stringValue(body.shopId) ?? stringValue(body.shop_id) ?? stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await inventoryAdjust({ inventoryId: path[1] ?? "", quantity: numberValue(body.quantity), notes: stringValue(body.notes) })); + } + if (path[0] === "inventory") { + const existing = await getInventoryService(path[1] ?? ""); + if (!existing) return fail("Inventory item not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], stringValue(body.shopId) ?? stringValue(body.shop_id) ?? stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await updateInventoryItemService(path[1] ?? "", body)); + } + if (path[0] === "orders" && path[2] === "cancel") { + const shopId = requestShopId(body, url); + if (!shopId) return fail("shopId is required", { status: 400 }); + const denied = await requireShopRoleAccess(shopId, ["admin", "staff"]); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await cancelOrderService(path[1] ?? "", shopId, stringValue(body.reason))); + } + if (path[0] === "staff" && path[1] && path[1] !== "me") { + const existing = await getStaff(path[1]); + if (!existing) return fail("Staff not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], stringValue(body.shopId) ?? stringValue(body.shop_id) ?? stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await updateStaff(path[1], body)); + } + if (path[0] === "members" && path[1]) { + const existing = await getMember(path[1]); + if (!existing) return fail("Member not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin", "marketing"], stringValue(body.shopId) ?? stringValue(body.shop_id) ?? stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await updateMember(path[1], body)); + } + if ((path[0] === "campaigns" || path[0] === "promotions") && path[1]) { + const existing = await getCampaign(path[1]); + if (!existing) return fail("Campaign not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin", "marketing"], stringValue(body.shopId) ?? stringValue(body.shop_id) ?? stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await updateCampaign(path[1], body)); + } + if (path[0] === "files" && path[1]) { + const scoped = requiredShopId(stringValue(body.shopId) ?? stringValue(body.shop_id) ?? stringValue(url.searchParams.get("shopId"))); + if ("error" in scoped) return scoped.error; + const fileScopeDenied = await requireShopRoleAccess(scoped.shopId, ["admin"]); + if (fileScopeDenied) return fail(fileScopeDenied.message, { status: fileScopeDenied.status }); + return ok(await updateFileRecord(path[1], scoped.shopId, body)); + } + if (path[0] === "appointments") { + const appointment = await getAppointment(path[1] ?? ""); + if (!appointment) return fail("Appointment not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(appointment, ["admin", "staff"], requestShopId(body, url)); + if (denied) return fail(denied.message, { status: denied.status }); + const action = path[2] === "cancel" ? "cancel" : String(body.action ?? body.status ?? "confirmed"); + return ok(await updateAppointmentStatus(path[1] ?? "", action)); + } + if (path[0] === "reservations") { + const reservation = await getReservation(path[1] ?? ""); + if (!reservation) return fail("Reservation not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(reservation, ["admin", "staff"], requestShopId(body, url)); + if (denied) return fail(denied.message, { status: denied.status }); + const status = path[2] === "cancel" ? "cancelled" : String(body.status ?? "confirmed"); + return ok(await updateReservationStatus(path[1] ?? "", status)); + } + if (path[0] === "kitchen" && path[1] === "tickets") { + const ticket = await getKitchenTicket(path[2] ?? ""); + if (!ticket) return fail("Kitchen ticket not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(ticket, ["admin", "staff"], requestShopId(body, url)); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await updateKitchenTicket(path[2] ?? "", String(body.status ?? "InProgress"))); + } + if (path[0] === "ai" && path[1] === "config") { + const shopId = requestShopId(body, url); + if (!shopId) return fail("shopId is required", { status: 400 }); + const denied = await requireShopRoleAccess(shopId, ["admin"]); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await saveAiConfig({ ...body, shopId })); + } if (path[0] === "superadmin" && path[1] === "feature-flags" && path[2]) return ok(await updateFeatureFlag(path[2], Boolean(body.enabled))); if (path[0] === "superadmin" && path[1] === "system" && path[2] === "flags" && path[3]) return ok(await updateFeatureFlag(path[3], Boolean(body.enabled))); return fail("BFF route not found", { status: 404 }); @@ -746,6 +1213,10 @@ export async function PUT(request: Request, context: RouteContext) { } } +export async function PATCH(request: Request, context: RouteContext) { + return PUT(request, context); +} + export async function DELETE(request: Request, context: RouteContext) { try { const path = (await context.params).path ?? []; @@ -753,16 +1224,94 @@ export async function DELETE(request: Request, context: RouteContext) { if (accessDenied) return fail(accessDenied.message, { status: accessDenied.status }); const deleteDenied = await requireRoles(["admin"]); if (deleteDenied) return fail(deleteDenied.message, { status: deleteDenied.status }); - if (path[0] === "products") return ok(await deleteCatalogProduct(path[1] ?? "")); - if (path[0] === "categories") return ok(await deleteCatalogCategory(path[1] ?? "")); - if (path[0] === "tables") return ok(await removeTableService(path[1] ?? "")); - if (path[0] === "inventory" && path[1] === "items") return ok(await deleteInventoryItemService(path[2] ?? "")); - if (path[0] === "staff") return ok(await deleteStaff(path[1] ?? "")); - if (path[0] === "members") return ok(await deleteMember(path[1] ?? "")); - if (path[0] === "campaigns") return ok(await setCampaignStatus(path[1] ?? "", "disabled")); - if (path[0] === "folders") return ok(await deleteFolder(path[1] ?? "")); - if (path[0] === "files") return ok(await deleteFileRecord(path[1] ?? "")); - return fail("BFF route not found", { status: 404 }); + const url = urlFromRequest(request); + if (path[0] === "products") { + const existing = await getCatalogProduct(path[1] ?? ""); + if (!existing) return fail("Product not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await deleteCatalogProduct(path[1] ?? "")); + } + if (path[0] === "categories") { + const existing = await getCatalogCategory(path[1] ?? ""); + if (!existing) return fail("Category not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await deleteCatalogCategory(path[1] ?? "")); + } + if (path[0] === "tables") { + const existing = await getTable(path[1] ?? ""); + if (!existing) return fail("Table not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await removeTableService(path[1] ?? "")); + } + if (path[0] === "inventory" && path[1] === "items") { + const existing = await getInventoryService(path[2] ?? ""); + if (!existing) return fail("Inventory item not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await deleteInventoryItemService(path[2] ?? "")); + } + if (path[0] === "staff") { + const existing = await getStaff(path[1] ?? ""); + if (!existing) return fail("Staff not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin"], stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await deleteStaff(path[1] ?? "")); + } + if (path[0] === "members") { + const existing = await getMember(path[1] ?? ""); + if (!existing) return fail("Member not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin", "marketing"], stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await deleteMember(path[1] ?? "")); + } + if (path[0] === "campaigns") { + const existing = await getCampaign(path[1] ?? ""); + if (!existing) return fail("Campaign not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(existing, ["admin", "marketing"], stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await setCampaignStatus(path[1] ?? "", "disabled")); + } + if (path[0] === "folders") { + const scoped = requiredShopId(url.searchParams.get("shopId")); + if ("error" in scoped) return scoped.error; + const folderScopeDenied = await requireShopRoleAccess(scoped.shopId, ["admin"]); + if (folderScopeDenied) return fail(folderScopeDenied.message, { status: folderScopeDenied.status }); + return ok(await deleteFolder(path[1] ?? "", scoped.shopId)); + } + if (path[0] === "files") { + const scoped = requiredShopId(url.searchParams.get("shopId")); + if ("error" in scoped) return scoped.error; + const fileScopeDenied = await requireShopRoleAccess(scoped.shopId, ["admin"]); + if (fileScopeDenied) return fail(fileScopeDenied.message, { status: fileScopeDenied.status }); + const file = await getFileRecord(path[1] ?? "", scoped.shopId) as ({ object_key?: string | null; provider?: string | null } & Record) | null; + if (!file) return fail("File not found", { status: 404 }); + if (file.object_key && String(file.provider ?? "s3").toLowerCase() === "s3") { + const s3Config = s3DeleteConfigStatus(); + if (!s3Config.configured) { + throw new Error(`S3 cleanup configuration is incomplete: missing ${s3Config.missing.join(", ")}`); + } + await deleteS3Object(file.object_key); + } + return ok(await deleteFileRecord(path[1] ?? "", scoped.shopId)); + } + if (path[0] === "appointments" && path[2] === "cancel") { + const appointment = await getAppointment(path[1] ?? ""); + if (!appointment) return fail("Appointment not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(appointment, ["admin", "staff"], stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await updateAppointmentStatus(path[1] ?? "", "cancel")); + } + if (path[0] === "reservations" && path[2] === "cancel") { + const reservation = await getReservation(path[1] ?? ""); + if (!reservation) return fail("Reservation not found", { status: 404 }); + const denied = await requireRecordShopRoleAccess(reservation, ["admin", "staff"], stringValue(url.searchParams.get("shopId"))); + if (denied) return fail(denied.message, { status: denied.status }); + return ok(await updateReservationStatus(path[1] ?? "", "cancelled")); + } + return fail("BFF route not found", { status: 404 }); } catch (error) { return fail(error instanceof Error ? error.message : "BFF request failed", { status: 400 }); } diff --git a/microservices/apps/tpos-mvp-next/src/app/globals.css b/microservices/apps/tpos-mvp-next/src/app/globals.css index 970fdd8f..61eb2697 100644 --- a/microservices/apps/tpos-mvp-next/src/app/globals.css +++ b/microservices/apps/tpos-mvp-next/src/app/globals.css @@ -2404,6 +2404,13 @@ button:disabled { cursor: pointer; } +.pos-bottom-nav__tab span { + max-width: 100%; + line-height: 1.15; + overflow-wrap: anywhere; + text-align: center; +} + .pos-bottom-nav__tab--active, .pos-bottom-nav__tab:hover { border-color: rgba(255, 92, 0, 0.42); @@ -2620,6 +2627,11 @@ button:disabled { color: #ffffff; } +.pos-payment-method-btn:disabled { + cursor: not-allowed; + opacity: 0.46; +} + .pos-payment-quick-amounts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); @@ -2679,13 +2691,21 @@ button:disabled { display: none; } - .pos-clone .pos-content-area { - grid-template-columns: minmax(0, 1fr); - } + .pos-clone .pos-content-area { + grid-template-columns: minmax(0, 1fr); + overflow: auto; + } - .pos-cart-panel { - display: none; - } + .pos-cart-panel { + display: flex; + width: 100%; + min-width: 0; + height: auto; + min-height: 560px; + border-top: 1px solid #202024; + border-left: 0; + overflow: visible; + } } @media (max-width: 760px) { @@ -2714,15 +2734,16 @@ button:disabled { flex-direction: column; } - .pos-clone .pos-content-area { - flex: 1; - display: block; - overflow: hidden; - } + .pos-clone .pos-content-area { + flex: 1; + display: block; + overflow-y: auto; + } - .pos-product-panel { - height: calc(100vh - 50px - 64px); - } + .pos-product-panel { + height: auto; + min-height: calc(100vh - 50px - 64px); + } .pos-clone .pos-bottom-nav { order: 2; @@ -3450,6 +3471,7 @@ textarea { } .pos-bottom-nav__tab { + position: relative; min-height: auto; gap: 3px; margin: 0 6px; @@ -3467,6 +3489,17 @@ textarea { color: #ff5c00; } +.pos-bottom-nav__tab--active::before { + content: ""; + position: absolute; + top: 10px; + bottom: 10px; + left: 0; + width: 3px; + border-radius: 999px; + background: #ff5c00; +} + .pos-clone .pos-history { grid-column: 1; grid-row: 1; @@ -4391,7 +4424,8 @@ textarea { gap: 6px; } -.workflow-action-panel input { +.workflow-action-panel input, +.workflow-action-panel select { min-height: 44px; border: 1px solid #2a2a2e; border-radius: 10px; @@ -4400,6 +4434,37 @@ textarea { padding: 0 12px; } +.workflow-action-panel--methods { + align-items: stretch; + grid-template-columns: minmax(0, 1fr) minmax(280px, 440px); +} + +.workflow-payment-method-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 10px; +} + +.workflow-payment-method { + min-height: 74px; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + gap: 8px; + border: 1px solid #2a2a2e; + border-radius: 12px; + background: #0a0a0b; + color: #ffffff; + font-weight: 800; + text-decoration: none; +} + +.workflow-payment-method:disabled { + cursor: not-allowed; + opacity: 0.44; +} + /* Customer QR menu follows the original compact white mobile menu */ .customer-menu { min-height: 100vh; @@ -4802,13 +4867,21 @@ textarea { grid-template-columns: 1fr; } - .pos-clone .pos-content-area { - grid-template-columns: minmax(0, 1fr); - } + .pos-clone .pos-content-area { + grid-template-columns: minmax(0, 1fr); + overflow: auto; + } - .pos-cart-panel { - display: none; - } + .pos-cart-panel { + display: flex; + width: 100%; + min-width: 0; + height: auto; + min-height: 560px; + border-top: 1px solid #202024; + border-left: 0; + overflow: visible; + } .workflow-action-panel { grid-template-columns: 1fr; @@ -4839,15 +4912,16 @@ textarea { display: flex; } - .pos-clone .pos-bottom-nav { - width: 64px; + .pos-clone .pos-bottom-nav { + width: 64px; height: auto; order: 2; } - .pos-product-panel { - height: calc(100vh - 48px); - } + .pos-product-panel { + height: auto; + min-height: calc(100vh - 48px); + } .pos-product-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); @@ -4925,12 +4999,12 @@ textarea { .landing-hero { position: relative; - min-height: 64vh; + min-height: 46vh; display: flex; flex-direction: column; align-items: center; justify-content: center; - padding: 64px 24px 48px; + padding: 52px 24px 30px; text-align: center; overflow: hidden; } @@ -5013,13 +5087,29 @@ textarea { color: #ff5c00; } +.home-hero__brand { + position: relative; + z-index: 1; + display: inline-flex; + align-items: center; + gap: 12px; + margin-bottom: 20px; + color: #ffffff; + font-size: 28px; + font-weight: 800; +} + +.home-hero__brand svg { + color: #ff5c00; +} + .home-hero__badge { position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 8px; - margin-bottom: 32px; + margin-bottom: 22px; padding: 8px 20px; border: 1px solid rgba(255, 92, 0, 0.25); border-radius: 999px; @@ -5033,9 +5123,9 @@ textarea { .home-hero__title { position: relative; z-index: 1; - max-width: 800px; - margin: 0 0 24px; - font-size: 48px; + max-width: 780px; + margin: 0 0 20px; + font-size: 44px; font-weight: 800; line-height: 1.08; letter-spacing: 0; @@ -5045,8 +5135,8 @@ textarea { .home-hero__subtitle { position: relative; z-index: 1; - max-width: 640px; - margin: 0 auto 40px; + max-width: 700px; + margin: 0 auto 30px; color: #adadb0; font-size: 16px; line-height: 1.7; @@ -5059,7 +5149,7 @@ textarea { justify-content: center; flex-wrap: wrap; gap: 16px; - margin-bottom: 48px; + margin-bottom: 30px; } .home-hero__btn { @@ -5111,9 +5201,33 @@ textarea { } .home-verticals { - max-width: 900px; + max-width: 1080px; margin: 0 auto; - padding: 48px 24px 64px; + padding: 14px 24px 44px; +} + +.home-verticals__head { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + margin-bottom: 16px; +} + +.home-verticals__head span { + color: #ffffff; + font-size: 18px; + font-weight: 800; +} + +.home-verticals__head a { + display: inline-flex; + align-items: center; + gap: 6px; + color: #ff8a4c; + font-size: 14px; + font-weight: 700; + text-decoration: none; } .home-verticals__grid { @@ -5123,13 +5237,13 @@ textarea { } .home-vertical-card { - min-height: 128px; + min-height: 150px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; - padding: 24px 16px; + padding: 22px 14px; border: 1px solid #1f1f23; border-radius: 14px; background: #111113; @@ -5144,12 +5258,48 @@ textarea { color: #ff5c00; } +.home-vertical-card span { + color: #ffffff; + font-size: 14px; +} + +.home-vertical-card p { + margin: 0; + color: #8b8b90; + font-size: 12px; + font-weight: 500; + line-height: 1.4; +} + .home-vertical-card:hover { border-color: #ff5c00; background: rgba(255, 92, 0, 0.15); color: #ffffff; } +.home-portal-strip { + max-width: 1080px; + min-height: 86px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 18px; + margin: 0 auto; + padding: 0 24px 48px; +} + +.home-portal-strip > div { + display: inline-flex; + align-items: center; + gap: 10px; + color: #ffffff; + font-weight: 700; +} + +.home-portal-strip svg { + color: #ff5c00; +} + .tpos-section, .project-intro, .landing-cta { @@ -5436,7 +5586,7 @@ textarea { } .home-verticals__grid { - grid-template-columns: repeat(3, minmax(0, 1fr)); + grid-template-columns: repeat(2, minmax(0, 1fr)); } .tpos-feature-grid, @@ -5464,7 +5614,8 @@ textarea { } .home-hero__actions, - .landing-cta div { + .landing-cta div, + .home-portal-strip { width: 100%; flex-direction: column; } @@ -5475,7 +5626,17 @@ textarea { .home-verticals__grid, .login-portal__grid { - grid-template-columns: repeat(2, minmax(0, 1fr)); + grid-template-columns: 1fr; + } + + .home-verticals__head { + align-items: flex-start; + flex-direction: column; + } + + .home-portal-strip { + align-items: stretch; + padding: 0 16px 36px; } } @@ -5747,11 +5908,11 @@ textarea { /* Final POS responsive guard: keep History/Dashboard out from under the right rail. */ @media (max-width: 760px) { - .pos-clone .pos-page-content { - display: grid; - grid-template-columns: minmax(0, 1fr) 64px; - height: calc(100vh - 48px); - } + .pos-clone .pos-page-content { + display: grid; + grid-template-columns: minmax(0, 1fr) 64px; + height: calc(100vh - 48px); + } .pos-clone .pos-history, .pos-clone .pos-dashboard, @@ -5778,6 +5939,15 @@ textarea { color: #f5f5f7; } +.admin-mobile-bar { + display: none; +} + +.admin-sidebar-overlay, +.admin-sidebar__close { + display: none; +} + .admin-sidebar { width: 260px; min-width: 260px; @@ -5802,6 +5972,10 @@ textarea { text-decoration: none; } +.admin-sidebar__logo-text { + flex: 1; +} + .admin-sidebar__logo-icon { width: 40px; height: 40px; @@ -5974,6 +6148,66 @@ textarea { color: #22c55e; } +.admin-reference-list { + display: flex; + flex-direction: column; + gap: 10px; +} + +.admin-reference-row { + min-height: 64px; + display: grid; + grid-template-columns: minmax(0, 1fr) auto auto; + align-items: center; + gap: 14px; + padding: 12px 14px; + border: 1px solid #242429; + border-radius: 8px; + background: #151518; + color: inherit; + text-decoration: none; +} + +.admin-reference-row:hover { + border-color: rgba(255, 92, 0, 0.55); + background: #1a1a1e; +} + +.admin-reference-row__main { + display: flex; + min-width: 0; + flex-direction: column; + gap: 4px; +} + +.admin-reference-row__main strong { + overflow: hidden; + color: #ffffff; + font-size: 14px; + font-weight: 650; + text-overflow: ellipsis; + white-space: nowrap; +} + +.admin-reference-row__main span { + overflow: hidden; + color: #8b8b90; + font-size: 12px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.admin-reference-row > b { + color: #f5f5f7; + font-size: 13px; + font-weight: 650; + white-space: nowrap; +} + +.admin-reference-row > svg { + color: #77777d; +} + .admin-main { flex: 1; display: flex; @@ -6790,6 +7024,170 @@ textarea { font-size: 13px; } +.admin-inline-note { + min-height: 38px; + display: flex; + align-items: center; + gap: 8px; + border: 1px solid rgba(59, 130, 246, 0.18); + border-radius: 10px; + background: rgba(59, 130, 246, 0.08); + color: #adadb0; + padding: 9px 12px; + font-size: 12px; + font-weight: 600; +} + +.admin-inline-note svg { + flex-shrink: 0; + color: #60a5fa; +} + +.admin-table-wrap { + overflow-x: auto; +} + +.admin-data-table { + width: 100%; + min-width: 760px; + border-collapse: collapse; +} + +.admin-data-table th { + padding: 10px 12px; + border-bottom: 1px solid #2a2a2e; + color: #8b8b90; + font-size: 11px; + font-weight: 800; + letter-spacing: 0; + text-align: left; + text-transform: uppercase; +} + +.admin-data-table td { + padding: 11px 12px; + border-bottom: 1px solid #242428; + color: #d7d7db; + font-size: 13px; + vertical-align: middle; +} + +.admin-data-table td > b, +.admin-data-table td > strong { + display: block; + color: #ffffff; + font-size: 13px; +} + +.admin-data-table td > span { + display: block; + margin-top: 3px; + color: #8b8b90; + font-size: 11px; +} + +.admin-data-table .is-right { + text-align: right; +} + +.admin-finance-grid { + display: grid; + grid-template-columns: minmax(0, 1.45fr) minmax(300px, 0.55fr); + gap: 20px; +} + +.admin-finance-grid--bottom { + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); +} + +.admin-finance-chart { + min-height: 340px; +} + +.admin-finance-bars { + height: 250px; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(44px, 1fr)); + gap: 10px; + align-items: end; + padding-top: 8px; +} + +.admin-finance-bar { + min-width: 0; + display: grid; + gap: 7px; + align-items: end; + text-align: center; +} + +.admin-finance-bar b { + overflow: hidden; + color: #ff7a2f; + font-size: 10px; + font-weight: 800; + text-overflow: ellipsis; + white-space: nowrap; +} + +.admin-finance-bar > div { + height: 190px; + display: flex; + align-items: end; + border-radius: 9px; + background: #111114; + overflow: hidden; +} + +.admin-finance-bar span { + width: 100%; + display: block; + border-radius: 9px 9px 0 0; + background: linear-gradient(180deg, #ff7a2f 0%, #ff5c00 100%); +} + +.admin-finance-bar small { + color: #8b8b90; + font-size: 11px; +} + +.admin-compact-list { + display: grid; + gap: 8px; +} + +.admin-compact-row { + min-height: 52px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + border-radius: 10px; + background: #202024; + padding: 10px 12px; +} + +.admin-compact-row > div { + min-width: 0; + display: grid; + gap: 2px; +} + +.admin-compact-row b, +.admin-compact-row strong { + overflow: hidden; + color: #ffffff; + font-size: 13px; + font-weight: 750; + text-overflow: ellipsis; + white-space: nowrap; +} + +.admin-compact-row span { + color: #8b8b90; + font-size: 12px; +} + .spinner-small, .spin { animation: spin 0.9s linear infinite; @@ -6854,3 +7252,150 @@ textarea { align-items: flex-start; } } + +@media (max-width: 960px) { + .admin-layout { + min-height: 100dvh; + padding-top: 56px; + } + + .admin-mobile-bar { + position: fixed; + inset: 0 0 auto; + z-index: 75; + min-height: 56px; + display: flex; + align-items: center; + gap: 12px; + padding: 8px 14px; + border-bottom: 1px solid #242429; + background: #161619; + } + + .admin-mobile-bar__button { + width: 38px; + height: 38px; + display: grid; + place-items: center; + border: 1px solid #2d2d33; + border-radius: 8px; + background: #1c1c20; + color: #f5f5f7; + } + + .admin-mobile-bar div { + display: flex; + min-width: 0; + flex-direction: column; + } + + .admin-mobile-bar b { + color: #ffffff; + font-size: 14px; + } + + .admin-mobile-bar span { + overflow: hidden; + color: #8b8b90; + font-size: 11px; + text-overflow: ellipsis; + white-space: nowrap; + } + + .admin-sidebar { + position: fixed; + z-index: 90; + inset: 0 auto 0 0; + transform: translateX(-100%); + transition: transform 0.2s ease; + } + + .admin-sidebar--open { + transform: translateX(0); + } + + .admin-sidebar-overlay { + position: fixed; + z-index: 85; + inset: 0; + display: block; + border: 0; + background: rgba(0, 0, 0, 0.55); + } + + .admin-sidebar__close { + width: 32px; + height: 32px; + display: grid; + place-items: center; + border: 1px solid #2d2d33; + border-radius: 8px; + background: #1c1c20; + color: #f5f5f7; + } + + .admin-main { + width: 100%; + } + + .admin-topbar { + min-height: 0; + padding: 14px; + } + + .admin-topbar__right { + flex-wrap: wrap; + } + + .admin-search { + flex: 1 1 220px; + } + + .admin-finance-grid, + .admin-finance-grid--bottom { + grid-template-columns: 1fr; + } + + .admin-content { + padding: 14px; + } +} + +@media (max-width: 640px) { + .admin-reference-row { + grid-template-columns: minmax(0, 1fr); + align-items: start; + } + + .admin-reference-row > b { + white-space: normal; + } + + .admin-topbar__title { + font-size: 22px; + } +} + +@media (min-width: 761px) { + .pos-clone .pos-main { + display: grid; + grid-template-columns: 156px minmax(0, 1fr); + } + + .pos-clone .pos-sidebar { + position: static; + width: auto; + min-width: 0; + display: flex; + flex-direction: column; + gap: 10px; + padding: 14px 10px; + border-right: 1px solid #202024; + background: rgba(17, 17, 20, 0.96); + } + + .pos-clone .pos-page-content { + display: grid; + grid-template-columns: minmax(0, 1fr) 82px; + } +} diff --git a/microservices/apps/tpos-mvp-next/src/app/marketing/[...path]/page.tsx b/microservices/apps/tpos-mvp-next/src/app/marketing/[...path]/page.tsx index 2c39829f..a6d6e108 100644 --- a/microservices/apps/tpos-mvp-next/src/app/marketing/[...path]/page.tsx +++ b/microservices/apps/tpos-mvp-next/src/app/marketing/[...path]/page.tsx @@ -1,5 +1,6 @@ import { notFound } from "next/navigation"; import { TposPortal, buildPortalPayload } from "@/components/TposPortal"; +import { portalShopId, requirePortalRole } from "@/server/auth/portal"; import { providerCredentialStatus } from "@/server/integrations/external"; import { listCampaigns, listMembers, reportRevenue } from "@/server/services/parity"; import { portalNav } from "@/components/tpos-config"; @@ -8,9 +9,11 @@ export const dynamic = "force-dynamic"; export default async function MarketingCatchAllPage({ params }: { params: Promise<{ path?: string[] }> }) { const path = (await params).path ?? []; + const user = await requirePortalRole(["admin", "marketing"], `/marketing/${path.join("/")}`); + const shopId = portalShopId(user, "marketing") ?? portalShopId(user, "admin"); const section = path.join("/") || "marketing"; if (!isKnownMarketingSection(section)) notFound(); - const items = await loadItems(section); + const items = await loadItems(section, shopId); const status = providerCredentialStatus(); return ( ({ title: String(member.display_name ?? "Khách hàng"), meta: String(member.phone ?? ""), value: `Level ${member.current_level}` })); } if (section === "analytics") { - const rows = await reportRevenue(); + const rows = await reportRevenue(shopId); return rows.map((row) => ({ title: String(row.day), meta: `${row.order_count} đơn`, value: `${row.revenue} VND` })); } if (section === "content") { - const campaigns = await listCampaigns(); + const campaigns = await listCampaigns(shopId); return [ { title: "Lịch nội dung", meta: "Bài viết theo kênh", value: `${campaigns.length} chiến dịch` }, { title: "AI caption", meta: "Sinh nội dung qua provider đã cấu hình", value: "AI" }, @@ -58,7 +61,7 @@ async function loadItems(section: string) { ]; } if (section === "marketing") { - const campaigns = await listCampaigns(); + const campaigns = await listCampaigns(shopId); return campaigns.map((campaign) => ({ title: String(campaign.name), meta: String(campaign.description ?? "Campaign"), value: String(campaign.status) })); } notFound(); diff --git a/microservices/apps/tpos-mvp-next/src/app/marketing/page.tsx b/microservices/apps/tpos-mvp-next/src/app/marketing/page.tsx index 58ba4923..7632f294 100644 --- a/microservices/apps/tpos-mvp-next/src/app/marketing/page.tsx +++ b/microservices/apps/tpos-mvp-next/src/app/marketing/page.tsx @@ -1,11 +1,14 @@ import { TposPortal, buildPortalPayload } from "@/components/TposPortal"; +import { portalShopId, requirePortalRole } from "@/server/auth/portal"; import { listCampaigns } from "@/server/services/parity"; import { providerCredentialStatus } from "@/server/integrations/external"; export const dynamic = "force-dynamic"; export default async function MarketingPage() { - const campaigns = await listCampaigns(); + const user = await requirePortalRole(["admin", "marketing"], "/marketing"); + const shopId = portalShopId(user, "marketing") ?? portalShopId(user, "admin"); + const campaigns = await listCampaigns(shopId); const status = providerCredentialStatus(); return ( ; + export default async function PosVerticalPage({ - params + params, + searchParams }: { params: Promise<{ shopId: string; vertical: string; workflow?: string[] }>; + searchParams?: Promise; }) { const { shopId, vertical, workflow } = await params; - return renderPosExperience(shopId, vertical, workflow); + const query = await searchParams; + const pathTab = posTabFromPath(workflow?.[0]); + const resolvedWorkflow = pathTab ? undefined : verticalFamilyWorkflow(workflow, query); + return renderPosExperience(shopId, vertical, resolvedWorkflow, pathTab ?? posTabFromQuery(query?.tab)); } diff --git a/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/dialog/[...path]/page.tsx b/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/dialog/[...path]/page.tsx index 582ca152..def0e2e1 100644 --- a/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/dialog/[...path]/page.tsx +++ b/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/dialog/[...path]/page.tsx @@ -1,4 +1,4 @@ -import { firstQueryValue, renderPosExperience } from "../../../pos-experience"; +import { appendWorkflowContext, dialogWorkflow, firstQueryValue, renderPosExperience } from "../../../pos-experience"; export const dynamic = "force-dynamic"; @@ -13,27 +13,5 @@ export default async function PosDialogAlias({ }) { const { shopId, path } = await params; const query = await searchParams; - return renderPosExperience(shopId, firstQueryValue(query?.vertical), dialogWorkflow(path)); -} - -function dialogWorkflow(path: string[]) { - const [head, ...rest] = path.length ? path : ["order-edit"]; - const map: Record = { - order: "order-edit", - "order-edit": "order-edit", - note: "order-edit", - discount: "discount", - customer: "customer-select", - "customer-select": "customer-select", - table: "table-transfer", - "table-transfer": "table-transfer", - "split-bill": "split-bill", - cancel: "void-refund", - "order-cancel": "void-refund", - "price-check": "product-search", - "stock-in": "stock-check", - "stock-out": "stock-check", - "stock-transfer": "stock-check" - }; - return [map[head] ?? head, ...rest]; + return renderPosExperience(shopId, firstQueryValue(query?.vertical), appendWorkflowContext(dialogWorkflow(path), query)); } diff --git a/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/dialog/page.tsx b/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/dialog/page.tsx new file mode 100644 index 00000000..1a866825 --- /dev/null +++ b/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/dialog/page.tsx @@ -0,0 +1,17 @@ +import { appendWorkflowContext, dialogWorkflow, firstQueryValue, renderPosExperience } from "../../pos-experience"; + +export const dynamic = "force-dynamic"; + +type SearchParams = Record; + +export default async function PosDialogIndex({ + params, + searchParams +}: { + params: Promise<{ shopId: string }>; + searchParams?: Promise; +}) { + const { shopId } = await params; + const query = await searchParams; + return renderPosExperience(shopId, firstQueryValue(query?.vertical), appendWorkflowContext(dialogWorkflow([]), query)); +} diff --git a/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/operations/[...path]/page.tsx b/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/operations/[...path]/page.tsx index 97814adf..36488e96 100644 --- a/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/operations/[...path]/page.tsx +++ b/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/operations/[...path]/page.tsx @@ -1,4 +1,4 @@ -import { firstQueryValue, renderPosExperience } from "../../../pos-experience"; +import { appendWorkflowContext, firstQueryValue, operationWorkflow, renderPosExperience } from "../../../pos-experience"; export const dynamic = "force-dynamic"; @@ -13,29 +13,5 @@ export default async function PosOperationsAlias({ }) { const { shopId, path } = await params; const query = await searchParams; - return renderPosExperience(shopId, firstQueryValue(query?.vertical), operationWorkflow(path)); -} - -function operationWorkflow(path: string[]) { - const [head, ...rest] = path.length ? path : ["shift"]; - const map: Record = { - drawer: "cash-drawer", - "cash-drawer": "cash-drawer", - shift: "shift", - pending: "pending-orders", - "pending-orders": "pending-orders", - quick: "quick-sale", - "quick-sale": "quick-sale", - split: "split-bill", - "split-bill": "split-bill", - refund: "void-refund", - "void-refund": "void-refund", - "clock-in-out": "shift", - "stock-in": "stock-check", - "stock-out": "stock-check", - "stock-transfer": "stock-check", - "price-check": "product-search", - "order-cancel": "void-refund" - }; - return [map[head] ?? head, ...rest]; + return renderPosExperience(shopId, firstQueryValue(query?.vertical), appendWorkflowContext(operationWorkflow(path), query)); } diff --git a/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/operations/page.tsx b/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/operations/page.tsx new file mode 100644 index 00000000..64faa0d6 --- /dev/null +++ b/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/operations/page.tsx @@ -0,0 +1,17 @@ +import { appendWorkflowContext, firstQueryValue, operationWorkflow, renderPosExperience } from "../../pos-experience"; + +export const dynamic = "force-dynamic"; + +type SearchParams = Record; + +export default async function PosOperationsIndex({ + params, + searchParams +}: { + params: Promise<{ shopId: string }>; + searchParams?: Promise; +}) { + const { shopId } = await params; + const query = await searchParams; + return renderPosExperience(shopId, firstQueryValue(query?.vertical), appendWorkflowContext(operationWorkflow([]), query)); +} diff --git a/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/payment/[...path]/page.tsx b/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/payment/[...path]/page.tsx index a652a7a5..a90f1b68 100644 --- a/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/payment/[...path]/page.tsx +++ b/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/payment/[...path]/page.tsx @@ -1,4 +1,4 @@ -import { firstQueryValue, renderPosExperience } from "../../../pos-experience"; +import { firstQueryValue, paymentWorkflow, renderPosExperience } from "../../../pos-experience"; export const dynamic = "force-dynamic"; @@ -13,31 +13,5 @@ export default async function PosPaymentAlias({ }) { const { shopId, path } = await params; const query = await searchParams; - return renderPosExperience(shopId, firstQueryValue(query?.vertical), paymentWorkflow(path)); -} - -function paymentWorkflow(path: string[]) { - const [head, ...rest] = path.length ? path : ["method-select"]; - const map: Record = { - cash: "cash-payment", - "cash-payment": "cash-payment", - card: "card-payment", - "card-payment": "card-payment", - qr: "qr-payment", - "qr-payment": "qr-payment", - transfer: "transfer-payment", - "transfer-payment": "transfer-payment", - "gift-card": "gift-card-payment", - "gift-card-payment": "gift-card-payment", - "bank-transfer": "transfer-payment", - partial: "partial-payment", - "partial-payment": "partial-payment", - pending: "payment-pending", - "payment-pending": "payment-pending", - success: "payment-success", - "payment-success": "payment-success", - receipt: "payment-success", - tip: "partial-payment" - }; - return [map[head] ?? head, ...rest]; + return renderPosExperience(shopId, firstQueryValue(query?.vertical), paymentWorkflow(path, firstQueryValue(query?.orderId))); } diff --git a/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/payment/page.tsx b/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/payment/page.tsx new file mode 100644 index 00000000..6b9544c8 --- /dev/null +++ b/microservices/apps/tpos-mvp-next/src/app/pos/[shopId]/payment/page.tsx @@ -0,0 +1,17 @@ +import { firstQueryValue, paymentWorkflow, renderPosExperience } from "../../pos-experience"; + +export const dynamic = "force-dynamic"; + +type SearchParams = Record; + +export default async function PosPaymentIndex({ + params, + searchParams +}: { + params: Promise<{ shopId: string }>; + searchParams?: Promise; +}) { + const { shopId } = await params; + const query = await searchParams; + return renderPosExperience(shopId, firstQueryValue(query?.vertical), paymentWorkflow([], firstQueryValue(query?.orderId))); +} diff --git a/microservices/apps/tpos-mvp-next/src/app/pos/pos-experience.tsx b/microservices/apps/tpos-mvp-next/src/app/pos/pos-experience.tsx index 773ce9eb..c7149edb 100644 --- a/microservices/apps/tpos-mvp-next/src/app/pos/pos-experience.tsx +++ b/microservices/apps/tpos-mvp-next/src/app/pos/pos-experience.tsx @@ -1,38 +1,57 @@ import { notFound } from "next/navigation"; import { TposPosExperience } from "@/components/TposPosExperience"; +import { requirePortalRole } from "@/server/auth/portal"; import { getShopService } from "@/server/services/shop"; import { listCatalogCategoriesByShop, listCatalogProductsByShop } from "@/server/services/catalog"; import { listTablesByShop } from "@/server/services/fnb"; -import { getPosDashboardService, listOrdersService } from "@/server/services/order"; +import { listInventoryItems } from "@/server/services/inventory"; +import { getOrderService, getPosDashboardService, listOrdersService } from "@/server/services/order"; import { listBaristaQueue, listKitchenTickets } from "@/server/services/parity"; import type { VerticalKind } from "@/components/tpos-config"; -export async function renderPosExperience(shopId: string, vertical: string | null | undefined, workflow?: string[]) { +type InitialPosTab = "sale" | "history" | "dashboard" | "settings"; +type SearchParamRecord = Record; + +export async function renderPosExperience( + shopId: string, + vertical: string | null | undefined, + workflow?: string[], + initialTab: InitialPosTab = "sale" +) { if (!isUuid(shopId)) notFound(); const shop = await getShopService(shopId); if (!shop) notFound(); + await requirePortalRole(["admin", "staff"], `/pos/${shopId}/${vertical ?? shop.vertical}${workflow?.length ? `/${workflow.join("/")}` : ""}`, shopId); const normalizedVertical = normalizeVertical(vertical ?? shop.vertical); if (!normalizedVertical) notFound(); - const [products, categories, tables, orders, dashboard, kitchenTickets, baristaQueue] = await Promise.all([ + const contextOrderId = workflow?.[1] ?? null; + const [products, categories, tables, inventory, orders, dashboard, kitchenTickets, baristaQueue, paymentContextOrder] = await Promise.all([ listCatalogProductsByShop(shopId), listCatalogCategoriesByShop(shopId), listTablesByShop(shopId), - listOrdersService({ shopId, page: 1, pageSize: 24, filter: "all" }), + listInventoryItems(shopId), + listOrdersService({ shopId, page: 1, pageSize: 80, filter: "all" }), getPosDashboardService(shopId, "today"), listKitchenTickets(shopId), - listBaristaQueue(shopId) + listBaristaQueue(shopId), + contextOrderId ? getOrderService(contextOrderId, shopId).catch(() => null) : Promise.resolve(null) ]); + const orderItems = paymentContextOrder && !orders.items.some((order) => order.id === paymentContextOrder.id) + ? [paymentContextOrder, ...orders.items] + : orders.items; return ( } kitchenTickets={kitchenTickets} baristaQueue={baristaQueue} @@ -49,6 +68,108 @@ export function firstQueryValue(value?: string | string[]) { return Array.isArray(value) ? value[0] : value; } +export function posTabFromQuery(value?: string | string[] | null): InitialPosTab { + const tab = firstQueryValue(value ?? undefined); + return tab === "history" || tab === "dashboard" || tab === "settings" ? tab : "sale"; +} + +export function posTabFromPath(value?: string | null): InitialPosTab | null { + return value === "history" || value === "dashboard" || value === "settings" ? value : null; +} + +export function contextIdFromQuery(query?: SearchParamRecord) { + return firstQueryValue(query?.orderId) ?? firstQueryValue(query?.tableId) ?? firstQueryValue(query?.roomId); +} + +export function appendWorkflowContext(workflow: string[], query?: SearchParamRecord) { + const contextId = contextIdFromQuery(query); + return contextId && workflow.length === 1 ? [...workflow, contextId] : workflow; +} + +export function verticalFamilyWorkflow(path: string[] | undefined, query?: SearchParamRecord) { + if (!path?.length) return undefined; + const [family, head = "", ...rest] = path; + const familyPath = head ? [head, ...rest] : []; + if (family === "payment") return appendWorkflowContext(paymentWorkflow(familyPath, firstQueryValue(query?.orderId)), query); + if (family === "dialog") return appendWorkflowContext(dialogWorkflow(familyPath), query); + if (family === "operations") return appendWorkflowContext(operationWorkflow(familyPath), query); + return path; +} + +export function paymentWorkflow(path: string[], orderId?: string | null) { + const [head, ...rest] = path.length ? path : ["method-select"]; + const map: Record = { + cash: "cash-payment", + "cash-payment": "cash-payment", + card: "card-payment", + "card-payment": "card-payment", + qr: "qr-payment", + "qr-payment": "qr-payment", + transfer: "transfer-payment", + "transfer-payment": "transfer-payment", + "gift-card": "gift-card-payment", + "gift-card-payment": "gift-card-payment", + "bank-transfer": "transfer-payment", + partial: "partial-payment", + "partial-payment": "partial-payment", + pending: "payment-pending", + "payment-pending": "payment-pending", + success: "payment-success", + "payment-success": "payment-success", + receipt: "receipt", + tip: "tip" + }; + const workflow = [map[head] ?? head, ...rest]; + return orderId && workflow.length === 1 ? [...workflow, orderId] : workflow; +} + +export function dialogWorkflow(path: string[]) { + const [head, ...rest] = path.length ? path : ["order-edit"]; + const map: Record = { + edit: "order-edit", + "order-edit": "order-edit", + discount: "discount", + customer: "customer-select", + "customer-select": "customer-select", + table: "table-transfer", + "table-transfer": "table-transfer", + split: "split-bill", + "split-bill": "split-bill", + refund: "void-refund", + void: "void-refund", + "void-refund": "void-refund", + "price-check": "product-search", + "stock-in": "stock-in", + "stock-out": "stock-out", + "stock-transfer": "stock-transfer" + }; + return [map[head] ?? head, ...rest]; +} + +export function operationWorkflow(path: string[]) { + const [head, ...rest] = path.length ? path : ["shift"]; + const map: Record = { + drawer: "cash-drawer", + "cash-drawer": "cash-drawer", + shift: "shift", + pending: "pending-orders", + "pending-orders": "pending-orders", + quick: "quick-sale", + "quick-sale": "quick-sale", + split: "split-bill", + "split-bill": "split-bill", + refund: "void-refund", + "void-refund": "void-refund", + "clock-in-out": "shift", + "stock-in": "stock-check", + "stock-out": "stock-check", + "stock-transfer": "stock-check", + "price-check": "product-search", + "order-cancel": "void-refund" + }; + return [map[head] ?? head, ...rest]; +} + function isUuid(value: string) { return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value); } diff --git a/microservices/apps/tpos-mvp-next/src/app/register/page.tsx b/microservices/apps/tpos-mvp-next/src/app/register/page.tsx index 41d86c5f..d5ee4f0d 100644 --- a/microservices/apps/tpos-mvp-next/src/app/register/page.tsx +++ b/microservices/apps/tpos-mvp-next/src/app/register/page.tsx @@ -1,5 +1,5 @@ import { TposAuthBoundary } from "@/components/TposAuthBoundary"; export default function RegisterPage() { - return ; + return ; } diff --git a/microservices/apps/tpos-mvp-next/src/app/staff/[...path]/page.tsx b/microservices/apps/tpos-mvp-next/src/app/staff/[...path]/page.tsx index 7e5ad846..2912255c 100644 --- a/microservices/apps/tpos-mvp-next/src/app/staff/[...path]/page.tsx +++ b/microservices/apps/tpos-mvp-next/src/app/staff/[...path]/page.tsx @@ -1,19 +1,23 @@ import { notFound, redirect } from "next/navigation"; import { TposPortal, buildPortalPayload } from "@/components/TposPortal"; +import { portalShopId, requirePortalRole } from "@/server/auth/portal"; import { getDashboardStats } from "@/server/db/queries"; import { listTablesByShop } from "@/server/services/fnb"; import { listOrdersService } from "@/server/services/order"; import { getShopService } from "@/server/services/shop"; -import { getAttendance, listKitchenTickets, listLeaveRequests, listNotifications, listSchedules, listStaff } from "@/server/services/parity"; +import { getAttendance, getStaffProfile, listKitchenTickets, listLeaveRequests, listNotifications, listSchedules, listStaff } from "@/server/services/parity"; import { portalNav } from "@/components/tpos-config"; export const dynamic = "force-dynamic"; export default async function StaffCatchAllPage({ params }: { params: Promise<{ path?: string[] }> }) { const path = (await params).path ?? []; + const user = await requirePortalRole(["staff"], `/staff/${path.join("/")}`); const section = path.join("/") || "dashboard"; if (!isKnownStaffSection(section)) notFound(); - const shop = await getShopService(); + const shop = await getShopService(portalShopId(user, "staff")); + const staffProfile = await getStaffProfile(user.id); + if (!staffAllowedSections(String(staffProfile?.role ?? "staff")).has(section)) notFound(); if (section === "pos" && shop) { redirect(`/pos/${shop.id}/${normalizeVertical(shop.vertical)}`); } @@ -27,14 +31,15 @@ export default async function StaffCatchAllPage({ params }: { params: Promise<{ shop: shop ? { id: shop.id, name: shop.name, vertical: shop.vertical, status: shop.status } : null, stats, title: staffTitle(section), - metrics: [ - { label: "Ca hôm nay", value: "08:00-17:00", tone: "green" }, - { label: "Phiếu bếp/quầy", value: items.length, tone: "orange" }, - { label: "Trạng thái", value: "Sẵn sàng", tone: "blue" } - ], - items - })} - /> + metrics: [ + { label: "Ca hôm nay", value: "08:00-17:00", tone: "green" }, + { label: "Phiếu bếp/quầy", value: items.length, tone: "orange" }, + { label: "Trạng thái", value: "Sẵn sàng", tone: "blue" } + ], + items, + nav: staffNavForRole(String(staffProfile?.role ?? "staff")) + })} + /> ); } @@ -109,6 +114,41 @@ function isKnownStaffSection(section: string) { return sections.has(section); } +function sectionFromStaffHref(href: string) { + return href.replace(/^\/staff\/?/, "") || "dashboard"; +} + +function staffAllowedSections(role: string) { + const normalized = role.toLowerCase(); + const sections = new Set(["dashboard", "overview", "attendance", "schedule", "leave", "notifications"]); + if (normalized.includes("manager") || normalized.includes("lead") || normalized.includes("admin")) { + for (const [, , href] of portalNav.staff) sections.add(sectionFromStaffHref(href)); + return sections; + } + if (normalized.includes("kitchen") || normalized.includes("bếp") || normalized.includes("chef")) { + sections.add("kitchen"); + } + if (normalized.includes("waiter") || normalized.includes("phục vụ") || normalized.includes("server")) { + sections.add("pos"); + sections.add("tables"); + sections.add("kitchen"); + } + if (normalized.includes("cashier") || normalized.includes("thu ngân")) { + sections.add("pos"); + sections.add("tables"); + sections.add("payroll"); + } + if (sections.size === 6) sections.add("pos"); + return sections; +} + +function staffNavForRole(role: string) { + const allowed = staffAllowedSections(role); + return portalNav.staff + .filter(([, , href]) => allowed.has(sectionFromStaffHref(href))) + .map(([label, , href, Icon]) => ({ label, href, Icon })); +} + function money(value: number) { return new Intl.NumberFormat("vi-VN", { style: "currency", currency: "VND", maximumFractionDigits: 0 }).format(value); } diff --git a/microservices/apps/tpos-mvp-next/src/app/superadmin/[...path]/page.tsx b/microservices/apps/tpos-mvp-next/src/app/superadmin/[...path]/page.tsx index 992a3513..4b3ad186 100644 --- a/microservices/apps/tpos-mvp-next/src/app/superadmin/[...path]/page.tsx +++ b/microservices/apps/tpos-mvp-next/src/app/superadmin/[...path]/page.tsx @@ -1,5 +1,6 @@ import { notFound } from "next/navigation"; import { TposPortal, buildPortalPayload } from "@/components/TposPortal"; +import { requirePortalRole } from "@/server/auth/portal"; import { auditLogs, listFeatureFlags, listPlans, listRoles, listUsers, platformStats, systemHealth } from "@/server/services/parity"; import { listShopsService } from "@/server/services/shop"; import { portalNav } from "@/components/tpos-config"; @@ -8,6 +9,7 @@ export const dynamic = "force-dynamic"; export default async function SuperAdminCatchAllPage({ params }: { params: Promise<{ path?: string[] }> }) { const path = (await params).path ?? []; + await requirePortalRole(["superadmin"], `/superadmin/${path.join("/")}`); const section = path.join("/") || "dashboard"; if (!isKnownSuperAdminSection(section)) notFound(); const stats = await platformStats(); diff --git a/microservices/apps/tpos-mvp-next/src/components/TposAuth.tsx b/microservices/apps/tpos-mvp-next/src/components/TposAuth.tsx index aa50fd36..f1f6e330 100644 --- a/microservices/apps/tpos-mvp-next/src/components/TposAuth.tsx +++ b/microservices/apps/tpos-mvp-next/src/components/TposAuth.tsx @@ -139,13 +139,13 @@ export function TposAuth({ mode = "login", role = "admin" }: { mode?: string; ro setMessage("OTP đăng nhập khách hàng chưa được cấu hình trong MVP"); return; } - startTransition(async () => { - const response = await fetch("/api/bff/auth/login", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ email, password }) - }); - const payload = (await response.json()) as { success: boolean; error?: string; data?: { roles?: Array<{ portal: string }>; defaultShopId?: string } }; + startTransition(async () => { + const response = await fetch("/api/bff/auth/login", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ email, password, role: selected.role }) + }); + const payload = (await response.json()) as { success: boolean; error?: string; data?: { roles?: Array<{ code?: string; portal: string }>; defaultShopId?: string } }; if (!response.ok || !payload.success) { setMessage(payload.error ?? "Không thể đăng nhập"); return; @@ -155,7 +155,8 @@ export function TposAuth({ mode = "login", role = "admin" }: { mode?: string; ro if (returnUrl.startsWith("/") && !returnUrl.startsWith("//")) router.push(returnUrl); return; } - const portal = payload.data?.roles?.[0]?.portal ?? "admin"; + const requestedPortal = selected.role === "branch" ? "admin" : selected.role; + const portal = payload.data?.roles?.find((item) => item.code === requestedPortal || item.portal === requestedPortal)?.portal ?? payload.data?.roles?.[0]?.portal ?? "admin"; router.push(portal === "staff" ? "/staff/dashboard" : portal === "superadmin" ? "/superadmin/dashboard" : portal === "customer" ? "/" : "/admin"); router.refresh(); }); @@ -321,14 +322,14 @@ export function TposAuth({ mode = "login", role = "admin" }: { mode?: string; ro function flowCopy(mode: string) { const map: Record = { - register: { - title: "Đăng ký dùng thử", - description: "Tạo tài khoản merchant/customer MVP, chọn vai trò và bắt đầu onboarding.", - badge: "REGISTER", - formTitle: "Tạo tài khoản", - formText: "Dữ liệu ghi vào MVP DB auth, role và session sẽ dùng chung BFF.", - submit: "Tạo tài khoản", - success: "Đã tạo tài khoản. Có thể quay lại đăng nhập." + register: { + title: "Đăng ký tài khoản khách hàng", + description: "Tạo tài khoản loyalty để tích điểm, nhận voucher và theo dõi lịch sử mua hàng.", + badge: "REGISTER", + formTitle: "Tạo tài khoản", + formText: "Dữ liệu ghi vào MVP DB auth và dùng chung cho QR menu, ví điểm và voucher.", + submit: "Tạo tài khoản", + success: "Đã tạo tài khoản. Có thể quay lại đăng nhập." }, "forgot-password": { title: "Khôi phục mật khẩu", @@ -385,7 +386,7 @@ function AuthNav() { aPOS

diff --git a/microservices/apps/tpos-mvp-next/src/components/TposPortal.tsx b/microservices/apps/tpos-mvp-next/src/components/TposPortal.tsx index 83e08e7c..0123ac4b 100644 --- a/microservices/apps/tpos-mvp-next/src/components/TposPortal.tsx +++ b/microservices/apps/tpos-mvp-next/src/components/TposPortal.tsx @@ -9,10 +9,12 @@ import { ShieldCheck, Store } from "lucide-react"; +import type { LucideIcon } from "lucide-react"; import { portalNav, shopSections, type PortalKind, type VerticalKind } from "./tpos-config"; type Metric = { label: string; value: string | number; tone?: "orange" | "green" | "blue" | "red" }; type ListItem = { id?: string; title: string; meta?: string; value?: string; href?: string }; +type PortalNavItem = { label: string; href: string; Icon: LucideIcon }; export type PortalPayload = { title: string; @@ -22,6 +24,7 @@ export type PortalPayload = { primary?: ListItem[]; secondary?: ListItem[]; status?: Array<{ label: string; value: string; tone?: Metric["tone"] }>; + nav?: PortalNavItem[]; }; function labelFromPath(kind: PortalKind, segments: string[]) { @@ -40,7 +43,9 @@ export function TposPortal({ }) { const shopVertical = payload.shop && ((payload.shop.vertical ?? "cafe") as VerticalKind) in shopSections ? (payload.shop.vertical as VerticalKind) : "cafe"; const isShopAdmin = kind === "admin" && path[0] === "shop" && Boolean(payload.shop); - const nav = isShopAdmin && payload.shop + const nav = payload.nav + ? payload.nav.map(({ label, href, Icon }) => [label, href, href, Icon] as const) + : isShopAdmin && payload.shop ? shopSections[shopVertical].map(([label, slug, Icon]) => [ label, slug, @@ -50,6 +55,7 @@ export function TposPortal({ : portalNav[kind]; const active = labelFromPath(kind, path); const currentHref = `/${kind}${path.length ? `/${path.join("/")}` : ""}`; + const primaryAction = primaryActionFor(kind, path, payload.shop); const isActiveHref = (href: string) => { if (isShopAdmin && href.startsWith("/pos/")) return false; if (href === `/${kind}`) return path.length === 0 || path[0] === "dashboard"; @@ -92,10 +98,12 @@ export function TposPortal({ ) : null} - + {primaryAction ? ( + + + {primaryAction.label} + + ) : null} @@ -151,8 +159,8 @@ export function TposPortal({
- LINKS -

Route parity

+ LIÊN KẾT +

Truy cập nhanh

@@ -261,14 +269,44 @@ function defaultSecondary(kind: PortalKind, shop?: PortalPayload["shop"]): ListI { title: "Feature flags", href: "/superadmin/system/flags" }, { title: "Audit log", href: "/superadmin/system/audit" } ]; + if (kind === "marketing") return [ + { title: "Social hub", href: "/marketing" }, + { title: "Content studio", href: "/marketing/content" }, + { title: "Analytics", href: "/marketing/analytics" } + ]; + if (kind === "staff") return [ + { title: "Ca làm", href: "/staff/dashboard" }, + { title: "Bếp", href: "/staff/kitchen" }, + { title: "Điểm danh", href: "/staff/attendance" } + ]; const vertical = shop?.vertical ?? "cafe"; - return [ + return shop ? [ { title: "Customer menu", href: shop ? `/menu/${shop.id}` : "/" }, { title: "POS terminal", href: shop ? `/pos/${shop.id}/${vertical}` : "/pos" }, { title: "Settings", href: shop ? `/admin/shop/${shop.id}/settings` : "/settings" } + ] : [ + { title: "Cửa hàng", href: "/admin/stores" }, + { title: "Báo cáo", href: "/admin/reports" }, + { title: "Cài đặt", href: "/admin/settings" } ]; } +function primaryActionFor(kind: PortalKind, path: string[], shop?: PortalPayload["shop"]): { label: string; href: string } | null { + if (kind === "admin" && shop) { + const section = path[2] ?? "overview"; + if (section === "staff") return { label: "Thêm nhân sự", href: `/admin/shop/${shop.id}/staff` }; + if (section === "inventory") return { label: "Nhập kho", href: `/admin/shop/${shop.id}/inventory` }; + if (section === "tables" || section === "rooms") return { label: section === "rooms" ? "Thêm phòng" : "Thêm bàn", href: `/admin/shop/${shop.id}/${section}` }; + if (section === "promotions") return { label: "Tạo khuyến mãi", href: `/admin/shop/${shop.id}/promotions` }; + return { label: "Mở POS", href: `/pos/${shop.id}/${shop.vertical ?? "cafe"}` }; + } + if (kind === "admin") return { label: "Tạo cửa hàng", href: "/admin/stores/create" }; + if (kind === "staff") return { label: "Check-in", href: "/staff/attendance" }; + if (kind === "marketing") return { label: "Tạo nội dung", href: "/marketing/content" }; + if (kind === "superadmin") return { label: "Feature flag", href: "/superadmin/system/flags" }; + return null; +} + export function buildPortalPayload(kind: PortalKind, input: { shop?: PortalPayload["shop"]; stats?: Record; @@ -276,18 +314,20 @@ export function buildPortalPayload(kind: PortalKind, input: { title?: string; path?: string[]; items?: ListItem[]; + nav?: PortalNavItem[]; }): PortalPayload { const money = new Intl.NumberFormat("vi-VN", { style: "currency", currency: "VND", maximumFractionDigits: 0 }); const stats = input.stats ?? {}; return { title: input.title ?? (kind === "admin" ? "Bảng điều khiển vận hành" : kind === "staff" ? "Ca làm nhân viên" : kind === "marketing" ? "Marketing hub" : "Platform control"), - subtitle: input.shop ? `Đang vận hành ${input.shop.name}` : "Route parity với web-client-tpos-net trong Next MVP.", + subtitle: input.shop ? `Đang vận hành ${input.shop.name}` : "Bảng vận hành TPOS cho cửa hàng, nhân sự, marketing và nền tảng.", shop: input.shop, metrics: input.metrics ?? [ { label: "Doanh thu", value: money.format(Number(stats.todayRevenue ?? stats.revenue ?? 0)), tone: "orange" }, { label: "Đơn hàng", value: Number(stats.orderCount ?? 0), tone: "green" }, { label: "Cửa hàng", value: Number(stats.shopCount ?? 1), tone: "blue" } ], - primary: input.items + primary: input.items, + nav: input.nav }; } diff --git a/microservices/apps/tpos-mvp-next/src/components/TposPosExperience.tsx b/microservices/apps/tpos-mvp-next/src/components/TposPosExperience.tsx index 7ca3a5fb..2058ec91 100644 --- a/microservices/apps/tpos-mvp-next/src/components/TposPosExperience.tsx +++ b/microservices/apps/tpos-mvp-next/src/components/TposPosExperience.tsx @@ -1,7 +1,7 @@ "use client"; import Link from "next/link"; -import { useMemo, useState, useTransition } from "react"; +import { useEffect, useMemo, useState, useTransition } from "react"; import { ArrowLeft, Banknote, @@ -27,12 +27,13 @@ import { UtensilsCrossed } from "lucide-react"; import { posWorkflows, verticals, type VerticalKind } from "./tpos-config"; -import type { OrderSummary, Product, ProductCategory, Shop, TableInfo } from "@/server/domain/types"; +import type { InventoryItem, OrderSummary, Product, ProductCategory, Shop, TableInfo } from "@/server/domain/types"; type CartLine = { product: Product; quantity: number }; type PosTab = "sale" | "history" | "dashboard" | "settings"; type KitchenTicket = Record; type BaristaQueueItem = Record; +type ApiEnvelope = { success?: boolean; data?: T; error?: string }; const currency = new Intl.NumberFormat("vi-VN", { style: "currency", currency: "VND", maximumFractionDigits: 0 }); @@ -45,19 +46,26 @@ const verticalIcons: Record = { retail: ShoppingCart }; -const posNavVerticals = verticals.filter((item) => item.id !== "beauty"); +const posNavVerticals = verticals.filter((item) => item.visibleInPosNav !== false); const paymentMethods = [ - { id: "cash", label: "Tiền mặt", icon: Banknote }, - { id: "card", label: "Thẻ", icon: CreditCard }, - { id: "qr", label: "QR", icon: Smartphone }, - { id: "transfer", label: "Chuyển khoản", icon: Building2 } + { id: "cash", label: "Tiền mặt", icon: Banknote, enabled: true }, + { id: "card", label: "Thẻ", icon: CreditCard, enabled: false }, + { id: "qr", label: "QR", icon: Smartphone, enabled: false }, + { id: "transfer", label: "Chuyển khoản", icon: Building2, enabled: false } +]; + +const paymentChoiceOptions = [ + { id: "cash", route: "cash", label: "Tiền mặt", icon: Banknote, enabled: true }, + { id: "card", route: "card", label: "Thẻ", icon: CreditCard, enabled: false }, + { id: "qr", route: "qr", label: "QR", icon: Smartphone, enabled: false }, + { id: "transfer", route: "transfer", label: "Chuyển khoản", icon: Building2, enabled: false } ]; const posTabs: Array<{ id: PosTab; label: string; icon: typeof Coffee }> = [ { id: "sale", label: "Bán hàng", icon: Coffee }, { id: "history", label: "Lịch sử", icon: History }, - { id: "dashboard", label: "Dashboard", icon: BarChart3 }, + { id: "dashboard", label: "Báo cáo", icon: BarChart3 }, { id: "settings", label: "Cài đặt", icon: Settings } ]; @@ -65,9 +73,11 @@ export function TposPosExperience({ shop, vertical, workflow, + initialTab = "sale", products, categories, tables, + inventory, orders, dashboard, kitchenTickets = [], @@ -76,9 +86,11 @@ export function TposPosExperience({ shop: Shop; vertical: VerticalKind; workflow?: string[]; + initialTab?: PosTab; products: Product[]; categories: ProductCategory[]; tables: TableInfo[]; + inventory: InventoryItem[]; orders: OrderSummary[]; dashboard: Record; kitchenTickets?: KitchenTicket[]; @@ -88,12 +100,13 @@ export function TposPosExperience({ const [categoryId, setCategoryId] = useState("all"); const [query, setQuery] = useState(""); const [selectedTable, setSelectedTable] = useState(tables[0]?.id ?? ""); - const [activeTab, setActiveTab] = useState("sale"); + const [activeTab, setActiveTab] = useState(initialTab); const [paymentMethod, setPaymentMethod] = useState("cash"); const [amountTendered, setAmountTendered] = useState(""); const [voucher, setVoucher] = useState(""); const [discount, setDiscount] = useState(0); const [message, setMessage] = useState(null); + const [dataRevision, setDataRevision] = useState(0); const [isPending, startTransition] = useTransition(); const Icon = verticalIcons[vertical] ?? Coffee; const rawWorkflowSlug = workflow?.[0]; @@ -115,7 +128,7 @@ export function TposPosExperience({ const total = Math.max(0, subtotal - discount); const received = paymentMethod === "cash" ? Number(amountTendered || 0) : total; const change = Math.max(0, received - total); - const canPay = cart.length > 0 && (paymentMethod !== "cash" || received >= total); + const canPay = cart.length > 0 && paymentMethod === "cash" && received >= total; const quickAmounts = [total, Math.ceil(total / 10000) * 10000, Math.ceil(total / 10000) * 10000 + 20000, Math.ceil(total / 10000) * 10000 + 50000] .filter((value, index, all) => value > 0 && all.indexOf(value) === index) .slice(0, 4); @@ -153,6 +166,10 @@ export function TposPosExperience({ async function submitPayment() { if (!canPay) return; + if (paymentMethod !== "cash") { + setMessage("Phương thức này chưa cấu hình cổng thanh toán"); + return; + } setMessage(null); startTransition(async () => { const response = await fetch("/api/bff/pos/orders", { @@ -179,6 +196,7 @@ export function TposPosExperience({ setDiscount(0); setVoucher(""); setMessage(`Thanh toán thành công ${payload.data?.transactionId ?? ""}`); + setDataRevision((current) => current + 1); }); } @@ -219,6 +237,11 @@ export function TposPosExperience({ }) }); if (!kitchenResponse.ok) { + setCart([]); + setAmountTendered(""); + setDiscount(0); + setVoucher(""); + setDataRevision((current) => current + 1); setMessage("Đã lưu order, nhưng chưa gửi được bếp. Kiểm tra Kitchen tickets."); return; } @@ -228,12 +251,13 @@ export function TposPosExperience({ setAmountTendered(""); setDiscount(0); setVoucher(""); + setDataRevision((current) => current + 1); setMessage(vertical === "restaurant" ? "Đã gửi bếp và giữ order tại bàn" : "Đã lưu order F&B cho phòng"); }); } if (workflowSlug) { - return ; + return ; } return ( @@ -361,13 +385,26 @@ export function TposPosExperience({
- {paymentMethods.map((method) => { - const PayIcon = method.icon; - return ( - + {paymentMethods.map((method) => { + const PayIcon = method.icon; + const selected = paymentMethod === method.id; + return ( + ); })}
@@ -401,8 +438,8 @@ export function TposPosExperience({ ) : null} - {activeTab === "history" ? : null} - {activeTab === "dashboard" ? : null} + {activeTab === "history" ? : null} + {activeTab === "dashboard" ? : null} {activeTab === "settings" ? : null} @@ -410,10 +447,13 @@ export function TposPosExperience({ ); } -function HistoryPanel({ orders }: { orders: OrderSummary[] }) { +function HistoryPanel({ shopId, initialOrders, revision }: { shopId: string; initialOrders: OrderSummary[]; revision: number }) { + const [orders, setOrders] = useState(initialOrders); const [historyQuery, setHistoryQuery] = useState(""); const [historyPeriod, setHistoryPeriod] = useState<"today" | "7d" | "30d" | "all">("today"); const [selectedOrderId, setSelectedOrderId] = useState(null); + const [isHistoryLoading, setIsHistoryLoading] = useState(false); + const [historyError, setHistoryError] = useState(null); const normalizedQuery = historyQuery.trim().toLowerCase(); const periodOrders = orders.filter((order) => historyPeriod === "all" || isInHistoryPeriod(order.createdAt, historyPeriod)); const filteredOrders = normalizedQuery @@ -433,6 +473,36 @@ function HistoryPanel({ orders }: { orders: OrderSummary[] }) { const revenue = paidOrders.reduce((sum, order) => sum + order.totalAmount, 0); const selectedOrder = selectedOrderId ? orders.find((order) => order.id === selectedOrderId) : null; + useEffect(() => { + setOrders(initialOrders); + }, [initialOrders]); + + useEffect(() => { + let cancelled = false; + const filter = historyPeriod === "7d" ? "7d" : historyPeriod === "30d" ? "30d" : historyPeriod; + setIsHistoryLoading(true); + setHistoryError(null); + fetch(`/api/bff/orders?shopId=${encodeURIComponent(shopId)}&filter=${filter}&page=1&pageSize=100`) + .then(async (response) => { + const payload = await response.json() as ApiEnvelope<{ items?: OrderSummary[] } | OrderSummary[]>; + if (!response.ok || payload.success === false) throw new Error(payload.error ?? "Không tải được lịch sử"); + const data = payload.data; + return Array.isArray(data) ? data : data?.items ?? []; + }) + .then((items) => { + if (!cancelled) setOrders(items); + }) + .catch((error) => { + if (!cancelled) setHistoryError(error instanceof Error ? error.message : "Không tải được lịch sử"); + }) + .finally(() => { + if (!cancelled) setIsHistoryLoading(false); + }); + return () => { + cancelled = true; + }; + }, [historyPeriod, revision, shopId]); + if (selectedOrder) { return (
@@ -505,6 +575,8 @@ function HistoryPanel({ orders }: { orders: OrderSummary[] }) { {filteredOrders.length} đơn {paidOrders.length} đã thu {currency.format(revenue)} + {isHistoryLoading ? Đang tải : null} + {historyError ? {historyError} : null}
{filteredOrders.map((order) => ( @@ -534,37 +606,89 @@ function HistoryPanel({ orders }: { orders: OrderSummary[] }) { ); } -function DashboardPanel({ dashboard, orders }: { dashboard: Record; orders: OrderSummary[] }) { +function DashboardPanel({ + shopId, + initialDashboard, + initialOrders, + revision +}: { + shopId: string; + initialDashboard: Record; + initialOrders: OrderSummary[]; + revision: number; +}) { const [dashPeriod, setDashPeriod] = useState<"today" | "7d" | "30d">("today"); - const periodOrders = orders.filter((order) => isInDashPeriod(order.createdAt, dashPeriod)); + const [dashboard, setDashboard] = useState>(initialDashboard); + const [dashboardOrders, setDashboardOrders] = useState(initialOrders); + const [isDashboardLoading, setIsDashboardLoading] = useState(false); + const [dashboardError, setDashboardError] = useState(null); + const periodOrders = dashboardOrders.filter((order) => isInDashPeriod(order.createdAt, dashPeriod)); const visibleOrders = periodOrders; - const hasOrderFeed = orders.length > 0; - const revenue = hasOrderFeed ? visibleOrders.reduce((sum, order) => sum + order.totalAmount, 0) : Number(dashboard.revenue ?? 0); - const orderCount = hasOrderFeed ? visibleOrders.length : Number(dashboard.orderCount ?? 0); - const averageTicket = orderCount ? revenue / orderCount : Number(dashboard.averageTicket ?? 0); - const itemCount = visibleOrders.reduce((sum, order) => sum + order.itemCount, 0); - const paymentRows = Object.entries(visibleOrders.reduce>((acc, order) => { + const hasDashboardMetrics = dashboard.revenue !== undefined || dashboard.orderCount !== undefined; + const revenue = hasDashboardMetrics ? Number(dashboard.revenue ?? 0) : visibleOrders.reduce((sum, order) => sum + order.totalAmount, 0); + const orderCount = hasDashboardMetrics ? Number(dashboard.orderCount ?? 0) : visibleOrders.length; + const averageTicket = orderCount ? revenue / orderCount : Number(dashboard.averageTicket ?? dashboard.avgOrderValue ?? 0); + const itemCount = hasDashboardMetrics ? Number(dashboard.itemsSold ?? 0) : visibleOrders.reduce((sum, order) => sum + order.itemCount, 0); + const apiPaymentRows = normalizePaymentRows(dashboard.paymentBreakdown); + const paymentRows = apiPaymentRows.length ? apiPaymentRows : Object.entries(visibleOrders.reduce>((acc, order) => { const method = paymentLabel(order.paymentMethod); acc[method] = acc[method] ?? { count: 0, total: 0 }; acc[method].count += 1; acc[method].total += order.totalAmount; return acc; }, {})).sort((a, b) => b[1].total - a[1].total).slice(0, 4); - const topItems = Object.entries(visibleOrders.flatMap((order) => order.items).reduce>((acc, item) => { + const apiTopItems = normalizeTopItems(dashboard.popularItems); + const topItems = apiTopItems.length ? apiTopItems : Object.entries(visibleOrders.flatMap((order) => order.items).reduce>((acc, item) => { acc[item.productName] = acc[item.productName] ?? { quantity: 0, total: 0 }; acc[item.productName].quantity += item.quantity; acc[item.productName].total += item.totalPrice; return acc; }, {})).sort((a, b) => b[1].total - a[1].total).slice(0, 5); - const hourlyRows = buildHourlyRevenue(visibleOrders); + const apiHourlyRows = normalizeHourlyRows(dashboard.hourlyRevenue); + const hourlyRows = apiHourlyRows.length ? apiHourlyRows : buildHourlyRevenue(visibleOrders); const maxPayment = Math.max(...paymentRows.map(([, value]) => value.total), 1); + useEffect(() => { + setDashboard(initialDashboard); + setDashboardOrders(initialOrders); + }, [initialDashboard, initialOrders]); + + useEffect(() => { + let cancelled = false; + const period = dashPeriod === "7d" ? "7d" : dashPeriod === "30d" ? "30d" : "today"; + setIsDashboardLoading(true); + setDashboardError(null); + fetch(`/api/bff/pos/dashboard?shopId=${encodeURIComponent(shopId)}&period=${period}`) + .then(async (response) => { + const payload = await response.json() as ApiEnvelope>; + if (!response.ok || payload.success === false || !payload.data) throw new Error(payload.error ?? "Không tải được dashboard"); + return payload.data; + }) + .then((data) => { + if (!cancelled) { + setDashboard(data); + setDashboardOrders(normalizeRecentOrders(data.recentOrders)); + } + }) + .catch((error) => { + if (!cancelled) setDashboardError(error instanceof Error ? error.message : "Không tải được dashboard"); + }) + .finally(() => { + if (!cancelled) setIsDashboardLoading(false); + }); + return () => { + cancelled = true; + }; + }, [dashPeriod, revision, shopId]); + return (
Dashboard bán hàng
{formatPeriodLabel(dashPeriod)}
+ {isDashboardLoading ?
Đang tải dữ liệu mới
: null} + {dashboardError ?
{dashboardError}
: null}
{[ @@ -631,6 +755,76 @@ function DashboardPanel({ dashboard, orders }: { dashboard: Record[] { + return Array.isArray(value) ? value.filter((item): item is Record => Boolean(item) && typeof item === "object") : []; +} + +function normalizeTopItems(value: unknown): Array<[string, { quantity: number; total: number }]> { + return recordArray(value) + .map((item) => { + const name = String(item.productName ?? item.name ?? ""); + return [ + name, + { + quantity: toFiniteNumber(item.quantitySold ?? item.quantity ?? item.qty), + total: toFiniteNumber(item.revenue ?? item.total) + } + ] as [string, { quantity: number; total: number }]; + }) + .filter(([name]) => Boolean(name)) + .sort((a, b) => b[1].total - a[1].total) + .slice(0, 5); +} + +function normalizePaymentRows(value: unknown): Array<[string, { count: number; total: number }]> { + const grouped = recordArray(value).reduce>((acc, item) => { + const method = paymentLabel(String(item.method ?? "cash")); + acc[method] = acc[method] ?? { count: 0, total: 0 }; + acc[method].count += toFiniteNumber(item.count); + acc[method].total += toFiniteNumber(item.amount ?? item.total); + return acc; + }, {}); + return Object.entries(grouped) + .sort((a, b) => b[1].total - a[1].total) + .slice(0, 4); +} + +function normalizeHourlyRows(value: unknown) { + const rows = recordArray(value).map((item) => ({ + hour: typeof item.hourLabel === "string" ? item.hourLabel : `${String(toFiniteNumber(item.hour)).padStart(2, "0")}h`, + total: toFiniteNumber(item.revenue ?? item.total), + percent: 0 + })); + const max = Math.max(...rows.map((row) => row.total), 1); + return rows.map((row) => ({ ...row, percent: Math.round(row.total / max * 100) })); +} + +function normalizeRecentOrders(value: unknown): OrderSummary[] { + return recordArray(value).map((item) => ({ + id: String(item.id ?? ""), + shopId: String(item.shopId ?? item.shop_id ?? ""), + shopName: typeof item.shopName === "string" ? item.shopName : null, + tableId: typeof item.tableId === "string" ? item.tableId : null, + tableNumber: typeof item.tableNumber === "string" ? item.tableNumber : null, + statusId: toFiniteNumber(item.statusId ?? item.status_id, 3), + status: String(item.status ?? "Paid"), + totalAmount: toFiniteNumber(item.totalAmount ?? item.total_amount), + discountAmount: toFiniteNumber(item.discountAmount ?? item.discount_amount), + discountType: typeof item.discountType === "string" ? item.discountType : null, + discountReference: typeof item.discountReference === "string" ? item.discountReference : null, + paymentMethod: typeof item.paymentMethod === "string" ? item.paymentMethod : null, + transactionId: typeof item.transactionId === "string" ? item.transactionId : null, + itemCount: toFiniteNumber(item.itemCount ?? item.item_count), + createdAt: String(item.createdAt ?? item.created_at ?? new Date().toISOString()), + items: [] + })); +} + function formatOrderTime(value: string) { const date = new Date(value); if (Number.isNaN(date.getTime())) return "--:--"; @@ -710,18 +904,7 @@ function statusLabel(status: string) { } function paymentLabel(method: string | null) { - switch ((method ?? "cash").toLowerCase()) { - case "card": - return "Thẻ"; - case "qr": - return "QR"; - case "transfer": - return "Chuyển khoản"; - case "wallet": - return "Ví"; - default: - return "Tiền mặt"; - } + return paymentMethodLabel(method); } function SettingsPanel({ shop, vertical }: { shop: Shop; vertical: VerticalKind }) { @@ -754,6 +937,7 @@ function WorkflowScreen({ workflowPath, products, tables, + inventory, orders, dashboard, kitchenTickets, @@ -765,6 +949,7 @@ function WorkflowScreen({ workflowPath: string[]; products: Product[]; tables: TableInfo[]; + inventory: InventoryItem[]; orders: OrderSummary[]; dashboard: Record; kitchenTickets: KitchenTicket[]; @@ -772,11 +957,23 @@ function WorkflowScreen({ }) { const workflow = (posWorkflows[vertical] ?? posWorkflows.shared).find((item) => item.slug === slug) ?? posWorkflows.shared.find((item) => item.slug === slug); const WorkflowIcon = workflow?.icon ?? Coffee; - const contextId = workflowPath[1]; - const contextOrder = contextId ? orders.find((order) => order.id === contextId || order.id.startsWith(contextId)) : undefined; - const contextTable = contextId ? tables.find((table) => table.id === contextId || table.tableNumber === contextId) : undefined; - const paymentWorkflow = slug.includes("payment") || slug === "method-select"; + const contextId = workflowPath[1]; + const contextOrder = contextId ? orders.find((order) => order.id === contextId || order.id.startsWith(contextId)) : undefined; + const contextTable = contextId ? tables.find((table) => table.id === contextId || table.tableNumber === contextId) : undefined; + const methodSelectWorkflow = slug === "method-select"; + const paymentWorkflow = slug.includes("payment") || slug === "receipt" || slug === "tip"; + const cashPaymentWorkflow = slug === "cash-payment"; + const paymentSuccessWorkflow = slug === "payment-success"; + const paymentCollectionWorkflow = paymentWorkflow && slug !== "receipt" && slug !== "tip"; + const contextOrderIsPaid = isPaidOrCompleted(contextOrder); const [tendered, setTendered] = useState(() => String(contextOrder?.totalAmount ?? "")); + const [cancelReason, setCancelReason] = useState("Khách yêu cầu hủy đơn"); + const [voucherCode, setVoucherCode] = useState(""); + const [nextTableStatusId, setNextTableStatusId] = useState("2"); + const [stockInventoryId, setStockInventoryId] = useState(() => inventory[0]?.id ?? ""); + const [stockQuantity, setStockQuantity] = useState("1"); + const [stockNotes, setStockNotes] = useState(""); + const [workflowQuery, setWorkflowQuery] = useState(""); const [workflowMessage, setWorkflowMessage] = useState(null); const [isWorkflowPending, startWorkflowTransition] = useTransition(); @@ -802,8 +999,125 @@ function WorkflowScreen({ }); } + function cancelContextOrder() { + if (!contextOrder) return; + startWorkflowTransition(async () => { + const response = await fetch(`/api/bff/orders/${contextOrder.id}/cancel`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ shopId: shop.id, reason: cancelReason }) + }); + const payload = await response.json() as ApiEnvelope; + setWorkflowMessage(response.ok && payload.success ? "Đã hủy đơn và ghi nhận lý do trong DB" : payload.error ?? "Không thể hủy đơn"); + }); + } + + function validateWorkflowVoucher() { + const code = voucherCode.trim(); + if (!code) { + setWorkflowMessage("Vui lòng nhập mã voucher để kiểm tra"); + return; + } + startWorkflowTransition(async () => { + const response = await fetch(`/api/bff/vouchers/validate/${encodeURIComponent(code)}?shopId=${encodeURIComponent(shop.id)}`); + const payload = await response.json() as ApiEnvelope<{ valid?: boolean; message?: string; discountType?: string; discountValue?: number }>; + if (!response.ok || !payload.success) { + setWorkflowMessage(payload.error ?? "Không thể kiểm tra voucher"); + return; + } + const result = payload.data; + setWorkflowMessage(result?.valid + ? `Voucher hợp lệ: ${result.discountType ?? "discount"} ${result.discountValue ?? 0}` + : result?.message ?? "Voucher không hợp lệ"); + }); + } + + function updateContextTableStatus() { + if (!contextTable) return; + startWorkflowTransition(async () => { + const response = await fetch(`/api/bff/tables/${contextTable.id}/status`, { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ shopId: shop.id, statusId: Number(nextTableStatusId) }) + }); + const payload = await response.json() as ApiEnvelope; + setWorkflowMessage(response.ok && payload.success ? "Đã cập nhật trạng thái bàn/phòng trong DB" : payload.error ?? "Không thể cập nhật bàn/phòng"); + }); + } + + function updateShiftAttendance(action: "check-in" | "check-out") { + startWorkflowTransition(async () => { + const response = await fetch(`/api/bff/staff/me/attendance/${action}`, { method: "POST" }); + const payload = await response.json() as ApiEnvelope; + setWorkflowMessage(response.ok && payload.success + ? (action === "check-in" ? "Đã check-in ca làm trong DB" : "Đã check-out ca làm trong DB") + : payload.error ?? "Không thể cập nhật ca làm"); + }); + } + + function updateWorkflowStock(action: "stock-in" | "stock-out") { + const quantity = Number(stockQuantity); + if (!stockInventoryId) { + setWorkflowMessage("Chọn mặt hàng tồn kho trước khi ghi nhận"); + return; + } + if (!Number.isFinite(quantity) || quantity <= 0) { + setWorkflowMessage("Số lượng phải lớn hơn 0"); + return; + } + startWorkflowTransition(async () => { + const response = await fetch(`/api/bff/inventory/${action}`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + shopId: shop.id, + inventoryId: stockInventoryId, + quantity, + notes: stockNotes.trim() || `${action} from POS workflow` + }) + }); + const payload = await response.json() as ApiEnvelope; + if (!response.ok || !payload.success) { + setWorkflowMessage(payload.error ?? "Không thể cập nhật tồn kho"); + return; + } + const itemName = payload.data?.name ?? payload.data?.productName ?? "Tồn kho"; + setWorkflowMessage(`${action === "stock-in" ? "Đã nhập kho" : "Đã xuất kho"} ${itemName}`); + }); + } + const workflows = uniqueWorkflows(vertical); - const workflowRows = workflowDataRows(slug, { orders, tables, kitchenTickets, baristaQueue }); + if (!workflow) { + return ( +
+
+
+ + aPOS POS + Workflow không tồn tại +
+
Online
+
+
+
+
+
+ KHÔNG CÓ TRONG TPOS +

Workflow không tồn tại

+

Route này không nằm trong registry POS của TPOS MVP, nên hệ thống không hiển thị bảng dữ liệu giả.

+
+ Quay lại POS +
+
+
+
+ ); + } + const workflowRows = workflowDataRows(slug, { orders, tables, products, inventory, kitchenTickets, baristaQueue }); + const visibleWorkflowRows = workflowRows.filter((row) => { + const needle = workflowQuery.trim().toLowerCase(); + return !needle || `${row.title} ${row.meta} ${row.value}`.toLowerCase().includes(needle); + }); return (
@@ -842,10 +1156,10 @@ function WorkflowScreen({
- {contextOrder || contextTable || paymentWorkflow ? ( -
-
- {paymentWorkflow ? "PAYMENT CONTEXT" : "ROUTE CONTEXT"} + {contextOrder || contextTable || paymentWorkflow || methodSelectWorkflow ? ( +
+
+ {paymentWorkflow || methodSelectWorkflow ? "PAYMENT CONTEXT" : "ROUTE CONTEXT"}

{contextOrder ? `Đơn ${contextOrder.id.slice(0, 8).toUpperCase()}` : contextTable ? `Bàn/phòng ${contextTable.tableNumber}` : workflow?.title ?? slug}

{contextOrder @@ -855,36 +1169,270 @@ function WorkflowScreen({ : "Route giữ nguyên slug, ID và query để workflow thanh toán/dialog có thể nối vào BFF thật."}

- {contextOrder ? Xem đơn hàng : null} + {contextOrder ? Xem đơn hàng : null} +
+ ) : null} + {methodSelectWorkflow ? ( +
+
+ CHỌN PHƯƠNG THỨC +

{contextOrder ? `Thanh toán đơn ${contextOrder.id.slice(0, 8).toUpperCase()}` : "Chọn phương thức thanh toán"}

+

{contextOrder ? `Tổng cần thu ${currency.format(contextOrder.totalAmount)}` : "Chọn đơn hàng từ POS hoặc truyền orderId để tiếp tục thanh toán."}

+
+
+ {paymentChoiceOptions.map((method) => { + const MethodIcon = method.icon; + const disabled = !contextOrder || !method.enabled; + const href = contextOrder ? paymentChoiceHref(shop.id, vertical, method.route, contextOrder.id) : "#"; + return disabled ? ( + + ) : ( + + + {method.label} + + ); + })} +
+
+ ) : null} + {paymentSuccessWorkflow ? ( +
+
+ THANH TOÁN THÀNH CÔNG +

{contextOrderIsPaid ? `Đã hoàn tất đơn ${contextOrder!.id.slice(0, 8).toUpperCase()}` : "Cần đơn đã thanh toán"}

+

{contextOrderIsPaid ? `${contextOrder!.itemCount} món · ${currency.format(contextOrder!.totalAmount)} · ${paymentMethodLabel(contextOrder!.paymentMethod)}` : "Route success phải có orderId đã Paid/Completed. Không hiển thị thành công giả cho đơn thiếu hoặc chưa thu tiền."}

+
+ {!contextOrderIsPaid ?
Thiếu payment ledger hoặc đơn chưa thanh toán.
: null} +
+ + + Lịch sử đơn + + + + Tiếp tục bán + +
+
+ ) : null} + {slug === "receipt" ? ( +
+
+ BIÊN LAI +

{contextOrderIsPaid ? `Biên lai đơn ${contextOrder!.id.slice(0, 8).toUpperCase()}` : "Chưa có biên lai hợp lệ"}

+

{contextOrderIsPaid ? `${contextOrder!.itemCount} món · ${currency.format(contextOrder!.totalAmount)} · ${paymentMethodLabel(contextOrder!.paymentMethod)}` : "Chỉ in lại biên lai cho đơn đã thanh toán. Không dựng receipt giả."}

+
+ {contextOrderIsPaid ? Mở lịch sử đơn :
Thiếu orderId Paid/Completed.
}
) : null} - {paymentWorkflow && contextOrder ? ( + {slug === "tip" ? (
- PAYMENT ACTION -

Thu tiền đơn {contextOrder.id.slice(0, 8).toUpperCase()}

-

Tổng cần thu {currency.format(contextOrder.totalAmount)} qua {paymentMethodFromSlug(slug)}.

+ TIP +

Tip chưa cấu hình ledger

+

TPOS gốc có route tip riêng. MVP Next giữ route này nhưng chưa ghi nhận tip cho tới khi có ledger ca và phân bổ nhân viên.

- - +
Không ghi nhận thành công giả.
+
+ ) : null} + {paymentCollectionWorkflow && !paymentSuccessWorkflow && contextOrder ? ( +
+
+ THANH TOÁN +

Thu tiền đơn {contextOrder.id.slice(0, 8).toUpperCase()}

+

+ {cashPaymentWorkflow + ? `Tổng cần thu ${currency.format(contextOrder.totalAmount)} qua tiền mặt.` + : "Workflow này cần ledger hoặc adapter thanh toán riêng, chưa được phép ghi nhận như tiền mặt."} +

+
+ {cashPaymentWorkflow ? ( + <> + + + + ) : ( +
Chưa cấu hình workflow thanh toán này. Không ghi nhận fake success.
+ )} {workflowMessage ?
{workflowMessage}
: null}
) : null} + {slug === "discount" ? ( +
+
+ GIẢM GIÁ +

Kiểm tra voucher thật

+

Workflow này gọi BFF voucher validate theo shop. Việc áp vào hóa đơn chỉ bật khi có service chỉnh sửa đơn persisted.

+
+ + + {workflowMessage ?
{workflowMessage}
: null} +
+ ) : null} + {slug === "void-refund" ? ( +
+
+ HỦY / HOÀN TIỀN +

{contextOrder ? `Hủy đơn ${contextOrder.id.slice(0, 8).toUpperCase()}` : "Chọn đơn để hủy"}

+

{contextOrder ? "Hành động này gọi service hủy đơn thật và ghi lý do vào DB. Hoàn tiền ledger sẽ bật khi có bảng refund riêng." : "Truyền orderId trên route để thao tác, ví dụ /dialog/void-refund?orderId=..."}

+
+ {contextOrder ? ( + <> + + + + ) :
Thiếu orderId nên không ghi thay đổi.
} + {contextOrderIsPaid ?
Đơn đã thanh toán cần refund ledger riêng, không hủy trực tiếp.
: null} + {workflowMessage ?
{workflowMessage}
: null} +
+ ) : null} + {slug === "table-transfer" ? ( +
+
+ BÀN / PHÒNG +

{contextTable ? `Cập nhật ${vertical === "karaoke" ? "phòng" : "bàn"} ${contextTable.tableNumber}` : "Chọn bàn/phòng"}

+

Chuyển order giữa bàn/phòng chưa có service riêng. Màn này chỉ cập nhật trạng thái bàn/phòng thật, không ghi thành công giả.

+
+ {contextTable ? ( + <> + + + + ) :
Thiếu tableId/roomId nên không ghi thay đổi.
} + {workflowMessage ?
{workflowMessage}
: null} +
+ ) : null} + {slug === "product-search" || slug === "stock-check" ? ( +
+
+ {slug === "stock-check" ? "TỒN KHO" : "CATALOG"} +

{slug === "stock-check" ? "Kiểm tồn kho" : "Tra SKU/giá"}

+

Dữ liệu đọc trực tiếp từ MVP DB. Stock mutation vẫn yêu cầu quyền admin.

+
+ + Mở quản trị +
+ ) : null} + {slug === "stock-in" || slug === "stock-out" ? ( +
+
+ TỒN KHO +

{slug === "stock-in" ? "Nhập kho" : "Xuất kho"}

+

Workflow này gọi BFF inventory thật và ghi transaction trong MVP DB.

+
+ + + + + {workflowMessage ?
{workflowMessage}
: null} +
+ ) : null} + {slug === "stock-transfer" ? ( +
+
+ CHUYỂN KHO +

Chưa có mô hình chuyển kho

+

TPOS gốc có route chuyển kho riêng. MVP Next cần bảng kho nguồn/đích và transaction transfer trước khi cho ghi nhận.

+
+
Không ghi nhận thành công giả.
+
+ ) : null} + {["order-edit", "split-bill", "cash-drawer", "shift"].includes(slug) ? ( +
+
+ THAO TÁC THẬT +

{workflow?.title ?? slug}

+

+ {slug === "order-edit" || slug === "split-bill" + ? "Chưa có service chỉnh sửa/tách hóa đơn persisted nên workflow không ghi fake success." + : slug === "shift" + ? "Check-in/check-out dùng staff attendance thật. Mở/đóng ca bán và cash drawer cần ledger ca riêng." + : "Cash drawer cần device registry và drawer event table trước khi cho mở két."} +

+
+ {slug === "order-edit" && contextOrder ? Xem lịch sử đơn : null} + {slug === "shift" ? ( +
+ + +
+ ) : null} + {slug === "shift" && workflowMessage ?
{workflowMessage}
:
Chưa cấu hình backend cho action còn lại. Không ghi nhận thành công giả.
} +
+ ) : null} + {slug === "quick-sale" ? ( +
+
+ BÁN NHANH +

Bán nhanh qua POS chính

+

Luồng bán nhanh dùng cart/POS chính để ghi đơn thật, payment thật theo cash hoặc deferred order.

+
+ Mở màn bán hàng +
+ ) : null}
- {workflowRows.slice(0, 10).map((row) => ( + {visibleWorkflowRows.slice(0, 10).map((row) => (
{row.title} {row.meta} {row.value}
))} - {workflowRows.length === 0 ?
Chưa có dữ liệu vận hành cho workflow này
: null} + {visibleWorkflowRows.length === 0 ?
Chưa có dữ liệu vận hành cho workflow này
: null}
@@ -923,8 +1471,8 @@ const workflowAliases: Partial = { "gift-card-payment": "gift-card", "partial-payment": "partial", "payment-pending": "pending", - "payment-success": "success" + "payment-success": "success", + receipt: "receipt", + tip: "tip" }; const dialogWorkflowRoutes: Record = { @@ -959,7 +1509,9 @@ const dialogWorkflowRoutes: Record = { "table-transfer": "table-transfer", "split-bill": "split-bill", "void-refund": "void-refund", - "stock-check": "stock-out", + "stock-in": "stock-in", + "stock-out": "stock-out", + "stock-transfer": "stock-transfer", "product-search": "price-check" }; @@ -976,13 +1528,17 @@ function normalizeWorkflowSlug(vertical: VerticalKind, slug: string) { function workflowHref(shopId: string, vertical: VerticalKind, slug: string) { const canonicalSlug = normalizeWorkflowSlug(vertical, slug); - const query = `?vertical=${vertical}`; - if (paymentWorkflowRoutes[canonicalSlug]) return `/pos/${shopId}/payment/${paymentWorkflowRoutes[canonicalSlug]}${query}`; - if (dialogWorkflowRoutes[canonicalSlug]) return `/pos/${shopId}/dialog/${dialogWorkflowRoutes[canonicalSlug]}${query}`; - if (operationWorkflowRoutes[canonicalSlug]) return `/pos/${shopId}/operations/${operationWorkflowRoutes[canonicalSlug]}${query}`; + const verticalQuery = `?vertical=${encodeURIComponent(vertical)}`; + if (paymentWorkflowRoutes[canonicalSlug]) return `/pos/${shopId}/payment/${paymentWorkflowRoutes[canonicalSlug]}${verticalQuery}`; + if (dialogWorkflowRoutes[canonicalSlug]) return `/pos/${shopId}/dialog/${dialogWorkflowRoutes[canonicalSlug]}${verticalQuery}`; + if (operationWorkflowRoutes[canonicalSlug]) return `/pos/${shopId}/operations/${operationWorkflowRoutes[canonicalSlug]}${verticalQuery}`; return `/pos/${shopId}/${vertical}/${canonicalSlug}`; } +function paymentChoiceHref(shopId: string, vertical: VerticalKind, route: string, orderId: string) { + return `/pos/${shopId}/payment/${route}/${encodeURIComponent(orderId)}?vertical=${encodeURIComponent(vertical)}`; +} + function paymentMethodFromSlug(slug: string) { if (slug.includes("card")) return "card"; if (slug.includes("qr")) return "qr"; @@ -991,9 +1547,31 @@ function paymentMethodFromSlug(slug: string) { return "cash"; } +function paymentMethodLabel(method?: string | null) { + const normalized = String(method ?? "").toLowerCase(); + if (normalized === "cash") return "Tiền mặt"; + if (normalized === "customer_order") return "QR khách hàng"; + if (normalized === "kitchen_order") return "Bếp"; + if (normalized === "room_fnb") return "Phòng karaoke"; + if (normalized === "gift_card") return "Thẻ quà tặng"; + if (normalized === "card") return "Thẻ"; + if (normalized === "qr") return "QR"; + if (normalized === "transfer" || normalized === "bank_transfer") return "Chuyển khoản"; + if (normalized === "wallet") return "Ví"; + if (!normalized) return "Chưa thanh toán"; + return method ?? "Khác"; +} + +function isPaidOrCompleted(order?: OrderSummary | null) { + if (!order) return false; + return order.statusId === 3 || order.statusId === 5 || /paid|complete|đã thanh toán|hoàn tất/i.test(order.status); +} + function workflowDataRows(slug: string, data: { orders: OrderSummary[]; tables: TableInfo[]; + products: Product[]; + inventory: InventoryItem[]; kitchenTickets: KitchenTicket[]; baristaQueue: BaristaQueueItem[]; }) { @@ -1021,6 +1599,35 @@ function workflowDataRows(slug: string, data: { value: table.status })); } + if (slug === "stock-check" || slug === "stock-in" || slug === "stock-out" || slug === "stock-transfer") { + return data.inventory.map((item) => ({ + id: item.id, + title: item.name ?? item.productName ?? "Tồn kho", + meta: `${item.availableQuantity} ${item.unit} khả dụng · đặt lại ${item.reorderLevel}`, + value: item.quantity <= item.reorderLevel ? "Sắp hết" : "OK" + })); + } + if (slug === "product-search") { + return data.products.map((product) => ({ + id: product.id, + title: product.name, + meta: product.sku ?? product.barcode ?? product.categoryName ?? "Catalog", + value: currency.format(product.price) + })); + } + if (slug === "cash-drawer" || slug === "shift") { + return []; + } + if (slug === "pending-orders") { + return data.orders + .filter((order) => !/paid|cancel|hủy/i.test(order.status) && order.statusId !== 3) + .map((order) => ({ + id: order.id, + title: order.tableNumber ? `Bàn/phòng ${order.tableNumber}` : order.id.slice(0, 8).toUpperCase(), + meta: `${order.itemCount} món · ${order.status}`, + value: currency.format(order.totalAmount) + })); + } return data.orders.map((order) => ({ id: order.id, title: order.tableNumber ? `Bàn/phòng ${order.tableNumber}` : order.id.slice(0, 8).toUpperCase(), diff --git a/microservices/apps/tpos-mvp-next/src/components/TposPublicLanding.tsx b/microservices/apps/tpos-mvp-next/src/components/TposPublicLanding.tsx index 87792e4c..c6f48e2e 100644 --- a/microservices/apps/tpos-mvp-next/src/components/TposPublicLanding.tsx +++ b/microservices/apps/tpos-mvp-next/src/components/TposPublicLanding.tsx @@ -17,11 +17,11 @@ import { } from "lucide-react"; const verticals = [ - { label: "Cafe", icon: Coffee }, - { label: "Nhà hàng & F&B", icon: UtensilsCrossed }, - { label: "Karaoke", icon: Mic }, - { label: "TMV/Spa", icon: Sparkles }, - { label: "Bán lẻ", icon: ShoppingBag } + { label: "Cafe", desc: "Order nhanh, pha chế, ca bán", icon: Coffee }, + { label: "Nhà hàng & F&B", desc: "Bàn, bếp, thanh toán tách/gộp", icon: UtensilsCrossed }, + { label: "Karaoke", desc: "Phòng, giờ hát, dịch vụ đi kèm", icon: Mic }, + { label: "TMV/Spa", desc: "Lịch hẹn, liệu trình, khách hàng", icon: Sparkles }, + { label: "Bán lẻ", desc: "Sản phẩm, tồn kho, khách thân thiết", icon: ShoppingBag } ]; const features = [ @@ -42,37 +42,46 @@ export function TposPublicLanding({ variant = "home" }: { variant?: "home" | "pr return (
- +
-
+
+ Chọn ngành hàng + Vào portal +
- {verticals.map(({ label, icon: Icon }) => ( + {verticals.map(({ label, desc, icon: Icon }) => ( {label} +

{desc}

))}
+ {isProject ? : } +
+ ); +} + +function ProjectSections() { + return ( + <>
TPOS Modules @@ -169,20 +191,34 @@ export function TposPublicLanding({ variant = "home" }: { variant?: "home" | "pr Vào admin demo
- + ); } -function PublicNav() { +function HomePortalCta() { + return ( +
+
+ + Đã có tài khoản TPOS? +
+ Mở portal đăng nhập +
+ ); +} + +function PublicNav({ variant }: { variant: "home" | "project" }) { + const isProject = variant === "project"; + return (