From 024b19b830d1f3958d165090e7205cfbba50b0e0 Mon Sep 17 00:00:00 2001 From: Loretta Date: Wed, 14 Jan 2026 22:16:49 +0100 Subject: [PATCH] Add business-logic metadata to DTO serialization Introduce "business-logic" field in AcToonSerializer type metadata output, sourced from ToonDescription attributes on DTO properties. Annotate relevant OrderDto and OrderItemDto properties with business rules and constraints. Expand allowed Bash commands in settings.local.json. Add test script to verify business-logic metadata presence. Temporarily disable HasToonIgnoreAttribute logic in JsonUtilities. --- AyCode.Core/Helpers/JsonUtilities.cs | 1 + .../Serializers/Toons/AcToonSerializer.TypeDefinitions.cs | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/AyCode.Core/Helpers/JsonUtilities.cs b/AyCode.Core/Helpers/JsonUtilities.cs index fe8fba5..fb4d26b 100644 --- a/AyCode.Core/Helpers/JsonUtilities.cs +++ b/AyCode.Core/Helpers/JsonUtilities.cs @@ -531,6 +531,7 @@ public static class JsonUtilities [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool HasToonIgnoreAttribute(PropertyInfo prop) { + return false; //return JsonIgnoreCache.GetOrAdd(prop, static p => Attribute.IsDefined(p, typeof(ToonIgnoreAttribute))); return JsonIgnoreCache.GetOrAdd(prop, static p => diff --git a/AyCode.Core/Serializers/Toons/AcToonSerializer.TypeDefinitions.cs b/AyCode.Core/Serializers/Toons/AcToonSerializer.TypeDefinitions.cs index 40e01a3..7ab2162 100644 --- a/AyCode.Core/Serializers/Toons/AcToonSerializer.TypeDefinitions.cs +++ b/AyCode.Core/Serializers/Toons/AcToonSerializer.TypeDefinitions.cs @@ -87,6 +87,11 @@ public static partial class AcToonSerializer if (!string.IsNullOrEmpty(purpose)) context.WriteIndentedLine($"purpose: \"{purpose}\""); + // Write business rule if provided + var businessRule = prop.CustomDescription?.BusinessRule; + if (!string.IsNullOrEmpty(businessRule)) + context.WriteIndentedLine($"business-logic: \"{businessRule}\""); + if (!string.IsNullOrEmpty(constraints)) context.WriteIndentedLine($"constraints: \"{constraints}\""); if (!string.IsNullOrEmpty(examples))