Etiquetas que se cuelan entre tickets
Python · Un helper de etiquetado en un servicio de tickets de soporte · Lógica · dificultad 2/3 · ~8 min
A un asistente de IA le pidieron helpers de etiquetado para un servicio de tickets de soporte:
Escribe
add_tags(new_tags, existing), que devuelva las etiquetas existentes más las nuevas, normalizadas (en minúsculas, sin espacios en los extremos, con guiones en lugar de los espacios internos) y sin duplicados.existingdebe ser opcional. Escribe tambiéntag_ticket(ticket, new_tags), que devuelva una copia del ticket con las nuevas etiquetas añadidas.
Los helpers los usa un handler de la API que etiqueta muchos tickets por petición, y un job nocturno que vuelve a etiquetar tickets antiguos.
Los tests visibles pasan. Revisa el código antes de que salga a producción: ¿qué pasa en la segunda llamada, y con el ticket que le pasaste?
code.py
Pruebas visibles (pasan con el código tal como está)
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"]