Снимок заказа, который меняется
При оплате сохраняется снимок заказа OrderSnapshot — для чека и споров с покупателем.
Класс заморожен (frozen=True), но позиции в снимке всё равно меняются, когда покупатель
продолжает наполнять корзину. Через снимок их тоже можно поменять: snapshot.items.append(...).
Исправьте make_snapshot(order_id, cart_items) и аннотацию поля так, чтобы снимок
не зависел от корзины и не позволял менять позиции.
Подсказка 1 из 2
Попробуйте snapshot.items.append((9, 9)) — сработает ли frozen?
Подсказка 2 из 2
Храните позиции в кортеже: tuple(cart_items).