hyf

Context-aware query service for Radroots
git clone https://radroots.dev/git/hyf.git
Log | Files | Refs | README | LICENSE

commit ec1d857aae82dba1d3964e8736d488202bbf3d1f
parent 980f239afbc2cc2986b7d391042ce5c6233e209d
Author: triesap <tyson@radroots.org>
Date:   Mon, 21 Sep 2026 13:48:42 +0000

core: interpret product-specific supply status

Diffstat:
Asrc/hyf_application/farm_status.mojo | 39+++++++++++++++++++++++++++++++++++++++
Mtests/test_application.mojo | 22++++++++++++++++++++++
2 files changed, 61 insertions(+), 0 deletions(-)

diff --git a/src/hyf_application/farm_status.mojo b/src/hyf_application/farm_status.mojo @@ -0,0 +1,39 @@ +from std.collections import List + + +@fieldwise_init +struct ProductStatus(Copyable, Movable): + var product_phrase: String + var status: String + var review_required: Bool + + +def interpret_product_statuses( + products: List[String], evaluator_status: String +) raises -> List[ProductStatus]: + var allowed = ["offered", "forecast", "unavailable", "correction", "unclear"] + var status = String(evaluator_status) + var known = False + for candidate in allowed: + if candidate == status: + known = True + if not known: + status = "unclear" + var results = List[ProductStatus]() + for product in products: + results.append( + ProductStatus( + product_phrase=String(product), + status=String(status), + review_required=True, + ) + ) + return results^ + + +def status_is_confirmed_inventory(status: String) -> Bool: + return False + + +def status_is_forecast(status: String) -> Bool: + return status == "forecast" diff --git a/tests/test_application.mojo b/tests/test_application.mojo @@ -40,3 +40,25 @@ def test_interpretation_source_context_validation() raises: _ = interpretation_source("", "r1", "x", "t", "z", "a", "f") with assert_raises(): _ = interpretation_source("s", "r1", "x", "t", "", "a", "f") + + +from hyf_application.farm_status import ( + interpret_product_statuses, + status_is_confirmed_inventory, + status_is_forecast, +) + + +def test_product_specific_supply_status_per_crop() raises: + var products = List[String]() + products.append("roma tomatoes") + products.append("basil") + var statuses = interpret_product_statuses(products, "offered") + assert_equal(len(statuses), 2) + assert_equal(statuses[0].product_phrase, "roma tomatoes") + assert_equal(statuses[1].product_phrase, "basil") + assert_true(not status_is_confirmed_inventory(statuses[0].status)) + var forecast = interpret_product_statuses(products, "forecast") + assert_true(status_is_forecast(forecast[0].status)) + var unknown = interpret_product_statuses(products, "probably") + assert_equal(unknown[0].status, "unclear")