Hvorfor fik kunden ikke rabatten? Få svaret med reglen i koden.

Priser, rabatter og regler ligger ofte i views.py eller en service, som kun udviklerne kan læse. Adea læser den og forklarer trin for trin, hvad der skete på en bestemt ordre.

Hvorfor fik ordre 10432 ikke mængderabat?

  1. Finder ordre 10432
  2. Læser shop/pricing.py
  3. Sammenholder reglen med ordrelinjerne
Et spørgsmål til et Django-system

Hvorfor fik ordre 10432 ikke mængderabat?

Adeas svar

Ordren havde 9 varer, og mængderabatten starter ved 10. Rabatten gælder desuden kun varer i kategorien Værktøj, og 2 af varerne var i kategorien Tilbehør.

Her kommer tallet fra

Koden, Adea læste shop/pricing.py:112

def volume_discount(lines):
    eligible = [l for l in lines
                if l.product.category == 'tools']
    if sum(l.qty for l in eligible) >= 10:
        return Decimal('0.08')

Opslaget, Adea lavede

SELECT l.qty, c.name FROM shop_orderline l
JOIN shop_product p ON p.id = l.product_id
JOIN shop_category c ON c.id = p.category_id
WHERE l.order_id = 10432

Det får du

Forklarer, ikke bare tæller

Adea viser forløbet: hvilke linjer der talte med, hvilken regel der blev ramt, og hvorfor grænsen ikke blev nået. Support kan svare kunden med det samme.

Forstår jeres ORM

Adea følger relationer og managers i Django-modellerne og finder de rigtige tabeller, også når navnene ikke ligner dem, I bruger i daglig tale.

Reglen kan rettes

Hvis Adea har forstået en regel forkert, retter en udvikler den. Rettelsen gælder alle fremtidige svar.

Sådan forbinder du en Django-app

Giv læseadgang til repoet og til en Postgres-læsebruger. Adea finder modellerne selv.

CREATE ROLE adea_laese LOGIN PASSWORD '…';
GRANT SELECT ON ALL TABLES IN SCHEMA public TO adea_laese;
Læs vejledningen

Spørgsmål om Django

Virker det med Django REST framework og Celery?

Adea læser den kode, der bestemmer reglerne, uanset om den ligger i views, serializers, services eller tasks.

Kan support se kundens data?

Kun de tabeller og kolonner, du åbner for deres rolle.

Hvad med Django admin?

Det er ikke nødvendigt, men du kan lade Adea linke til posten i admin i svaret.

Hvad vil du gerne vide?