From f70915f08db822190b2ce912114804523ffdc943 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 9 Oct 2025 08:28:19 +0000 Subject: [PATCH 1/4] Initial plan From e2b248c5251fee4d4a8cd7317ea8d96b20b400e9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 9 Oct 2025 08:37:10 +0000 Subject: [PATCH 2/4] Add optional nickname field to orders across all layers Co-authored-by: sinedied <593151+sinedied@users.noreply.github.com> --- packages/burger-api/openapi.yaml | 11 +++++++++++ packages/burger-api/src/functions/orders-post.ts | 2 ++ packages/burger-api/src/order.ts | 1 + packages/burger-mcp/src/tools.ts | 1 + .../burger-webapp/src/components/burger-dashboard.ts | 3 ++- packages/burger-webapp/src/orders.service.ts | 1 + 6 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/burger-api/openapi.yaml b/packages/burger-api/openapi.yaml index 1c359d4..587d7ee 100644 --- a/packages/burger-api/openapi.yaml +++ b/packages/burger-api/openapi.yaml @@ -486,6 +486,10 @@ components: format: date-time description: ISO date string for when the order was ready (undefined until ready) example: '2025-04-10T15:05:00Z' + nickname: + type: string + description: Optional nickname for the order + example: 'John' totalPrice: type: number format: float @@ -520,6 +524,9 @@ components: type: string format: date-time description: ISO date string for when the order was completed (undefined until completed) + nickname: + type: string + description: Optional nickname for the order totalPrice: type: number format: float @@ -538,6 +545,10 @@ components: userId: type: string example: 'user123' + nickname: + type: string + description: Optional nickname for the order (first 8 characters will be displayed in the dashboard) + example: 'John' items: type: array description: List of burger items (maximum 50 burgers total across all items) diff --git a/packages/burger-api/src/functions/orders-post.ts b/packages/burger-api/src/functions/orders-post.ts index 41f4e0b..b96a892 100644 --- a/packages/burger-api/src/functions/orders-post.ts +++ b/packages/burger-api/src/functions/orders-post.ts @@ -10,6 +10,7 @@ interface CreateOrderRequest { quantity: number; extraToppingIds?: string[]; }>; + nickname?: string; } // Helper function for topping validation @@ -176,6 +177,7 @@ app.http('orders-post', { estimatedCompletionAt: estimatedCompletionAt.toISOString(), totalPrice, status: OrderStatus.Pending, + nickname: requestBody.nickname, completedAt: undefined, }); diff --git a/packages/burger-api/src/order.ts b/packages/burger-api/src/order.ts index 7f51d22..ac72dad 100644 --- a/packages/burger-api/src/order.ts +++ b/packages/burger-api/src/order.ts @@ -20,6 +20,7 @@ export interface Order { estimatedCompletionAt: string; // ISO date string for estimated completion time totalPrice: number; status: OrderStatus; + nickname?: string; // Optional nickname for the order readyAt?: string; // ISO date string for when the order was ready (undefined until ready) completedAt?: string; // ISO date string for when the order was completed (undefined until completed) } diff --git a/packages/burger-mcp/src/tools.ts b/packages/burger-mcp/src/tools.ts index 242886d..aea59bd 100644 --- a/packages/burger-mcp/src/tools.ts +++ b/packages/burger-mcp/src/tools.ts @@ -79,6 +79,7 @@ export const tools = [ description: 'Place a new order with burgers (requires userId)', schema: z.object({ userId: z.string().describe('ID of the user placing the order'), + nickname: z.string().optional().describe('Optional nickname for the order (first 8 characters will be displayed in the dashboard)'), items: z .array( z.object({ diff --git a/packages/burger-webapp/src/components/burger-dashboard.ts b/packages/burger-webapp/src/components/burger-dashboard.ts index 48fb9a5..abfcac3 100644 --- a/packages/burger-webapp/src/components/burger-dashboard.ts +++ b/packages/burger-webapp/src/components/burger-dashboard.ts @@ -112,6 +112,7 @@ export class BurgerDashboard extends LitElement { protected renderOrder = (order: BurgerOrder, isLeaving = false) => { const animClass = isLeaving ? 'fade-out' : ''; + const displayId = order.nickname ? order.nickname.slice(0, 8) : order.id.slice(-8); return html`