Python · 26 строк
Продавец печатает этикетку и клеит на коробку перед сдачей в пункт приёма. На этикетке — ФИО и телефон покупателя, пункт выдачи и штрихкод. PDF рисуется 1–2 секунды, поэтому готовые файлы кэшируются на диске.
Форматы: a6, a4 и thermal58 для термопринтера. Покупатель может сменить пункт выдачи, пока посылку не сдали. Отметьте строки с ошибками.
В работе: Кнопка «Распечатать этикетку» в карточке заказа у продавца.
Как проверяем
Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Ответ один на подход: после него показываем разбор.
Источник: наша задача на данных Авито: отправления Авито Доставки. Условие пересказано своими словами.
Давали на собеседовании?
import osfrom flask import Flask, abort, request, send_filefrom flask_login import login_requiredfrom .labels import render_label_pdffrom .models import Shipmentapp = Flask(__name__)LABELS_DIR = "/var/avito/labels"@app.get("/delivery/label")@login_requireddef download_label():shipment_id = request.args.get("shipment_id")fmt = request.args.get("format", "a6")shipment = Shipment.query.get(shipment_id)if shipment.status == "cancelled":abort(410)path = os.path.join(LABELS_DIR, f"{shipment_id}_{fmt}.pdf")if not os.path.exists(path):pdf = render_label_pdf(shipment, size=fmt)f = open(path, "wb")f.write(pdf)return send_file(path, mimetype="application/pdf")