Tag-uri care trec de la un tichet la altul
Python · Un helper de tag-uri într-un serviciu de tichete de suport · Logică · dificultate 2/3 · ~8 min
Unui asistent AI i s-au cerut helperi de tag-uri pentru un serviciu de tichete de suport:
Scrie
add_tags(new_tags, existing), care returnează tag-urile existente plus cele noi, normalizate (litere mici, fără spații la margini, spațiile din interior transformate în cratime) și fără duplicate.existingtrebuie să fie opțional. Scrie șitag_ticket(ticket, new_tags), care returnează o copie a tichetului cu tag-urile noi adăugate.
Helperii sunt folosiți de un handler de API care pune tag-uri pe multe tichete la fiecare request și de un job de noapte care pune din nou tag-uri pe tichetele vechi.
Testele vizibile trec. Fă review codului înainte să ajungă în producție: ce se întâmplă la al doilea apel și cu tichetul pe care l-ai trimis?
code.py
Teste vizibile (trec pe codul primit)
from exercise import Ticket, add_tags, normalize_tag, tag_ticket
def test_normalizes_case_and_spaces():
assert normalize_tag(" Billing Issue ") == "billing-issue"
def test_adds_new_tags_after_the_existing_ones():
assert add_tags(["Urgent", "urgent"], ["vip"]) == ["vip", "urgent"]
def test_tagged_copy_has_old_and_new_tags():
ticket = Ticket(1, "Refund request", ["billing"])
assert tag_ticket(ticket, ["Refund"]).tags == ["billing", "refund"]