From e08442cfa4cbd7ef461848ab31cbbb2b94a4ff66 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(furniture-domain): checkpoint pending development updates --- Directory.Build.props | 4 ++-- docs/contracts/nuget-publication-baseline.md | 2 +- docs/roadmap/feature-epics.md | 18 ++++++++++++++++++ .../TableReservationDecisionRequest.cs | 7 +++++++ .../TableReservationDecisionResponse.cs | 6 ++++++ .../ITableReservationDecisionService.cs | 8 ++++++++ .../TableReservationDecisionService.cs | 16 ++++++++++++++++ 7 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 docs/roadmap/feature-epics.md create mode 100644 src/Furniture.Domain/Contracts/TableReservationDecisionRequest.cs create mode 100644 src/Furniture.Domain/Contracts/TableReservationDecisionResponse.cs create mode 100644 src/Furniture.Domain/Decisions/ITableReservationDecisionService.cs create mode 100644 src/Furniture.Domain/Decisions/TableReservationDecisionService.cs diff --git a/Directory.Build.props b/Directory.Build.props index c310aa1..e5bd7d3 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -3,8 +3,8 @@ AgileWebs AgileWebs git - http://192.168.10.100:3000/AgileWebs/furniture-domain - http://192.168.10.100:3000/AgileWebs/furniture-domain + https://gitea.dream-views.com/AgileWebs/furniture-domain + https://gitea.dream-views.com/AgileWebs/furniture-domain false diff --git a/docs/contracts/nuget-publication-baseline.md b/docs/contracts/nuget-publication-baseline.md index a21571f..1fe8cb3 100644 --- a/docs/contracts/nuget-publication-baseline.md +++ b/docs/contracts/nuget-publication-baseline.md @@ -2,7 +2,7 @@ ## Feed -- Source: `http://192.168.10.100:3000/api/packages/AgileWebs/nuget/index.json` +- Source: `https://gitea.dream-views.com/api/packages/AgileWebs/nuget/index.json` - Authentication: Gitea login + token - HTTP requirement: `allowInsecureConnections="true"` in `nuget.config` diff --git a/docs/roadmap/feature-epics.md b/docs/roadmap/feature-epics.md new file mode 100644 index 0000000..76426bf --- /dev/null +++ b/docs/roadmap/feature-epics.md @@ -0,0 +1,18 @@ +# Feature Epics + +## Repository +furniture-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/Furniture.Domain/Contracts/TableReservationDecisionRequest.cs b/src/Furniture.Domain/Contracts/TableReservationDecisionRequest.cs new file mode 100644 index 0000000..5c2f97b --- /dev/null +++ b/src/Furniture.Domain/Contracts/TableReservationDecisionRequest.cs @@ -0,0 +1,7 @@ +namespace Furniture.Domain.Contracts; + +public sealed record TableReservationDecisionRequest( + string TableId, + DateTime RequestedAtUtc, + int PartySize, + bool IsWalkIn); diff --git a/src/Furniture.Domain/Contracts/TableReservationDecisionResponse.cs b/src/Furniture.Domain/Contracts/TableReservationDecisionResponse.cs new file mode 100644 index 0000000..5ace7c6 --- /dev/null +++ b/src/Furniture.Domain/Contracts/TableReservationDecisionResponse.cs @@ -0,0 +1,6 @@ +namespace Furniture.Domain.Contracts; + +public sealed record TableReservationDecisionResponse( + string TableId, + bool Allowed, + string Explanation); diff --git a/src/Furniture.Domain/Decisions/ITableReservationDecisionService.cs b/src/Furniture.Domain/Decisions/ITableReservationDecisionService.cs new file mode 100644 index 0000000..1a32a7f --- /dev/null +++ b/src/Furniture.Domain/Decisions/ITableReservationDecisionService.cs @@ -0,0 +1,8 @@ +using Furniture.Domain.Contracts; + +namespace Furniture.Domain.Decisions; + +public interface ITableReservationDecisionService +{ + TableReservationDecisionResponse Evaluate(TableReservationDecisionRequest request); +} diff --git a/src/Furniture.Domain/Decisions/TableReservationDecisionService.cs b/src/Furniture.Domain/Decisions/TableReservationDecisionService.cs new file mode 100644 index 0000000..e882452 --- /dev/null +++ b/src/Furniture.Domain/Decisions/TableReservationDecisionService.cs @@ -0,0 +1,16 @@ +using Furniture.Domain.Contracts; + +namespace Furniture.Domain.Decisions; + +public sealed class TableReservationDecisionService : ITableReservationDecisionService +{ + public TableReservationDecisionResponse Evaluate(TableReservationDecisionRequest request) + { + var allowed = request.PartySize > 0 && request.PartySize <= 12; + var reason = allowed + ? "Reservation request allowed by furniture-domain constraints." + : "Party size is outside supported furniture-domain bounds."; + + return new TableReservationDecisionResponse(request.TableId, allowed, reason); + } +}