Cette page a été traduite par une machine et n'a pas encore été révisée par une personne. L'anglais est la référence ; les corrections sont les bienvenues sur GitHub. GitHub

Cookwala / SDK et scénarios / 064

Rejection reason codes, part two: PEST, SPACE, TRANSPORT, LATE, OTHER

The remaining codes cover contamination and logistics. A word the grammar does not know is kept as the code and recorded as other, so nothing is lost and nothing is invented.

Audience: kitchen operator · Objectif: Aider à éradiquer la faim · Niveau: beginner

Lire d'abord: /docs/HUMANITARIAN-PROFILE/ /humanitarian/

Étapes

  1. PEST: pests or contamination. parseSms

  2. SPACE: the receiver has no capacity. parseSms

  3. TRANSPORT: no transport. parseSms

  4. LATE: arrived late. parseSms

  5. OTHER. parseSms

  6. An unknown word becomes other, and the word itself is kept as reasonCode. parseSms

Résultat

You know all ten reason codes and how unknown words are handled. Next: scenario 065 records a distribution.

Ligne de commande

cookwala sms "HAND A7K 10 REJ 2 PEST"
cookwala sms "HAND A7K 10 REJ 2 BADWORD"

Sortie enregistrée

Statut: ok

[1] parseSms: {"ok": true, "command": "HAND", "offer": "A7K", "kgAccepted": 10.0, "kgRejected": 2.0, "reason": "pests_or_contamination", "reasonCode": "PEST", "findings": []}
[2] parseSms: {"ok": true, "command": "HAND", "offer": "A7K", "kgAccepted": 10.0, "kgRejected": 2.0, "reason": "no_capacity", "reasonCode": "SPACE", "findings": []}
[3] parseSms: {"ok": true, "command": "HAND", "offer": "A7K", "kgAccepted": 10.0, "kgRejected": 2.0, "reason": "no_transport", "reasonCode": "TRANSPORT", "findings": []}
[4] parseSms: {"ok": true, "command": "HAND", "offer": "A7K", "kgAccepted": 10.0, "kgRejected": 2.0, "reason": "arrived_late", "reasonCode": "LATE", "findings": []}
[5] parseSms: {"ok": true, "command": "HAND", "offer": "A7K", "kgAccepted": 10.0, "kgRejected": 2.0, "reason": "other", "reasonCode": "OTHER", "findings": []}
[6] parseSms: {"ok": true, "command": "HAND", "offer": "A7K", "kgAccepted": 10.0, "kgRejected": 2.0, "reason": "other", "reasonCode": "BADWORD", "findings": []}

Code

Exécuter: python scenarios/out/064-rejection-reason-codes-pest-space-transport-late-other/python.py

# Scenario 064: Rejection reason codes, part two: PEST, SPACE, TRANSPORT, LATE, OTHER
# The remaining codes cover contamination and logistics. A word the grammar does not know is kept as the code and recorded as other, so nothing is lost and nothing is invented.
# Run a hub first: python hub/cookwala_hub.py --recipes examples
import json, os
from cookwala.client import CookwalaClient, CookwalaProblem

def load(path):
    with open(path, encoding="utf-8") as f:
        return json.load(f)

def pick(obj, path):
    for part in path.replace("]", "").replace("[", ".").split("."):
        obj = obj[int(part)] if part.isdigit() else (len(obj) if part == "length" else obj.get(part))
    return obj

c = CookwalaClient(os.environ.get("COOKWALA_HUB", "http://localhost:7878"))


# Step 1: PEST: pests or contamination.
pest = c.parse_sms("HAND A7K 10 REJ 2 PEST")
assert pick(pest, "reason") == "pests_or_contamination", pick(pest, "reason")
print("ok", "reason", "=", "pests_or_contamination")

# Step 2: SPACE: the receiver has no capacity.
space = c.parse_sms("HAND A7K 10 REJ 2 SPACE")
assert pick(space, "reason") == "no_capacity", pick(space, "reason")
print("ok", "reason", "=", "no_capacity")

# Step 3: TRANSPORT: no transport.
transport = c.parse_sms("HAND A7K 10 REJ 2 TRANSPORT")
assert pick(transport, "reason") == "no_transport", pick(transport, "reason")
print("ok", "reason", "=", "no_transport")

# Step 4: LATE: arrived late.
late = c.parse_sms("HAND A7K 10 REJ 2 LATE")
assert pick(late, "reason") == "arrived_late", pick(late, "reason")
print("ok", "reason", "=", "arrived_late")

# Step 5: OTHER.
other = c.parse_sms("HAND A7K 10 REJ 2 OTHER")
assert pick(other, "reason") == "other", pick(other, "reason")
print("ok", "reason", "=", "other")
assert pick(other, "reasonCode") == "OTHER", pick(other, "reasonCode")
print("ok", "reasonCode", "=", "OTHER")

# Step 6: An unknown word becomes other, and the word itself is kept as reasonCode.
unknown = c.parse_sms("HAND A7K 10 REJ 2 BADWORD")
assert pick(unknown, "reason") == "other", pick(unknown, "reason")
print("ok", "reason", "=", "other")
assert pick(unknown, "reasonCode") == "BADWORD", pick(unknown, "reasonCode")
print("ok", "reasonCode", "=", "BADWORD")

print("scenario complete")

scenarios/064-rejection-reason-codes-pest-space-transport-late-other.json

Précédent: 063 Suivant: 065