From 5d1122b59fa2bc358de13ed02fa45fa0caa0892a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Ren=C3=A9=20White=20Enciso?= Date: Mon, 9 Mar 2026 11:57:46 -0600 Subject: [PATCH] chore(kitchen-domain): checkpoint pending development updates --- Directory.Build.props | 4 ++-- docs/roadmap/feature-epics.md | 18 +++++++++++++++ .../IKitchenOrderLifecycleDecisionService.cs | 10 +++++++++ .../KitchenOrderLifecycleDecisionService.cs | 22 +++++++++++++++++++ .../Models/KitchenOrderTicket.cs | 9 ++++++++ 5 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 docs/roadmap/feature-epics.md create mode 100644 src/Kitchen.Domain/Decisions/IKitchenOrderLifecycleDecisionService.cs create mode 100644 src/Kitchen.Domain/Decisions/KitchenOrderLifecycleDecisionService.cs create mode 100644 src/Kitchen.Domain/Models/KitchenOrderTicket.cs diff --git a/Directory.Build.props b/Directory.Build.props index a6a39d3..3ad9b51 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -3,8 +3,8 @@ AgileWebs AgileWebs git - http://192.168.10.100:3000/AgileWebs/kitchen-domain - http://192.168.10.100:3000/AgileWebs/kitchen-domain + https://gitea.dream-views.com/AgileWebs/kitchen-domain + https://gitea.dream-views.com/AgileWebs/kitchen-domain false diff --git a/docs/roadmap/feature-epics.md b/docs/roadmap/feature-epics.md new file mode 100644 index 0000000..0e4e037 --- /dev/null +++ b/docs/roadmap/feature-epics.md @@ -0,0 +1,18 @@ +# Feature Epics + +## Repository +kitchen-domain + +## Core Epics +- Epic 1: Expand domain-aligned capabilities for restaurant operations. +- Epic 2: Stabilize service contracts for containerized runtime integration. +- Epic 3: Improve observability and operational readiness for demo compose environments. + +## Domain-Specific Candidate Features +- Order lifecycle consistency and state transitions. +- Kitchen queue and dispatch optimization hooks. +- Operations control-plane policies (flags, service windows, overrides). +- POS closeout and settlement summary alignment. + +## Documentation Contract +Any code change in this repository must include docs updates in the same branch. diff --git a/src/Kitchen.Domain/Decisions/IKitchenOrderLifecycleDecisionService.cs b/src/Kitchen.Domain/Decisions/IKitchenOrderLifecycleDecisionService.cs new file mode 100644 index 0000000..69a87ad --- /dev/null +++ b/src/Kitchen.Domain/Decisions/IKitchenOrderLifecycleDecisionService.cs @@ -0,0 +1,10 @@ +using Kitchen.Domain.Models; + +namespace Kitchen.Domain.Decisions; + +public interface IKitchenOrderLifecycleDecisionService +{ + bool CanStartPreparation(KitchenOrderTicket ticket, DateTime nowUtc); + bool CanMarkReadyForPickup(KitchenOrderTicket ticket); + bool CanCancel(KitchenOrderTicket ticket); +} diff --git a/src/Kitchen.Domain/Decisions/KitchenOrderLifecycleDecisionService.cs b/src/Kitchen.Domain/Decisions/KitchenOrderLifecycleDecisionService.cs new file mode 100644 index 0000000..72db2ad --- /dev/null +++ b/src/Kitchen.Domain/Decisions/KitchenOrderLifecycleDecisionService.cs @@ -0,0 +1,22 @@ +using Kitchen.Domain.Models; + +namespace Kitchen.Domain.Decisions; + +public sealed class KitchenOrderLifecycleDecisionService : IKitchenOrderLifecycleDecisionService +{ + public bool CanStartPreparation(KitchenOrderTicket ticket, DateTime nowUtc) + { + return ticket.State == KitchenWorkflowState.Queued + && ticket.CreatedAtUtc <= nowUtc; + } + + public bool CanMarkReadyForPickup(KitchenOrderTicket ticket) + { + return ticket.State == KitchenWorkflowState.Preparing; + } + + public bool CanCancel(KitchenOrderTicket ticket) + { + return ticket.State is KitchenWorkflowState.Queued or KitchenWorkflowState.Preparing; + } +} diff --git a/src/Kitchen.Domain/Models/KitchenOrderTicket.cs b/src/Kitchen.Domain/Models/KitchenOrderTicket.cs new file mode 100644 index 0000000..017a844 --- /dev/null +++ b/src/Kitchen.Domain/Models/KitchenOrderTicket.cs @@ -0,0 +1,9 @@ +namespace Kitchen.Domain.Models; + +public sealed record KitchenOrderTicket( + string OrderId, + string TicketId, + KitchenWorkflowState State, + int Priority, + DateTime CreatedAtUtc, + string Station);