commit 5af92a6e358724f456ab0fcd600ec33635b9d005
parent c45dd485c53954264f01f02f4fcd11d20f4fe863
Author: triesap <tyson@radroots.org>
Date: Mon, 21 Sep 2026 13:50:34 +0000
core: discover buyer demand lines
Diffstat:
2 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/src/hyf_application/buyer_lines.mojo b/src/hyf_application/buyer_lines.mojo
@@ -0,0 +1,25 @@
+from std.collections import List
+
+
+@fieldwise_init
+struct DemandLineDraft(Copyable, Movable):
+ var line_id: String
+ var product_phrase: String
+ var quantity_state: String
+
+
+def discover_demand_lines(product_phrases: List[String]) raises -> List[DemandLineDraft]:
+ var lines = List[DemandLineDraft]()
+ var index = 1
+ for phrase in product_phrases:
+ if String(phrase).strip().byte_length() == 0:
+ continue
+ lines.append(
+ DemandLineDraft(
+ line_id="line-" + String(index),
+ product_phrase=String(phrase),
+ quantity_state="unknown",
+ )
+ )
+ index += 1
+ return lines^
diff --git a/tests/test_application.mojo b/tests/test_application.mojo
@@ -207,3 +207,17 @@ def test_farm_inference_failure_never_confirms_stock() raises:
assert_true(not inference_failure_confirms_stock())
with assert_raises():
_ = farm_inference_failure("")
+
+
+from hyf_application.buyer_lines import DemandLineDraft, discover_demand_lines
+
+
+def test_buyer_discovers_multiple_demand_lines() raises:
+ var phrases = List[String]()
+ phrases.append("tomatoes")
+ phrases.append("basil")
+ var lines = discover_demand_lines(phrases)
+ assert_equal(len(lines), 2)
+ assert_equal(lines[0].product_phrase, "tomatoes")
+ assert_equal(lines[1].product_phrase, "basil")
+ assert_equal(lines[0].line_id, "line-1")