fix(skm): accept floating-point population (JSON Struct inputs)
Some checks failed
CI / Linux x86_64 (Forgejo) (push) Has been cancelled
Some checks failed
CI / Linux x86_64 (Forgejo) (push) Has been cancelled
JSON inputs arriving via google.protobuf.Struct (the gRPC submit path, HubClient.submit jsonInputs) are always floating-point, so a u64 population field rejected `180000.0` with an INVALID_ARGUMENT. Make population f64 — a count is exact in f64 up to 2^53, the SKM product is f64 anyway, and Display still renders whole numbers without a decimal. Unblocks live skm scoring from the Recl∆Im app. Signed-off-by: flemming-it <sf@flemming.it>
This commit is contained in:
parent
e518a2cc2b
commit
80f6620d42
2 changed files with 7 additions and 2 deletions
BIN
module.wasm
BIN
module.wasm
Binary file not shown.
|
|
@ -22,7 +22,12 @@ struct InputDuties {
|
|||
|
||||
#[derive(Debug, Deserialize)]
|
||||
struct InputDuty {
|
||||
population: u64,
|
||||
// f64, not u64: JSON inputs arriving via google.protobuf.Struct
|
||||
// (HubClient.submit jsonInputs) are always floating-point, so a
|
||||
// u64 field rejects `180000.0`. A population is a count, but f64
|
||||
// represents it exactly up to 2^53 and the SKM product is f64
|
||||
// anyway. Display still renders whole numbers without a decimal.
|
||||
population: f64,
|
||||
frequency: f32,
|
||||
tariff_eur_per_hour: f32,
|
||||
time_hours_per_case: f32,
|
||||
|
|
@ -59,7 +64,7 @@ pub fn invoke(_ctx: Context, inputs: Inputs) -> Result<Outputs, ModuleError> {
|
|||
if d.frequency < 0.0 || d.tariff_eur_per_hour < 0.0 || d.time_hours_per_case < 0.0 {
|
||||
return Err(ModuleError::invalid_input("negative P/F/T/h not allowed"));
|
||||
}
|
||||
let value = d.population as f64
|
||||
let value = d.population
|
||||
* d.frequency as f64
|
||||
* d.tariff_eur_per_hour as f64
|
||||
* d.time_hours_per_case as f64;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue